-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_test.rb
161 lines (136 loc) · 4.81 KB
/
user_test.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
require 'test_helper'
class UserTest < ActiveSupport::TestCase
fixtures :users
def test_should_create_user
assert_difference 'User.count' do
user = create_user
assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
end
end
def test_should_initialize_activation_code_upon_creation
user = create_user
user.reload
assert_not_nil user.activation_code
end
def test_should_create_and_start_in_pending_state
user = create_user
user.reload
assert user.pending?
end
def test_should_require_login
assert_no_difference 'User.count' do
u = create_user(:login => nil)
assert u.errors.on(:login)
end
end
def test_should_require_password
assert_no_difference 'User.count' do
u = create_user(:password => nil)
assert u.errors.on(:password)
end
end
def test_should_require_password_confirmation
assert_no_difference 'User.count' do
u = create_user(:password_confirmation => nil)
assert u.errors.on(:password_confirmation)
end
end
def test_should_require_email
assert_no_difference 'User.count' do
u = create_user(:email => nil)
assert u.errors.on(:email)
end
end
def test_should_reset_password
users(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password')
assert_equal users(:quentin), User.authenticate('quentin', 'new password')
end
def test_should_not_rehash_password
users(:quentin).update_attributes(:login => 'quentin2')
assert_equal users(:quentin), User.authenticate('quentin2', 'monkey')
end
def test_should_authenticate_user
assert_equal users(:quentin), User.authenticate('quentin', 'monkey')
end
def test_should_set_remember_token
users(:quentin).remember_me
assert_not_nil users(:quentin).remember_token
assert_not_nil users(:quentin).remember_token_expires_at
end
def test_should_unset_remember_token
users(:quentin).remember_me
assert_not_nil users(:quentin).remember_token
users(:quentin).forget_me
assert_nil users(:quentin).remember_token
end
def test_should_remember_me_for_one_week
before = 1.week.from_now.utc
users(:quentin).remember_me_for 1.week
after = 1.week.from_now.utc
assert_not_nil users(:quentin).remember_token
assert_not_nil users(:quentin).remember_token_expires_at
assert users(:quentin).remember_token_expires_at.between?(before, after)
end
def test_should_remember_me_until_one_week
time = 1.week.from_now.utc
users(:quentin).remember_me_until time
assert_not_nil users(:quentin).remember_token
assert_not_nil users(:quentin).remember_token_expires_at
assert_equal users(:quentin).remember_token_expires_at, time
end
def test_should_remember_me_default_two_weeks
before = 2.weeks.from_now.utc
users(:quentin).remember_me
after = 2.weeks.from_now.utc
assert_not_nil users(:quentin).remember_token
assert_not_nil users(:quentin).remember_token_expires_at
assert users(:quentin).remember_token_expires_at.between?(before, after)
end
def test_should_register_passive_user
user = create_user(:password => nil, :password_confirmation => nil)
assert user.passive?
user.update_attributes(:password => 'new password', :password_confirmation => 'new password')
user.register!
assert user.pending?
end
def test_should_suspend_user
users(:quentin).suspend!
assert users(:quentin).suspended?
end
def test_suspended_user_should_not_authenticate
users(:quentin).suspend!
assert_not_equal users(:quentin), User.authenticate('quentin', 'test')
end
def test_should_unsuspend_user_to_active_state
users(:quentin).suspend!
assert users(:quentin).suspended?
users(:quentin).unsuspend!
assert users(:quentin).active?
end
def test_should_unsuspend_user_with_nil_activation_code_and_activated_at_to_passive_state
users(:quentin).suspend!
User.update_all :activation_code => nil, :activated_at => nil
assert users(:quentin).suspended?
users(:quentin).reload.unsuspend!
assert users(:quentin).passive?
end
def test_should_unsuspend_user_with_activation_code_and_nil_activated_at_to_pending_state
users(:quentin).suspend!
User.update_all :activation_code => 'foo-bar', :activated_at => nil
assert users(:quentin).suspended?
users(:quentin).reload.unsuspend!
assert users(:quentin).pending?
end
def test_should_delete_user
assert_nil users(:quentin).deleted_at
users(:quentin).delete!
assert_not_nil users(:quentin).deleted_at
assert users(:quentin).deleted?
end
protected
def create_user(options = {})
record = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options))
record.register! if record.valid?
record
end
end