diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2012-06-11 16:58:24 -0300 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2012-06-11 18:07:30 -0300 |
commit | bd8c0b8a7ad680aae909c6453758d86b9fc66559 (patch) | |
tree | 350dfdd618e1fe82814042c7a4190178f4d20c2d /actionpack/test | |
parent | 174f36a0778dd4ed26663f22e62d6b010cf7d216 (diff) | |
download | rails-bd8c0b8a7ad680aae909c6453758d86b9fc66559.tar.gz rails-bd8c0b8a7ad680aae909c6453758d86b9fc66559.tar.bz2 rails-bd8c0b8a7ad680aae909c6453758d86b9fc66559.zip |
Return proper format on exceptions
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/show_exceptions_test.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/actionpack/test/controller/show_exceptions_test.rb b/actionpack/test/controller/show_exceptions_test.rb index 13ab19ed8f..ce7b6b0dc6 100644 --- a/actionpack/test/controller/show_exceptions_test.rb +++ b/actionpack/test/controller/show_exceptions_test.rb @@ -22,6 +22,14 @@ module ShowExceptions end end + class ShowLocalExceptionsController < ActionController::Base + use ActionDispatch::ShowExceptions, ActionDispatch::PublicExceptions.new("#{FIXTURE_LOAD_PATH}/public", true) + + def boom + raise 'boom!' + end + end + class ShowExceptionsTest < ActionDispatch::IntegrationTest test 'show error page from a remote ip' do @app = ShowExceptionsController.action(:boom) @@ -68,4 +76,39 @@ module ShowExceptions assert_match(/boom/, body) end end + + class ShowExceptionsFormatsTest < ActionDispatch::IntegrationTest + def test_render_json_exception + @app = ShowExceptionsOverridenController.action(:boom) + get "/", {}, 'HTTP_ACCEPT' => 'application/json' + assert_response :internal_server_error + assert_equal 'application/json', response.content_type.to_s + assert_equal({ :status => '500', :error => 'boom!' }.to_json, response.body) + end + + def test_render_xml_exception + @app = ShowExceptionsOverridenController.action(:boom) + get "/", {}, 'HTTP_ACCEPT' => 'application/xml' + assert_response :internal_server_error + assert_equal 'application/xml', response.content_type.to_s + assert_equal({ :status => '500', :error => 'boom!' }.to_xml, response.body) + end + + def test_render_fallback_exception + @app = ShowExceptionsOverridenController.action(:boom) + get "/", {}, 'HTTP_ACCEPT' => 'text/csv' + assert_response :internal_server_error + assert_equal 'text/html', response.content_type.to_s + end + end + + class ShowExceptionsFormatsTest < ActionDispatch::IntegrationTest + def test_render_formatted_exception_in_development + @app = ShowLocalExceptionsController.action(:boom) + get "/", {}, 'HTTP_ACCEPT' => 'application/xml' + + assert_response :internal_server_error + assert_equal 'text/html', response.content_type.to_s + end + end end |