/
user_sessions_controller_spec.rb
87 lines (73 loc) · 2.2 KB
/
user_sessions_controller_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
require File.dirname(__FILE__) + '/../spec_helper'
describe UserSessionsController do
it 'logins and redirects' do
user = User.make
post :create, :email => user.email, :password => user.password
session[:user_id].should_not be_nil
response.should be_redirect
end
it 'fails login and does not redirect' do
post :create, :email => 'quentin@example.com', :password => 'bad password'
session[:user_id].should be_nil
response.should be_success
end
it 'logs out' do
UserSession.create User.make
get :destroy
session[:user_id].should be_nil
response.should be_redirect
end
it 'remembers me' do
user = User.make
post :create, :email => user.email, :password => user.password, :remember_me => "1"
response.cookies["auth_token"].should_not be_nil
end
it 'does not remember me' do
user = User.make
post :create, :email => user.email, :password => user.password, :remember_me => "0"
response.cookies["auth_token"].should be_nil
end
it 'deletes token on logout' do
UserSession.create User.make
get :destroy
response.cookies["auth_token"].should be_blank
end
it 'logs in with cookie' do
user = User.make
user.remember_me
request.cookies["auth_token"] = cookie_for(user)
get :new
controller.send(:logged_in?).should be_true
end
it 'fails expired cookie login' do
user = User.make
user.remember_me
user.update_attribute :remember_token_expires_at, 5.minutes.ago
request.cookies["auth_token"] = cookie_for(user)
get :new
controller.send(:logged_in?).should_not be_true
end
it 'fails cookie login' do
User.make.remember_me
request.cookies["auth_token"] = auth_token('invalid_auth_token')
get :new
controller.send(:logged_in?).should_not be_true
end
def auth_token(token)
CGI::Cookie.new('name' => 'auth_token', 'value' => token)
end
def cookie_for(user)
auth_token user.remember_token
end
end
describe UserSessionsController, 'new (login)' do
before(:each) do
get :new
end
it "should set @page_title" do
assigns[:page_title].should_not be_nil
end
it "should render new template" do
response.should render_template :new
end
end