提交 5e03239d 编写于 作者: J Jeremy Kemper

Fix that JSON and XML exception responses should give the HTTP error message...

Fix that JSON and XML exception responses should give the HTTP error message for their status, by default, not the message from the underlying exception
上级 c0df1e8c
......@@ -11,7 +11,7 @@ def call(env)
status = env["PATH_INFO"][1..-1]
request = ActionDispatch::Request.new(env)
content_type = request.formats.first
body = { :status => status, :error => exception.message }
body = { :status => status, :error => Rack::Utils::HTTP_STATUS_CODES.fetch(status.to_i, Rack::Utils::HTTP_STATUS_CODES[500]) }
render(status, content_type, body)
end
......@@ -19,7 +19,7 @@ def call(env)
private
def render(status, content_type, body)
format = content_type && "to_#{content_type.to_sym}"
format = "to_#{content_type.to_sym}" if content_type
if format && body.respond_to?(format)
render_format(status, content_type, body.public_send(format))
else
......
......@@ -75,7 +75,7 @@ def test_render_json_exception
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)
assert_equal({ :status => '500', :error => 'Internal Server Error' }.to_json, response.body)
end
def test_render_xml_exception
......@@ -83,7 +83,7 @@ def test_render_xml_exception
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)
assert_equal({ :status => '500', :error => 'Internal Server Error' }.to_xml, response.body)
end
def test_render_fallback_exception
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册