Test helper was incorrectly returning failure body

The _process_unauthenticated method in test_helper was returning
the response as the body. When setting rendering the text, it was
calling to_s on the response which would render something like
this: #<ActionDispatch::Response:0x007fb9e1efea00>. This change
renders the body of the response instead of the response itself
This commit is contained in:
Jason Rush 2012-09-27 18:44:31 -06:00
parent 9e096a4113
commit b27491061e
2 changed files with 9 additions and 4 deletions

View File

@ -107,8 +107,8 @@ module Devise
env["warden.options"] = options
Warden::Manager._run_callbacks(:before_failure, env, options)
status, headers, body = Devise.warden_config[:failure_app].call(env).to_a
@controller.send :render, :status => status, :text => body,
status, headers, response = Devise.warden_config[:failure_app].call(env).to_a
@controller.send :render, :status => status, :text => response.body,
:content_type => headers["Content-Type"], :location => headers["Location"]
nil # causes process return @response
end

View File

@ -9,7 +9,7 @@ class TestHelpersTest < ActionController::TestCase
self.status = 306
end
end
test "redirects if attempting to access a page unauthenticated" do
get :index
assert_redirected_to new_user_session_path
@ -70,7 +70,7 @@ class TestHelpersTest < ActionController::TestCase
get :index
assert_redirected_to new_user_session_path
end
test "respects custom failure app" do
begin
Devise.warden_config.failure_app = CustomFailureApp
@ -81,6 +81,11 @@ class TestHelpersTest < ActionController::TestCase
end
end
test "returns the body of a failure app" do
get :index
assert_equal response.body, "<html><body>You are being <a href=\"http://test.host/users/sign_in\">redirected</a>.</body></html>"
end
test "defined Warden after_authentication callback should not be called when sign_in is called" do
begin
Warden::Manager.after_authentication do |user, auth, opts|