1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'sessions_controller'
4 # Re-raise errors caught by the controller.
5 class SessionsController; def rescue_action(e) raise e end; end
7 class SessionsControllerTest < Test::Unit::TestCase
12 @controller = SessionsController.new
13 @request = ActionController::TestRequest.new
14 @response = ActionController::TestResponse.new
17 def test_should_login_and_redirect
18 post :create, :login => 'quentin', :password => 'test'
20 assert_response :redirect
23 def test_should_fail_login_and_not_redirect
24 post :create, :login => 'quentin', :password => 'bad password'
25 assert_nil session[:user]
26 assert_response :success
29 def test_should_logout
32 assert_nil session[:user]
33 assert_response :redirect
36 def test_should_remember_me
37 post :create, :login => 'quentin', :password => 'test', :remember_me => "1"
38 assert_not_nil @response.cookies["auth_token"]
41 def test_should_not_remember_me
42 post :create, :login => 'quentin', :password => 'test', :remember_me => "0"
43 assert_nil @response.cookies["auth_token"]
46 def test_should_delete_token_on_logout
49 assert_equal @response.cookies["auth_token"], []
52 def test_should_login_with_cookie
53 users(:quentin).remember_me
54 @request.cookies["auth_token"] = cookie_for(:quentin)
56 assert @controller.send(:logged_in?)
59 def test_should_fail_expired_cookie_login
60 users(:quentin).remember_me
61 users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
62 @request.cookies["auth_token"] = cookie_for(:quentin)
64 assert !@controller.send(:logged_in?)
67 def test_should_fail_cookie_login
68 users(:quentin).remember_me
69 @request.cookies["auth_token"] = auth_token('invalid_auth_token')
71 assert !@controller.send(:logged_in?)
76 CGI::Cookie.new('name' => 'auth_token', 'value' => token)
80 auth_token users(user).remember_token