From 3adb5eac3b6d81a0943bebd8dffa25a3b63681eb Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Thu, 16 Apr 2015 15:56:07 -0300 Subject: Add ApiPublicException middleware --- actionpack/test/dispatch/show_exceptions_test.rb | 41 ++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'actionpack/test/dispatch/show_exceptions_test.rb') diff --git a/actionpack/test/dispatch/show_exceptions_test.rb b/actionpack/test/dispatch/show_exceptions_test.rb index 72eaa916bc..c70bc5f95e 100644 --- a/actionpack/test/dispatch/show_exceptions_test.rb +++ b/actionpack/test/dispatch/show_exceptions_test.rb @@ -11,7 +11,7 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest when "/bad_params" raise ActionDispatch::ParamsParser::ParseError.new("", StandardError.new) when "/method_not_allowed" - raise ActionController::MethodNotAllowed + raise ActionController::MethodNotAllowed, 'PUT' when "/unknown_http_method" raise ActionController::UnknownHttpMethod when "/not_found_original_exception" @@ -22,7 +22,8 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest end end - ProductionApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::PublicExceptions.new("#{FIXTURE_LOAD_PATH}/public")) + ProductionApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::PublicExceptions.new("#{FIXTURE_LOAD_PATH}/public")) + ProductionApiApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::ApiPublicExceptions.new("#{FIXTURE_LOAD_PATH}/public")) test "skip exceptions app if not showing exceptions" do @app = ProductionApp @@ -55,6 +56,42 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest assert_equal "", body end + test "rescue api apps with json response" do + @app = ProductionApiApp + + get "/", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } + assert_response 500 + assert_equal({ :status => '500', :error => 'puke!' }.to_json, body) + + get "/method_not_allowed", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } + assert_response 405 + assert_equal({ :status => '405', :error => 'Only PUT requests are allowed.' }.to_json, body) + + get "/unknown_http_method", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } + assert_response 405 + assert_equal({ :status => '405', :error => 'ActionController::UnknownHttpMethod' }.to_json, body) + end + + test "rescue api apps unknown content-type requests with html response" do + @app = ProductionApiApp + + get "/", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } + assert_response 500 + assert_equal "500 error fixture\n", body + + get "/bad_params", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } + assert_response 400 + assert_equal "400 error fixture\n", body + + get "/not_found", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } + assert_response 404 + assert_equal "404 error fixture\n", body + + get "/unknown_http_method", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } + assert_response 405 + assert_equal("", body) + end + test "localize rescue error page" do old_locale, I18n.locale = I18n.locale, :da -- cgit v1.2.3