Improve the specs on exceptions app.

This commit is contained in:
José Valim
2011-12-16 09:45:14 +01:00
parent 02127e6406
commit 7dd1c751f9
3 changed files with 21 additions and 3 deletions

View File

@@ -4,7 +4,12 @@ require 'active_support/deprecation'
module ActionDispatch
# This middleware rescues any exception returned by the application
# and wraps them in a format for the end user.
# and calls a rack application that will wrap it in a format for the end user.
#
# The rack application should be passed as parameter on initialization
# of ShowExceptions. Everytime there is an exception, ShowExceptions will
# store the exception in env["action_dispatch.exception"], rewrite the
# PATH_INFO to the exception status code and call the rack app.
class ShowExceptions
FAILSAFE_RESPONSE = [500, {'Content-Type' => 'text/html'},
["<html><body><h1>500 Internal Server Error</h1>" <<

View File

@@ -20,7 +20,7 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest
ProductionApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::PublicExceptions.new("#{FIXTURE_LOAD_PATH}/public"))
test 'skip diagnosis if not showing exceptions' do
test "skip exceptions app if not showing exceptions" do
@app = ProductionApp
assert_raise RuntimeError do
get "/", {}, {'action_dispatch.show_exceptions' => false}
@@ -75,4 +75,17 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest
assert_response 404
assert_match(/404 error/, body)
end
test "calls custom exceptions app" do
exceptions_app = lambda do |env|
assert_kind_of AbstractController::ActionNotFound, env["action_dispatch.exception"]
assert_equal "/404", env["PATH_INFO"]
[404, { "Content-Type" => "text/plain" }, ["YOU FAILED BRO"]]
end
@app = ActionDispatch::ShowExceptions.new(Boomer.new, exceptions_app)
get "/not_found_original_exception", {}, {'action_dispatch.show_exceptions' => true}
assert_response 404
assert_equal "YOU FAILED BRO", body
end
end

View File

@@ -48,7 +48,7 @@ module ApplicationTests
test "uses custom exceptions app" do
add_to_config <<-RUBY
config.exceptions_app = lambda do |env|
["404", { "Content-Type" => "text/plain" }, ["YOU FAILED BRO"]]
[404, { "Content-Type" => "text/plain" }, ["YOU FAILED BRO"]]
end
RUBY