I’m having trouble making my functional tests work. I’m trying to
simulate an action performed while a user is logged in, but it only
redirects me to the signin page as if no user was logged in.
Here’s my functional test:
def test_signout_with_valid_user
get :signout, {}, { :user => users(:jeff).id }
assert_redirected_to home_path
end
The first user in my users.yml fixtures file is named jeff, with an id
of 1.
Here’s my admin controller’s signout method:
before_filter :check_authentication, :except => [:signin, :show,
:reset_passwords]
def signout
session[:user] = nil
session[:intended_action] = nil
redirect_to home_path
end
Here’s my application.rb check_authentication method:
def check_authentication
unless session[:user]
session[:intended_action] = params
redirect_to signin_path
end
end
When I use the actual application, it works fine–I’m able to sign in,
sign out, everything works as expected. But when I run the functional
test, I get:
test_signout_with_valid_user(AdminControllerTest)
[test/functional/admin_control
ler_test.rb:42]:
response is not a redirection to all of the options supplied
(redirection is <{"
action"=>“signin”, “controller”=>“admin”}>), difference:
<{“action”=>“index”, “c
ontroller”=>“comics”}>
What am I doing wrong? As far as I can tell, I’m following exactly how
it’s described in Agile Web Dev v2, page 194.
Any help would be great. Thanks!
Jeff