Initial commit to the repo
[kwestie.git] / test / functional / sessions_controller_test.rb
blob25ed342b624f3d4341f8498a7f399a052dee1733
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
9   fixtures :users
11   def setup
12     @controller = SessionsController.new
13     @request    = ActionController::TestRequest.new
14     @response   = ActionController::TestResponse.new
15   end
17   def test_should_login_and_redirect
18     post :create, :login => 'quentin', :password => 'test'
19     assert session[:user]
20     assert_response :redirect
21   end
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
27   end
29   def test_should_logout
30     login_as :quentin
31     get :destroy
32     assert_nil session[:user]
33     assert_response :redirect
34   end
36   def test_should_remember_me
37     post :create, :login => 'quentin', :password => 'test', :remember_me => "1"
38     assert_not_nil @response.cookies["auth_token"]
39   end
41   def test_should_not_remember_me
42     post :create, :login => 'quentin', :password => 'test', :remember_me => "0"
43     assert_nil @response.cookies["auth_token"]
44   end
45   
46   def test_should_delete_token_on_logout
47     login_as :quentin
48     get :destroy
49     assert_equal @response.cookies["auth_token"], []
50   end
52   def test_should_login_with_cookie
53     users(:quentin).remember_me
54     @request.cookies["auth_token"] = cookie_for(:quentin)
55     get :new
56     assert @controller.send(:logged_in?)
57   end
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)
63     get :new
64     assert !@controller.send(:logged_in?)
65   end
67   def test_should_fail_cookie_login
68     users(:quentin).remember_me
69     @request.cookies["auth_token"] = auth_token('invalid_auth_token')
70     get :new
71     assert !@controller.send(:logged_in?)
72   end
74   protected
75     def auth_token(token)
76       CGI::Cookie.new('name' => 'auth_token', 'value' => token)
77     end
78     
79     def cookie_for(user)
80       auth_token users(user).remember_token
81     end
82 end