mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Improve the specs on exceptions app.
This commit is contained in:
@@ -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>" <<
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user