devise 1.1.pre4 → 1.1.rc0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +31 -2
- data/Gemfile +15 -6
- data/README.rdoc +12 -16
- data/Rakefile +2 -2
- data/TODO +2 -1
- data/app/controllers/devise/confirmations_controller.rb +1 -1
- data/app/controllers/devise/passwords_controller.rb +2 -3
- data/app/controllers/devise/registrations_controller.rb +5 -5
- data/app/controllers/devise/sessions_controller.rb +5 -27
- data/app/controllers/devise/unlocks_controller.rb +9 -1
- data/app/models/devise/mailer.rb +17 -11
- data/app/views/devise/confirmations/new.html.erb +1 -1
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/edit.html.erb +2 -2
- data/app/views/devise/registrations/new.html.erb +2 -2
- data/app/views/devise/sessions/new.html.erb +2 -2
- data/app/views/devise/shared/_links.erb +5 -5
- data/app/views/devise/unlocks/new.html.erb +1 -1
- data/config/locales/en.yml +4 -9
- data/lib/devise.rb +83 -42
- data/lib/devise/controllers/helpers.rb +6 -18
- data/lib/devise/controllers/internal_helpers.rb +11 -12
- data/lib/devise/controllers/scoped_views.rb +2 -2
- data/lib/devise/controllers/url_helpers.rb +1 -1
- data/lib/devise/failure_app.rb +56 -16
- data/lib/devise/hooks/activatable.rb +18 -6
- data/lib/devise/hooks/rememberable.rb +36 -27
- data/lib/devise/hooks/timeoutable.rb +1 -1
- data/lib/devise/hooks/trackable.rb +4 -2
- data/lib/devise/mapping.rb +19 -14
- data/lib/devise/models.rb +12 -3
- data/lib/devise/models/authenticatable.rb +19 -95
- data/lib/devise/models/confirmable.rb +14 -20
- data/lib/devise/models/database_authenticatable.rb +99 -0
- data/lib/devise/models/lockable.rb +53 -39
- data/lib/devise/models/recoverable.rb +3 -3
- data/lib/devise/models/rememberable.rb +5 -10
- data/lib/devise/models/token_authenticatable.rb +18 -25
- data/lib/devise/models/validatable.rb +14 -9
- data/lib/devise/modules.rb +7 -8
- data/lib/devise/orm/active_record.rb +1 -1
- data/lib/devise/orm/data_mapper.rb +20 -7
- data/lib/devise/orm/mongoid.rb +40 -0
- data/lib/devise/rails.rb +26 -3
- data/lib/devise/rails/routes.rb +18 -16
- data/lib/devise/rails/warden_compat.rb +2 -2
- data/lib/devise/schema.rb +45 -18
- data/lib/devise/strategies/authenticatable.rb +92 -21
- data/lib/devise/strategies/base.rb +6 -3
- data/lib/devise/strategies/database_authenticatable.rb +20 -0
- data/lib/devise/strategies/rememberable.rb +10 -6
- data/lib/devise/strategies/token_authenticatable.rb +28 -19
- data/lib/devise/test_helpers.rb +5 -1
- data/lib/devise/version.rb +1 -1
- data/lib/generators/devise/devise_generator.rb +15 -5
- data/lib/generators/devise/templates/migration.rb +2 -2
- data/lib/generators/devise_install/templates/devise.rb +37 -16
- data/lib/generators/devise_views/devise_views_generator.rb +51 -4
- data/test/controllers/helpers_test.rb +16 -8
- data/test/controllers/internal_helpers_test.rb +6 -1
- data/test/controllers/url_helpers_test.rb +10 -10
- data/test/devise_test.rb +13 -17
- data/test/encryptors_test.rb +2 -0
- data/test/failure_app_test.rb +72 -23
- data/test/integration/confirmable_test.rb +4 -4
- data/test/integration/{authenticatable_test.rb → database_authenticatable_test.rb} +35 -17
- data/test/integration/http_authenticatable_test.rb +3 -3
- data/test/integration/lockable_test.rb +28 -8
- data/test/integration/recoverable_test.rb +3 -3
- data/test/integration/registerable_test.rb +6 -4
- data/test/integration/rememberable_test.rb +11 -4
- data/test/integration/timeoutable_test.rb +4 -4
- data/test/integration/token_authenticatable_test.rb +46 -10
- data/test/integration/trackable_test.rb +2 -2
- data/test/mailers/confirmation_instructions_test.rb +5 -5
- data/test/mailers/reset_password_instructions_test.rb +5 -5
- data/test/mailers/unlock_instructions_test.rb +5 -5
- data/test/mapping_test.rb +15 -14
- data/test/models/confirmable_test.rb +9 -32
- data/test/models/{authenticatable_test.rb → database_authenticatable_test.rb} +2 -34
- data/test/models/lockable_test.rb +48 -66
- data/test/models/recoverable_test.rb +8 -8
- data/test/models/rememberable_test.rb +6 -28
- data/test/models/timeoutable_test.rb +1 -1
- data/test/models/token_authenticatable_test.rb +1 -8
- data/test/models/trackable_test.rb +1 -1
- data/test/models/validatable_test.rb +2 -2
- data/test/models_test.rb +16 -2
- data/test/orm/active_record.rb +1 -22
- data/test/orm/data_mapper.rb +1 -0
- data/test/orm/mongoid.rb +10 -0
- data/test/rails_app/app/active_record/admin.rb +1 -5
- data/test/rails_app/app/controllers/application_controller.rb +2 -0
- data/test/rails_app/app/controllers/sessions_controller.rb +1 -1
- data/test/rails_app/app/data_mapper/admin.rb +13 -0
- data/test/rails_app/app/data_mapper/user.rb +24 -0
- data/test/rails_app/app/mongoid/admin.rb +15 -0
- data/test/rails_app/app/mongoid/user.rb +21 -0
- data/test/rails_app/config/application.rb +10 -5
- data/test/rails_app/config/boot.rb +5 -1
- data/test/rails_app/config/initializers/devise.rb +1 -1
- data/test/rails_app/config/routes.rb +4 -1
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +27 -0
- data/test/rails_app/db/schema.rb +86 -0
- data/test/routes_test.rb +3 -3
- data/test/support/assertions.rb +2 -0
- data/test/support/helpers.rb +2 -0
- data/test/support/integration.rb +4 -7
- data/test/support/webrat/integrations/rails.rb +2 -1
- data/test/test_helper.rb +5 -2
- data/test/test_helpers_test.rb +4 -4
- metadata +36 -21
- data/lib/devise/models/http_authenticatable.rb +0 -19
- data/lib/devise/orm/mongo_mapper.rb +0 -49
- data/lib/devise/strategies/http_authenticatable.rb +0 -47
- data/test/models/http_authenticatable_test.rb +0 -19
- data/test/orm/mongo_mapper.rb +0 -12
- data/test/rails_app/app/mongo_mapper/admin.rb +0 -10
- data/test/rails_app/app/mongo_mapper/user.rb +0 -11
- data/test/rails_app/config/initializers/cookie_verification_secret.rb +0 -7
- data/test/rails_app/config/initializers/session_store.rb +0 -15
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'digest/sha1'
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class DatabaseAuthenticatableTest < ActiveSupport::TestCase
|
|
5
5
|
|
|
6
6
|
def encrypt_password(user, pepper=User.pepper, stretches=User.stretches, encryptor=::Devise::Encryptors::Sha1)
|
|
7
7
|
encryptor.digest('123456', stretches, user.password_salt, pepper)
|
|
@@ -98,38 +98,6 @@ class AuthenticatableTest < ActiveSupport::TestCase
|
|
|
98
98
|
assert_not user.valid_password?('654321')
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
test 'should authenticate a valid user with email and password and return it' do
|
|
102
|
-
user = create_user
|
|
103
|
-
user.confirm!
|
|
104
|
-
authenticated_user = User.authenticate(:email => user.email, :password => user.password)
|
|
105
|
-
assert_equal authenticated_user, user
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
test 'should return nil when authenticating an invalid user by email' do
|
|
109
|
-
user = create_user
|
|
110
|
-
authenticated_user = User.authenticate(:email => 'another.email@email.com', :password => user.password)
|
|
111
|
-
assert_nil authenticated_user
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
test 'should return nil when authenticating an invalid user by password' do
|
|
115
|
-
user = create_user
|
|
116
|
-
authenticated_user = User.authenticate(:email => user.email, :password => 'another_password')
|
|
117
|
-
assert_nil authenticated_user
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
test 'should use authentication keys to retrieve users' do
|
|
121
|
-
swap Devise, :authentication_keys => [:username] do
|
|
122
|
-
user = create_user
|
|
123
|
-
assert_nil User.authenticate(:email => user.email, :password => user.password)
|
|
124
|
-
assert_not_nil User.authenticate(:username => user.username, :password => user.password)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
test 'should allow overwriting find for authentication conditions' do
|
|
129
|
-
admin = Admin.create!(valid_attributes)
|
|
130
|
-
assert_not_nil Admin.authenticate(:email => admin.email, :password => admin.password)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
101
|
test 'should respond to current password' do
|
|
134
102
|
assert new_user.respond_to?(:current_password)
|
|
135
103
|
end
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class LockableTest < ActiveSupport::TestCase
|
|
4
|
-
|
|
5
4
|
def setup
|
|
6
5
|
setup_mailer
|
|
7
6
|
end
|
|
8
7
|
|
|
9
|
-
test "should
|
|
8
|
+
test "should respect maximum attempts configuration" do
|
|
10
9
|
user = create_user
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
swap Devise, :maximum_attempts => 2 do
|
|
11
|
+
3.times { user.valid_for_authentication?{ false } }
|
|
12
|
+
assert user.reload.access_locked?
|
|
13
|
+
end
|
|
15
14
|
end
|
|
16
15
|
|
|
17
|
-
test "should
|
|
16
|
+
test "should clear failed_attempts on successfull validation" do
|
|
18
17
|
user = create_user
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
user.valid_for_authentication?{ false }
|
|
19
|
+
assert_equal 1, user.reload.failed_attempts
|
|
20
|
+
user.valid_for_authentication?{ true }
|
|
21
|
+
assert_equal 0, user.reload.failed_attempts
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
test "should
|
|
24
|
+
test "should not touch failed_attempts if lock_strategy is none" do
|
|
25
25
|
user = create_user
|
|
26
|
-
swap Devise, :maximum_attempts => 2 do
|
|
27
|
-
3.times {
|
|
28
|
-
assert user.
|
|
26
|
+
swap Devise, :lock_strategy => :none, :maximum_attempts => 2 do
|
|
27
|
+
3.times { user.valid_for_authentication?{ false } }
|
|
28
|
+
assert !user.access_locked?
|
|
29
|
+
assert_equal 0, user.failed_attempts
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
32
|
|
|
32
|
-
test
|
|
33
|
+
test 'should be valid for authentication with a unlocked user' do
|
|
33
34
|
user = create_user
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
assert_equal 0, user.reload.failed_attempts
|
|
35
|
+
user.lock_access!
|
|
36
|
+
user.unlock_access!
|
|
37
|
+
assert user.valid_for_authentication?{ true }
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
test "should verify
|
|
40
|
+
test "should verify whether a user is locked or not" do
|
|
41
41
|
user = create_user
|
|
42
|
-
assert_not user.
|
|
43
|
-
user.
|
|
44
|
-
assert user.
|
|
42
|
+
assert_not user.access_locked?
|
|
43
|
+
user.lock_access!
|
|
44
|
+
assert user.access_locked?
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
test "active? should be the opposite of locked?" do
|
|
48
48
|
user = create_user
|
|
49
49
|
user.confirm!
|
|
50
50
|
assert user.active?
|
|
51
|
-
user.
|
|
51
|
+
user.lock_access!
|
|
52
52
|
assert_not user.active?
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
test "should unlock an user by cleaning locked_at, falied_attempts and unlock_token" do
|
|
56
56
|
user = create_user
|
|
57
|
-
user.
|
|
57
|
+
user.lock_access!
|
|
58
58
|
assert_not_nil user.reload.locked_at
|
|
59
59
|
assert_not_nil user.reload.unlock_token
|
|
60
60
|
|
|
61
|
-
user.
|
|
61
|
+
user.unlock_access!
|
|
62
62
|
assert_nil user.reload.locked_at
|
|
63
63
|
assert_nil user.reload.unlock_token
|
|
64
64
|
assert 0, user.reload.failed_attempts
|
|
@@ -66,12 +66,12 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
66
66
|
|
|
67
67
|
test 'should not unlock an unlocked user' do
|
|
68
68
|
user = create_user
|
|
69
|
-
assert_not user.
|
|
69
|
+
assert_not user.unlock_access!
|
|
70
70
|
assert_match "was not locked", user.errors[:email].join
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
test "new user should not be locked and should have zero failed_attempts" do
|
|
74
|
-
assert_not new_user.
|
|
74
|
+
assert_not new_user.access_locked?
|
|
75
75
|
assert_equal 0, create_user.failed_attempts
|
|
76
76
|
end
|
|
77
77
|
|
|
@@ -79,10 +79,10 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
79
79
|
swap Devise, :unlock_in => 3.hours do
|
|
80
80
|
user = new_user
|
|
81
81
|
user.locked_at = 2.hours.ago
|
|
82
|
-
assert user.
|
|
82
|
+
assert user.access_locked?
|
|
83
83
|
|
|
84
84
|
Devise.unlock_in = 1.hour
|
|
85
|
-
assert_not user.
|
|
85
|
+
assert_not user.access_locked?
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -90,32 +90,22 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
90
90
|
swap Devise, :unlock_strategy => :email do
|
|
91
91
|
user = new_user
|
|
92
92
|
user.locked_at = 2.hours.ago
|
|
93
|
-
assert user.
|
|
93
|
+
assert user.access_locked?
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
test "should set unlock_token when locking" do
|
|
98
98
|
user = create_user
|
|
99
99
|
assert_nil user.unlock_token
|
|
100
|
-
user.
|
|
100
|
+
user.lock_access!
|
|
101
101
|
assert_not_nil user.unlock_token
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
test 'should not regenerate unlock token if it already exists' do
|
|
105
|
-
user = create_user
|
|
106
|
-
user.lock!
|
|
107
|
-
3.times do
|
|
108
|
-
token = user.unlock_token
|
|
109
|
-
user.resend_unlock!
|
|
110
|
-
assert_equal token, user.unlock_token
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
|
|
114
104
|
test "should never generate the same unlock token for different users" do
|
|
115
105
|
unlock_tokens = []
|
|
116
106
|
3.times do
|
|
117
107
|
user = create_user
|
|
118
|
-
user.
|
|
108
|
+
user.lock_access!
|
|
119
109
|
token = user.unlock_token
|
|
120
110
|
assert !unlock_tokens.include?(token)
|
|
121
111
|
unlock_tokens << token
|
|
@@ -125,7 +115,7 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
125
115
|
test "should not generate unlock_token when :email is not an unlock strategy" do
|
|
126
116
|
swap Devise, :unlock_strategy => :time do
|
|
127
117
|
user = create_user
|
|
128
|
-
user.
|
|
118
|
+
user.lock_access!
|
|
129
119
|
assert_nil user.unlock_token
|
|
130
120
|
end
|
|
131
121
|
end
|
|
@@ -134,7 +124,7 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
134
124
|
swap Devise, :unlock_strategy => :email do
|
|
135
125
|
user = create_user
|
|
136
126
|
assert_email_sent do
|
|
137
|
-
user.
|
|
127
|
+
user.lock_access!
|
|
138
128
|
end
|
|
139
129
|
end
|
|
140
130
|
end
|
|
@@ -143,49 +133,41 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
143
133
|
swap Devise, :unlock_strategy => :time do
|
|
144
134
|
user = create_user
|
|
145
135
|
assert_email_not_sent do
|
|
146
|
-
user.
|
|
136
|
+
user.lock_access!
|
|
147
137
|
end
|
|
148
138
|
end
|
|
149
139
|
end
|
|
150
140
|
|
|
151
141
|
test 'should find and unlock an user automatically' do
|
|
152
142
|
user = create_user
|
|
153
|
-
user.
|
|
154
|
-
locked_user = User.
|
|
143
|
+
user.lock_access!
|
|
144
|
+
locked_user = User.unlock_access_by_token(user.unlock_token)
|
|
155
145
|
assert_equal locked_user, user
|
|
156
|
-
assert_not user.reload.
|
|
146
|
+
assert_not user.reload.access_locked?
|
|
157
147
|
end
|
|
158
148
|
|
|
159
149
|
test 'should return a new record with errors when a invalid token is given' do
|
|
160
|
-
locked_user = User.
|
|
161
|
-
|
|
150
|
+
locked_user = User.unlock_access_by_token('invalid_token')
|
|
151
|
+
assert_not locked_user.persisted?
|
|
162
152
|
assert_equal "is invalid", locked_user.errors[:unlock_token].join
|
|
163
153
|
end
|
|
164
154
|
|
|
165
155
|
test 'should return a new record with errors when a blank token is given' do
|
|
166
|
-
locked_user = User.
|
|
167
|
-
|
|
156
|
+
locked_user = User.unlock_access_by_token('')
|
|
157
|
+
assert_not locked_user.persisted?
|
|
168
158
|
assert_equal "can't be blank", locked_user.errors[:unlock_token].join
|
|
169
159
|
end
|
|
170
160
|
|
|
171
|
-
test 'should authenticate a unlocked user' do
|
|
172
|
-
user = create_user
|
|
173
|
-
user.lock!
|
|
174
|
-
user.unlock!
|
|
175
|
-
authenticated_user = User.authenticate(:email => user.email, :password => user.password)
|
|
176
|
-
assert_equal authenticated_user, user
|
|
177
|
-
end
|
|
178
|
-
|
|
179
161
|
test 'should find a user to send unlock instructions' do
|
|
180
162
|
user = create_user
|
|
181
|
-
user.
|
|
163
|
+
user.lock_access!
|
|
182
164
|
unlock_user = User.send_unlock_instructions(:email => user.email)
|
|
183
165
|
assert_equal unlock_user, user
|
|
184
166
|
end
|
|
185
167
|
|
|
186
168
|
test 'should return a new user if no email was found' do
|
|
187
169
|
unlock_user = User.send_unlock_instructions(:email => "invalid@email.com")
|
|
188
|
-
|
|
170
|
+
assert_not unlock_user.persisted?
|
|
189
171
|
end
|
|
190
172
|
|
|
191
173
|
test 'should add error to new user email if no email was found' do
|
|
@@ -195,8 +177,8 @@ class LockableTest < ActiveSupport::TestCase
|
|
|
195
177
|
|
|
196
178
|
test 'should not be able to send instructions if the user is not locked' do
|
|
197
179
|
user = create_user
|
|
198
|
-
assert_not user.
|
|
199
|
-
assert_not user.
|
|
180
|
+
assert_not user.resend_unlock_token
|
|
181
|
+
assert_not user.access_locked?
|
|
200
182
|
assert_equal 'was not locked', user.errors[:email].join
|
|
201
183
|
end
|
|
202
184
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class RecoverableTest < ActiveSupport::TestCase
|
|
4
4
|
|
|
@@ -82,7 +82,7 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
|
82
82
|
|
|
83
83
|
test 'should return a new record with errors if user was not found by e-mail' do
|
|
84
84
|
reset_password_user = User.send_reset_password_instructions(:email => "invalid@email.com")
|
|
85
|
-
|
|
85
|
+
assert_not reset_password_user.persisted?
|
|
86
86
|
assert_equal "not found", reset_password_user.errors[:email].join
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -104,19 +104,19 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
|
104
104
|
user = create_user
|
|
105
105
|
user.send :generate_reset_password_token!
|
|
106
106
|
|
|
107
|
-
reset_password_user = User.
|
|
107
|
+
reset_password_user = User.reset_password_by_token(:reset_password_token => user.reset_password_token)
|
|
108
108
|
assert_equal reset_password_user, user
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
test 'should a new record with errors if no reset_password_token is found' do
|
|
112
|
-
reset_password_user = User.
|
|
113
|
-
|
|
112
|
+
reset_password_user = User.reset_password_by_token(:reset_password_token => 'invalid_token')
|
|
113
|
+
assert_not reset_password_user.persisted?
|
|
114
114
|
assert_equal "is invalid", reset_password_user.errors[:reset_password_token].join
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
test 'should a new record with errors if reset_password_token is blank' do
|
|
118
|
-
reset_password_user = User.
|
|
119
|
-
|
|
118
|
+
reset_password_user = User.reset_password_by_token(:reset_password_token => '')
|
|
119
|
+
assert_not reset_password_user.persisted?
|
|
120
120
|
assert_match "can't be blank", reset_password_user.errors[:reset_password_token].join
|
|
121
121
|
end
|
|
122
122
|
|
|
@@ -125,7 +125,7 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
|
125
125
|
old_password = user.password
|
|
126
126
|
user.send :generate_reset_password_token!
|
|
127
127
|
|
|
128
|
-
reset_password_user = User.
|
|
128
|
+
reset_password_user = User.reset_password_by_token(
|
|
129
129
|
:reset_password_token => user.reset_password_token,
|
|
130
130
|
:password => 'new_password',
|
|
131
131
|
:password_confirmation => 'new_password'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class RememberableTest < ActiveSupport::TestCase
|
|
4
4
|
test 'should respond to remember_me attribute' do
|
|
@@ -39,47 +39,25 @@ class RememberableTest < ActiveSupport::TestCase
|
|
|
39
39
|
user.forget_me!
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
test 'valid remember token' do
|
|
43
|
-
user = create_user
|
|
44
|
-
assert_not user.valid_remember_token?(user.remember_token)
|
|
45
|
-
user.remember_me!
|
|
46
|
-
assert user.valid_remember_token?(user.remember_token)
|
|
47
|
-
user.forget_me!
|
|
48
|
-
assert_not user.valid_remember_token?(user.remember_token)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
test 'valid remember token should also verify if remember is not expired' do
|
|
52
|
-
swap Devise, :remember_for => 1.day do
|
|
53
|
-
user = create_user
|
|
54
|
-
user.remember_me!
|
|
55
|
-
user.remember_created_at = 3.days.ago
|
|
56
|
-
user.save
|
|
57
|
-
assert_not user.valid_remember_token?(user.remember_token)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
42
|
test 'serialize into cookie' do
|
|
62
43
|
user = create_user
|
|
63
44
|
user.remember_me!
|
|
64
|
-
assert_equal
|
|
45
|
+
assert_equal [user.id, user.remember_token], User.serialize_into_cookie(user)
|
|
65
46
|
end
|
|
66
47
|
|
|
67
48
|
test 'serialize from cookie' do
|
|
68
49
|
user = create_user
|
|
69
50
|
user.remember_me!
|
|
70
|
-
assert_equal user, User.serialize_from_cookie(
|
|
51
|
+
assert_equal user, User.serialize_from_cookie(user.id, user.remember_token)
|
|
71
52
|
end
|
|
72
53
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
test 'serialize should return nil if no user is found' do
|
|
76
|
-
assert_nil User.serialize_from_cookie('0::123')
|
|
77
|
-
end
|
|
54
|
+
test 'serialize should return nil if no user is found' do
|
|
55
|
+
assert_nil User.serialize_from_cookie(0, "123")
|
|
78
56
|
end
|
|
79
57
|
|
|
80
58
|
test 'remember me return nil if is a valid user with invalid token' do
|
|
81
59
|
user = create_user
|
|
82
|
-
assert_nil User.serialize_from_cookie(
|
|
60
|
+
assert_nil User.serialize_from_cookie(user.id, "123")
|
|
83
61
|
end
|
|
84
62
|
|
|
85
63
|
test 'remember for should fallback to devise remember for default configuration' do
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class TokenAuthenticatableTest < ActiveSupport::TestCase
|
|
4
4
|
|
|
@@ -25,13 +25,6 @@ class TokenAuthenticatableTest < ActiveSupport::TestCase
|
|
|
25
25
|
assert_equal previous_token, user.authentication_token
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
test 'should test for a valid authentication token' do
|
|
29
|
-
User.expects(:authentication_token).returns(VALID_AUTHENTICATION_TOKEN)
|
|
30
|
-
user = create_user
|
|
31
|
-
assert user.valid_authentication_token?(VALID_AUTHENTICATION_TOKEN)
|
|
32
|
-
assert_not user.valid_authentication_token?(VALID_AUTHENTICATION_TOKEN.reverse)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
28
|
test 'should authenticate a valid user with authentication token and return it' do
|
|
36
29
|
User.expects(:authentication_token).returns(VALID_AUTHENTICATION_TOKEN)
|
|
37
30
|
user = create_user
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ValidatableTest < ActiveSupport::TestCase
|
|
4
|
-
extend Devise::TestSilencer if [:
|
|
4
|
+
extend Devise::TestSilencer if [:mongoid, :data_mapper].include?(DEVISE_ORM)
|
|
5
5
|
|
|
6
6
|
test 'should require email to be set' do
|
|
7
7
|
user = new_user(:email => nil)
|
data/test/models_test.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class Configurable < User
|
|
4
4
|
devise :authenticatable, :confirmable, :rememberable, :timeoutable, :lockable,
|
|
@@ -23,7 +23,21 @@ class ActiveRecordTest < ActiveSupport::TestCase
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
test 'add modules cherry pick' do
|
|
26
|
-
assert_include_modules Admin, :
|
|
26
|
+
assert_include_modules Admin, :database_authenticatable, :registerable, :timeoutable, :recoverable
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test 'order of module inclusion' do
|
|
30
|
+
correct_module_order = [:database_authenticatable, :recoverable, :registerable, :timeoutable]
|
|
31
|
+
incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable, :recoverable]
|
|
32
|
+
|
|
33
|
+
assert_include_modules Admin, *incorrect_module_order
|
|
34
|
+
|
|
35
|
+
# get module constants from symbol list
|
|
36
|
+
module_constants = correct_module_order.collect { |mod| Devise::Models::const_get(mod.to_s.classify) }
|
|
37
|
+
|
|
38
|
+
# confirm that they adhere to the order in ALL
|
|
39
|
+
# get included modules, filter out the noise, and reverse the order
|
|
40
|
+
assert_equal module_constants, (Admin.included_modules & module_constants).reverse
|
|
27
41
|
end
|
|
28
42
|
|
|
29
43
|
test 'set a default value for stretches' do
|