changelog shortlog tags changeset manifest revisions annotate raw

test/functional/sessions_controller_test.rb

changeset 7: ac1024130232
author: moriq@moriq.com
date: Wed Mar 05 03:57:54 2008 +0900 (16 years ago)
permissions: -rw-r--r--
description: generate authenticated again.
mercurial import したときに db/migrate lib が消えてた。orz
1require File.dirname(__FILE__) + '/../test_helper'
2require 'sessions_controller'
3
4# Re-raise errors caught by the controller.
5class SessionsController; def rescue_action(e) raise e end; end
6
7class SessionsControllerTest < Test::Unit::TestCase
8 # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
9 # Then, you can remove it from this and the units test.
10 include AuthenticatedTestHelper
11
12 fixtures :users
13
14 def setup
15 @controller = SessionsController.new
16 @request = ActionController::TestRequest.new
17 @response = ActionController::TestResponse.new
18 end
19
20 def test_should_login_and_redirect
21 post :create, :login => 'quentin', :password => 'test'
22 assert session[:user_id]
23 assert_response :redirect
24 end
25
26 def test_should_fail_login_and_not_redirect
27 post :create, :login => 'quentin', :password => 'bad password'
28 assert_nil session[:user_id]
29 assert_response :success
30 end
31
32 def test_should_logout
33 login_as :quentin
34 get :destroy
35 assert_nil session[:user_id]
36 assert_response :redirect
37 end
38
39 def test_should_remember_me
40 post :create, :login => 'quentin', :password => 'test', :remember_me => "1"
41 assert_not_nil @response.cookies["auth_token"]
42 end
43
44 def test_should_not_remember_me
45 post :create, :login => 'quentin', :password => 'test', :remember_me => "0"
46 assert_nil @response.cookies["auth_token"]
47 end
48
49 def test_should_delete_token_on_logout
50 login_as :quentin
51 get :destroy
52 assert_equal @response.cookies["auth_token"], []
53 end
54
55 def test_should_login_with_cookie
56 users(:quentin).remember_me
57 @request.cookies["auth_token"] = cookie_for(:quentin)
58 get :new
59 assert @controller.send(:logged_in?)
60 end
61
62 def test_should_fail_expired_cookie_login
63 users(:quentin).remember_me
64 users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
65 @request.cookies["auth_token"] = cookie_for(:quentin)
66 get :new
67 assert !@controller.send(:logged_in?)
68 end
69
70 def test_should_fail_cookie_login
71 users(:quentin).remember_me
72 @request.cookies["auth_token"] = auth_token('invalid_auth_token')
73 get :new
74 assert !@controller.send(:logged_in?)
75 end
76
77 protected
78 def auth_token(token)
79 CGI::Cookie.new('name' => 'auth_token', 'value' => token)
80 end
81
82 def cookie_for(user)
83 auth_token users(user).remember_token
84 end
85end