devise 3.5.2 → 4.0.0

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.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +14 -15
  3. data/CHANGELOG.md +57 -1125
  4. data/CODE_OF_CONDUCT.md +22 -0
  5. data/CONTRIBUTING.md +2 -0
  6. data/Gemfile +3 -3
  7. data/Gemfile.lock +80 -80
  8. data/MIT-LICENSE +1 -1
  9. data/README.md +27 -18
  10. data/app/controllers/devise/confirmations_controller.rb +1 -1
  11. data/app/controllers/devise/omniauth_callbacks_controller.rb +4 -4
  12. data/app/controllers/devise/passwords_controller.rb +5 -4
  13. data/app/controllers/devise/registrations_controller.rb +5 -5
  14. data/app/controllers/devise/sessions_controller.rb +7 -7
  15. data/app/controllers/devise/unlocks_controller.rb +2 -2
  16. data/app/controllers/devise_controller.rb +20 -9
  17. data/app/mailers/devise/mailer.rb +4 -0
  18. data/app/views/devise/confirmations/new.html.erb +1 -1
  19. data/app/views/devise/mailer/password_change.html.erb +3 -0
  20. data/app/views/devise/shared/_links.html.erb +1 -1
  21. data/bin/test +13 -0
  22. data/config/locales/en.yml +2 -0
  23. data/devise.gemspec +2 -3
  24. data/gemfiles/Gemfile.rails-4.1-stable +4 -4
  25. data/gemfiles/Gemfile.rails-4.1-stable.lock +69 -71
  26. data/gemfiles/Gemfile.rails-4.2-stable +4 -4
  27. data/gemfiles/Gemfile.rails-4.2-stable.lock +81 -83
  28. data/gemfiles/{Gemfile.rails-3.2-stable → Gemfile.rails-5.0-beta} +15 -7
  29. data/gemfiles/Gemfile.rails-5.0-beta.lock +199 -0
  30. data/lib/devise/controllers/helpers.rb +20 -24
  31. data/lib/devise/controllers/rememberable.rb +8 -1
  32. data/lib/devise/encryptor.rb +4 -4
  33. data/lib/devise/failure_app.rb +33 -12
  34. data/lib/devise/hooks/timeoutable.rb +5 -3
  35. data/lib/devise/mailers/helpers.rb +1 -1
  36. data/lib/devise/models/authenticatable.rb +5 -1
  37. data/lib/devise/models/confirmable.rb +6 -6
  38. data/lib/devise/models/database_authenticatable.rb +20 -7
  39. data/lib/devise/models/lockable.rb +1 -1
  40. data/lib/devise/models/recoverable.rb +3 -7
  41. data/lib/devise/models/rememberable.rb +38 -24
  42. data/lib/devise/models/timeoutable.rb +0 -6
  43. data/lib/devise/models.rb +1 -1
  44. data/lib/devise/omniauth/url_helpers.rb +62 -4
  45. data/lib/devise/parameter_sanitizer.rb +176 -61
  46. data/lib/devise/rails/routes.rb +54 -31
  47. data/lib/devise/rails/warden_compat.rb +1 -10
  48. data/lib/devise/rails.rb +1 -10
  49. data/lib/devise/strategies/authenticatable.rb +1 -1
  50. data/lib/devise/strategies/database_authenticatable.rb +3 -3
  51. data/lib/devise/strategies/rememberable.rb +3 -6
  52. data/lib/devise/test_helpers.rb +10 -5
  53. data/lib/devise/token_generator.rb +1 -41
  54. data/lib/devise/version.rb +1 -1
  55. data/lib/devise.rb +115 -20
  56. data/lib/generators/active_record/devise_generator.rb +11 -5
  57. data/lib/generators/active_record/templates/migration.rb +2 -2
  58. data/lib/generators/active_record/templates/migration_existing.rb +2 -2
  59. data/lib/generators/devise/install_generator.rb +15 -0
  60. data/lib/generators/devise/orm_helpers.rb +1 -18
  61. data/lib/generators/devise/views_generator.rb +14 -3
  62. data/lib/generators/templates/controllers/registrations_controller.rb +4 -4
  63. data/lib/generators/templates/controllers/sessions_controller.rb +2 -2
  64. data/lib/generators/templates/devise.rb +19 -17
  65. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  66. data/lib/generators/templates/markerb/password_change.markerb +3 -0
  67. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  68. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  69. data/test/controllers/custom_registrations_controller_test.rb +5 -5
  70. data/test/controllers/custom_strategy_test.rb +7 -5
  71. data/test/controllers/helper_methods_test.rb +22 -0
  72. data/test/controllers/helpers_test.rb +1 -1
  73. data/test/controllers/inherited_controller_i18n_messages_test.rb +2 -2
  74. data/test/controllers/internal_helpers_test.rb +8 -10
  75. data/test/controllers/load_hooks_controller_test.rb +1 -1
  76. data/test/controllers/passwords_controller_test.rb +4 -3
  77. data/test/controllers/sessions_controller_test.rb +21 -18
  78. data/test/controllers/url_helpers_test.rb +1 -1
  79. data/test/devise_test.rb +27 -0
  80. data/test/failure_app_test.rb +37 -15
  81. data/test/generators/active_record_generator_test.rb +0 -26
  82. data/test/generators/install_generator_test.rb +14 -3
  83. data/test/generators/views_generator_test.rb +7 -0
  84. data/test/helpers/devise_helper_test.rb +1 -1
  85. data/test/integration/authenticatable_test.rb +18 -18
  86. data/test/integration/confirmable_test.rb +5 -5
  87. data/test/integration/database_authenticatable_test.rb +1 -1
  88. data/test/integration/http_authenticatable_test.rb +4 -5
  89. data/test/integration/lockable_test.rb +4 -3
  90. data/test/integration/omniauthable_test.rb +12 -10
  91. data/test/integration/recoverable_test.rb +10 -10
  92. data/test/integration/registerable_test.rb +9 -11
  93. data/test/integration/rememberable_test.rb +42 -7
  94. data/test/integration/timeoutable_test.rb +16 -4
  95. data/test/integration/trackable_test.rb +1 -1
  96. data/test/mailers/confirmation_instructions_test.rb +6 -6
  97. data/test/mailers/reset_password_instructions_test.rb +5 -5
  98. data/test/mailers/unlock_instructions_test.rb +5 -5
  99. data/test/models/confirmable_test.rb +25 -1
  100. data/test/models/database_authenticatable_test.rb +26 -6
  101. data/test/models/lockable_test.rb +1 -1
  102. data/test/models/recoverable_test.rb +23 -0
  103. data/test/models/rememberable_test.rb +48 -95
  104. data/test/models/validatable_test.rb +2 -10
  105. data/test/models_test.rb +15 -6
  106. data/test/omniauth/url_helpers_test.rb +4 -7
  107. data/test/orm/active_record.rb +6 -1
  108. data/test/parameter_sanitizer_test.rb +103 -53
  109. data/test/rails_app/app/active_record/user.rb +1 -0
  110. data/test/rails_app/app/active_record/user_without_email.rb +8 -0
  111. data/test/rails_app/app/controllers/admins_controller.rb +1 -1
  112. data/test/rails_app/app/controllers/application_controller.rb +2 -2
  113. data/test/rails_app/app/controllers/home_controller.rb +5 -1
  114. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +2 -2
  115. data/test/rails_app/app/controllers/users_controller.rb +5 -5
  116. data/test/rails_app/app/mongoid/user_without_email.rb +33 -0
  117. data/test/rails_app/config/application.rb +1 -1
  118. data/test/rails_app/config/boot.rb +4 -4
  119. data/test/rails_app/config/environments/test.rb +6 -1
  120. data/test/rails_app/config/initializers/devise.rb +1 -1
  121. data/test/rails_app/config/initializers/secret_token.rb +1 -6
  122. data/test/rails_app/config/routes.rb +5 -0
  123. data/test/rails_app/lib/shared_user_without_email.rb +26 -0
  124. data/test/routes_test.rb +28 -13
  125. data/test/support/helpers.rb +4 -0
  126. data/test/support/http_method_compatibility.rb +51 -0
  127. data/test/support/webrat/integrations/rails.rb +9 -0
  128. data/test/test_helpers_test.rb +5 -5
  129. data/test/test_models.rb +1 -1
  130. metadata +41 -45
  131. data/gemfiles/Gemfile.rails-3.2-stable.lock +0 -169
  132. data/gemfiles/Gemfile.rails-4.0-stable +0 -29
  133. data/gemfiles/Gemfile.rails-4.0-stable.lock +0 -163
  134. data/script/cached-bundle +0 -49
  135. data/script/s3-put +0 -71
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class TrackableHooksTest < ActionDispatch::IntegrationTest
3
+ class TrackableHooksTest < Devise::IntegrationTest
4
4
 
5
5
  test "current and last sign in timestamps are updated on each sign in" do
6
6
  user = create_user
@@ -37,16 +37,16 @@ class ConfirmationInstructionsTest < ActionMailer::TestCase
37
37
  assert_equal [user.email], mail.to
38
38
  end
39
39
 
40
- test 'setup sender from configuration' do
40
+ test 'set up sender from configuration' do
41
41
  assert_equal ['test@example.com'], mail.from
42
42
  end
43
43
 
44
- test 'setup sender from custom mailer defaults' do
44
+ test 'set up sender from custom mailer defaults' do
45
45
  Devise.mailer = 'Users::Mailer'
46
46
  assert_equal ['custom@example.com'], mail.from
47
47
  end
48
48
 
49
- test 'setup sender from custom mailer defaults with proc' do
49
+ test 'set up sender from custom mailer defaults with proc' do
50
50
  Devise.mailer = 'Users::FromProcMailer'
51
51
  assert_equal ['custom@example.com'], mail.from
52
52
  end
@@ -56,17 +56,17 @@ class ConfirmationInstructionsTest < ActionMailer::TestCase
56
56
  assert_present mail.body.encoded
57
57
  end
58
58
 
59
- test 'setup reply to as copy from sender' do
59
+ test 'set up reply to as copy from sender' do
60
60
  assert_equal ['test@example.com'], mail.reply_to
61
61
  end
62
62
 
63
- test 'setup reply to as different if set in defaults' do
63
+ test 'set up reply to as different if set in defaults' do
64
64
  Devise.mailer = 'Users::ReplyToMailer'
65
65
  assert_equal ['custom@example.com'], mail.from
66
66
  assert_equal ['custom_reply_to@example.com'], mail.reply_to
67
67
  end
68
68
 
69
- test 'setup subject from I18n' do
69
+ test 'set up subject from I18n' do
70
70
  store_translations :en, devise: { mailer: { confirmation_instructions: { subject: 'Account Confirmation' } } } do
71
71
  assert_equal 'Account Confirmation', mail.subject
72
72
  end
@@ -39,16 +39,16 @@ class ResetPasswordInstructionsTest < ActionMailer::TestCase
39
39
  assert_equal [user.email], mail.to
40
40
  end
41
41
 
42
- test 'setup sender from configuration' do
42
+ test 'set up sender from configuration' do
43
43
  assert_equal ['test@example.com'], mail.from
44
44
  end
45
45
 
46
- test 'setup sender from custom mailer defaults' do
46
+ test 'set up sender from custom mailer defaults' do
47
47
  Devise.mailer = 'Users::Mailer'
48
48
  assert_equal ['custom@example.com'], mail.from
49
49
  end
50
50
 
51
- test 'setup sender from custom mailer defaults with proc' do
51
+ test 'set up sender from custom mailer defaults with proc' do
52
52
  Devise.mailer = 'Users::FromProcMailer'
53
53
  assert_equal ['custom@example.com'], mail.from
54
54
  end
@@ -58,11 +58,11 @@ class ResetPasswordInstructionsTest < ActionMailer::TestCase
58
58
  assert_present mail.body.encoded
59
59
  end
60
60
 
61
- test 'setup reply to as copy from sender' do
61
+ test 'set up reply to as copy from sender' do
62
62
  assert_equal ['test@example.com'], mail.reply_to
63
63
  end
64
64
 
65
- test 'setup subject from I18n' do
65
+ test 'set up subject from I18n' do
66
66
  store_translations :en, devise: { mailer: { reset_password_instructions: { subject: 'Reset instructions' } } } do
67
67
  assert_equal 'Reset instructions', mail.subject
68
68
  end
@@ -40,16 +40,16 @@ class UnlockInstructionsTest < ActionMailer::TestCase
40
40
  assert_equal [user.email], mail.to
41
41
  end
42
42
 
43
- test 'setup sender from configuration' do
43
+ test 'set up sender from configuration' do
44
44
  assert_equal ['test@example.com'], mail.from
45
45
  end
46
46
 
47
- test 'setup sender from custom mailer defaults' do
47
+ test 'set up sender from custom mailer defaults' do
48
48
  Devise.mailer = 'Users::Mailer'
49
49
  assert_equal ['custom@example.com'], mail.from
50
50
  end
51
51
 
52
- test 'setup sender from custom mailer defaults with proc' do
52
+ test 'set up sender from custom mailer defaults with proc' do
53
53
  Devise.mailer = 'Users::FromProcMailer'
54
54
  assert_equal ['custom@example.com'], mail.from
55
55
  end
@@ -59,11 +59,11 @@ class UnlockInstructionsTest < ActionMailer::TestCase
59
59
  assert_present mail.body.encoded
60
60
  end
61
61
 
62
- test 'setup reply to as copy from sender' do
62
+ test 'set up reply to as copy from sender' do
63
63
  assert_equal ['test@example.com'], mail.reply_to
64
64
  end
65
65
 
66
- test 'setup subject from I18n' do
66
+ test 'set up subject from I18n' do
67
67
  store_translations :en, devise: { mailer: { unlock_instructions: { subject: 'Yo unlock instructions' } } } do
68
68
  assert_equal 'Yo unlock instructions', mail.subject
69
69
  end
@@ -188,7 +188,7 @@ class ConfirmableTest < ActiveSupport::TestCase
188
188
 
189
189
  test 'confirm time should fallback to devise confirm in default configuration' do
190
190
  swap Devise, allow_unconfirmed_access_for: 1.day do
191
- user = new_user
191
+ user = create_user
192
192
  user.confirmation_sent_at = 2.days.ago
193
193
  assert_not user.active_for_authentication?
194
194
 
@@ -250,6 +250,16 @@ class ConfirmableTest < ActiveSupport::TestCase
250
250
  assert user.reload.active_for_authentication?
251
251
  end
252
252
 
253
+ test 'should not break when a user tries to reset their password in the case where confirmation is not required and confirm_within is set' do
254
+ swap Devise, confirm_within: 3.days do
255
+ user = create_user
256
+ user.instance_eval { def confirmation_required?; false end }
257
+ user.confirmation_sent_at = nil
258
+ user.save
259
+ assert user.reload.confirm
260
+ end
261
+ end
262
+
253
263
  test 'should find a user to send email instructions for the user confirm its email by authentication_keys' do
254
264
  swap Devise, authentication_keys: [:username, :email] do
255
265
  user = create_user
@@ -476,4 +486,18 @@ class ReconfirmableTest < ActiveSupport::TestCase
476
486
  :unconfirmed_email
477
487
  ]
478
488
  end
489
+
490
+ test 'should not require reconfirmation after creating a record' do
491
+ user = create_admin
492
+ assert !user.pending_reconfirmation?
493
+ end
494
+
495
+ test 'should not require reconfirmation after creating a record with #save called in callback' do
496
+ class Admin::WithSaveInCallback < Admin
497
+ after_create :save
498
+ end
499
+
500
+ user = Admin::WithSaveInCallback.create(valid_attributes.except(:username))
501
+ assert !user.pending_reconfirmation?
502
+ end
479
503
  end
@@ -3,6 +3,10 @@ require 'test_models'
3
3
  require 'digest/sha1'
4
4
 
5
5
  class DatabaseAuthenticatableTest < ActiveSupport::TestCase
6
+ def setup
7
+ setup_mailer
8
+ end
9
+
6
10
  test 'should downcase case insensitive keys when saving' do
7
11
  # case_insensitive_keys is set to :email by default.
8
12
  email = 'Foo@Bar.com'
@@ -88,28 +92,28 @@ class DatabaseAuthenticatableTest < ActiveSupport::TestCase
88
92
  assert user.respond_to?(:password_confirmation)
89
93
  end
90
94
 
91
- test 'should generate encrypted password while setting password' do
95
+ test 'should generate a hashed password while setting password' do
92
96
  user = new_user
93
97
  assert_present user.encrypted_password
94
98
  end
95
99
 
96
- test 'should support custom encryption methods' do
97
- user = UserWithCustomEncryption.new(password: '654321')
100
+ test 'should support custom hashing methods' do
101
+ user = UserWithCustomHashing.new(password: '654321')
98
102
  assert_equal user.encrypted_password, '123456'
99
103
  end
100
104
 
101
- test 'allow authenticatable_salt to work even with nil encrypted password' do
105
+ test 'allow authenticatable_salt to work even with nil hashed password' do
102
106
  user = User.new
103
107
  user.encrypted_password = nil
104
108
  assert_nil user.authenticatable_salt
105
109
  end
106
110
 
107
- test 'should not generate encrypted password if password is blank' do
111
+ test 'should not generate a hashed password if password is blank' do
108
112
  assert_blank new_user(password: nil).encrypted_password
109
113
  assert_blank new_user(password: '').encrypted_password
110
114
  end
111
115
 
112
- test 'should encrypt password again if password has changed' do
116
+ test 'should hash password again if password has changed' do
113
117
  user = create_user
114
118
  encrypted_password = user.encrypted_password
115
119
  user.password = user.password_confirmation = 'new_password'
@@ -225,6 +229,22 @@ class DatabaseAuthenticatableTest < ActiveSupport::TestCase
225
229
  assert_match "can't be blank", user.errors[:current_password].join
226
230
  end
227
231
 
232
+ test 'should not email on password change' do
233
+ user = create_user
234
+ assert_email_not_sent do
235
+ assert user.update_attributes(password: 'newpass', password_confirmation: 'newpass')
236
+ end
237
+ end
238
+
239
+ test 'should email on password change when configured' do
240
+ swap Devise, send_password_change_notification: true do
241
+ user = create_user
242
+ assert_email_sent user.email do
243
+ assert user.update_attributes(password: 'newpass', password_confirmation: 'newpass')
244
+ end
245
+ end
246
+ end
247
+
228
248
  test 'downcase_keys with validation' do
229
249
  User.create(email: "HEllO@example.com", password: "123456")
230
250
  user = User.create(email: "HEllO@example.com", password: "123456")
@@ -14,7 +14,7 @@ class LockableTest < ActiveSupport::TestCase
14
14
  end
15
15
  end
16
16
 
17
- test "should increment failed_attempts on successfull validation if the user is already locked" do
17
+ test "should increment failed_attempts on successful validation if the user is already locked" do
18
18
  user = create_user
19
19
  user.confirm
20
20
 
@@ -42,6 +42,17 @@ class RecoverableTest < ActiveSupport::TestCase
42
42
  assert_nil user.reset_password_token
43
43
  end
44
44
 
45
+ test 'should not clear reset password token for new user' do
46
+ user = new_user
47
+ assert_nil user.reset_password_token
48
+
49
+ user.send_reset_password_instructions
50
+ assert_present user.reset_password_token
51
+
52
+ user.save
53
+ assert_present user.reset_password_token
54
+ end
55
+
45
56
  test 'should clear reset password token if changing password' do
46
57
  user = create_user
47
58
  assert_nil user.reset_password_token
@@ -65,6 +76,18 @@ class RecoverableTest < ActiveSupport::TestCase
65
76
  assert_nil user.reset_password_token
66
77
  end
67
78
 
79
+ test 'should clear reset password successfully even if there is no email' do
80
+ user = create_user_without_email
81
+ assert_nil user.reset_password_token
82
+
83
+ user.send_reset_password_instructions
84
+ assert_present user.reset_password_token
85
+ user.password = "123456678"
86
+ user.password_confirmation = "123456678"
87
+ user.save!
88
+ assert_nil user.reset_password_token
89
+ end
90
+
68
91
  test 'should not clear reset password token if record is invalid' do
69
92
  user = create_user
70
93
  user.send_reset_password_instructions
@@ -13,6 +13,7 @@ class RememberableTest < ActiveSupport::TestCase
13
13
  user = create_user
14
14
  user.expects(:valid?).never
15
15
  user.remember_me!
16
+ assert user.remember_created_at
16
17
  end
17
18
 
18
19
  test 'forget_me should not clear remember token if using salt' do
@@ -33,13 +34,57 @@ class RememberableTest < ActiveSupport::TestCase
33
34
  test 'serialize into cookie' do
34
35
  user = create_user
35
36
  user.remember_me!
36
- assert_equal [user.to_key, user.authenticatable_salt], User.serialize_into_cookie(user)
37
+ id, token, date = User.serialize_into_cookie(user)
38
+ assert_equal id, user.to_key
39
+ assert_equal token, user.authenticatable_salt
40
+ assert date.is_a?(String)
37
41
  end
38
42
 
39
43
  test 'serialize from cookie' do
40
44
  user = create_user
41
45
  user.remember_me!
42
- assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt)
46
+ assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt, Time.now.utc)
47
+ end
48
+
49
+ test 'serialize from cookie should accept a String with the datetime seconds and microseconds' do
50
+ user = create_user
51
+ user.remember_me!
52
+ assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt, Time.now.utc.to_f.to_json)
53
+ end
54
+
55
+ test 'serialize from cookie should return nil with invalid datetime' do
56
+ user = create_user
57
+ user.remember_me!
58
+ assert_nil User.serialize_from_cookie(user.to_key, user.authenticatable_salt, "2013")
59
+ end
60
+
61
+ test 'serialize from cookie should return nil if no resource is found' do
62
+ assert_nil resource_class.serialize_from_cookie([0], "123", Time.now.utc)
63
+ end
64
+
65
+ test 'serialize from cookie should return nil if no timestamp' do
66
+ user = create_user
67
+ user.remember_me!
68
+ assert_nil User.serialize_from_cookie(user.to_key, user.authenticatable_salt)
69
+ end
70
+
71
+ test 'serialize from cookie should return nil if timestamp is earlier than token creation' do
72
+ user = create_user
73
+ user.remember_me!
74
+ assert_nil User.serialize_from_cookie(user.to_key, user.authenticatable_salt, 1.day.ago)
75
+ end
76
+
77
+ test 'serialize from cookie should return nil if timestamp is older than remember_for' do
78
+ user = create_user
79
+ user.remember_created_at = 1.month.ago
80
+ user.remember_me!
81
+ assert_nil User.serialize_from_cookie(user.to_key, user.authenticatable_salt, 3.weeks.ago)
82
+ end
83
+
84
+ test 'serialize from cookie me return nil if is a valid resource with invalid token' do
85
+ user = create_user
86
+ user.remember_me!
87
+ assert_nil User.serialize_from_cookie(user.to_key, "123", Time.now.utc)
43
88
  end
44
89
 
45
90
  test 'raises a RuntimeError if authenticatable_salt is nil or empty' do
@@ -93,28 +138,7 @@ class RememberableTest < ActiveSupport::TestCase
93
138
  resource.forget_me!
94
139
  end
95
140
 
96
- test 'remember is expired if not created at timestamp is set' do
97
- assert create_resource.remember_expired?
98
- end
99
-
100
- test 'serialize should return nil if no resource is found' do
101
- assert_nil resource_class.serialize_from_cookie([0], "123")
102
- end
103
-
104
- test 'remember me return nil if is a valid resource with invalid token' do
105
- resource = create_resource
106
- assert_nil resource_class.serialize_from_cookie([resource.id], "123")
107
- end
108
-
109
- test 'remember for should fallback to devise remember for default configuration' do
110
- swap Devise, remember_for: 1.day do
111
- resource = create_resource
112
- resource.remember_me!
113
- assert_not resource.remember_expired?
114
- end
115
- end
116
-
117
- test 'remember expires at should sum date of creation with remember for configuration' do
141
+ test 'remember expires at uses remember for configuration' do
118
142
  swap Devise, remember_for: 3.days do
119
143
  resource = create_resource
120
144
  resource.remember_me!
@@ -125,77 +149,6 @@ class RememberableTest < ActiveSupport::TestCase
125
149
  end
126
150
  end
127
151
 
128
- test 'remember should be expired if remember_for is zero' do
129
- swap Devise, remember_for: 0.days do
130
- Devise.remember_for = 0.days
131
- resource = create_resource
132
- resource.remember_me!
133
- assert resource.remember_expired?
134
- end
135
- end
136
-
137
- test 'remember should be expired if it was created before limit time' do
138
- swap Devise, remember_for: 1.day do
139
- resource = create_resource
140
- resource.remember_me!
141
- resource.remember_created_at = 2.days.ago
142
- resource.save
143
- assert resource.remember_expired?
144
- end
145
- end
146
-
147
- test 'remember should not be expired if it was created within the limit time' do
148
- swap Devise, remember_for: 30.days do
149
- resource = create_resource
150
- resource.remember_me!
151
- resource.remember_created_at = (30.days.ago + 2.minutes)
152
- resource.save
153
- assert_not resource.remember_expired?
154
- end
155
- end
156
-
157
- test 'if extend_remember_period is false, remember_me! should generate a new timestamp if expired' do
158
- swap Devise, remember_for: 5.minutes do
159
- resource = create_resource
160
- resource.remember_me!(false)
161
- assert resource.remember_created_at
162
-
163
- resource.remember_created_at = old = 10.minutes.ago
164
- resource.save
165
-
166
- resource.remember_me!(false)
167
- assert_not_equal old.to_i, resource.remember_created_at.to_i
168
- end
169
- end
170
-
171
- test 'if extend_remember_period is false, remember_me! should not generate a new timestamp' do
172
- swap Devise, remember_for: 1.year do
173
- resource = create_resource
174
- resource.remember_me!(false)
175
- assert resource.remember_created_at
176
-
177
- resource.remember_created_at = old = 10.minutes.ago.utc
178
- resource.save
179
-
180
- resource.remember_me!(false)
181
- assert_equal old.to_i, resource.remember_created_at.to_i
182
- end
183
- end
184
-
185
- test 'if extend_remember_period is true, remember_me! should always generate a new timestamp' do
186
- swap Devise, remember_for: 1.year do
187
- resource = create_resource
188
- resource.remember_me!(true)
189
- assert resource.remember_created_at
190
-
191
- resource.remember_created_at = old = 10.minutes.ago
192
- resource.save
193
-
194
- resource.remember_me!(true)
195
- assert_not_equal old, resource.remember_created_at
196
- end
197
- end
198
-
199
152
  test 'should have the required_fields array' do
200
153
  assert_same_content Devise::Models::Rememberable.required_fields(User), [
201
154
  :remember_created_at
@@ -57,11 +57,7 @@ class ValidatableTest < ActiveSupport::TestCase
57
57
  user = new_user(password: 'new_password', password_confirmation: 'blabla')
58
58
  assert user.invalid?
59
59
 
60
- if Devise.rails4?
61
- assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
62
- else
63
- assert_equal 'doesn\'t match confirmation', user.errors[:password].join
64
- end
60
+ assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
65
61
  end
66
62
 
67
63
  test 'should require password when updating/resetting password' do
@@ -79,11 +75,7 @@ class ValidatableTest < ActiveSupport::TestCase
79
75
  user.password_confirmation = 'another_password'
80
76
  assert user.invalid?
81
77
 
82
- if Devise.rails4?
83
- assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
84
- else
85
- assert_equal 'doesn\'t match confirmation', user.errors[:password].join
86
- end
78
+ assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
87
79
  end
88
80
 
89
81
  test 'should require a password with minimum of 7 characters' do
data/test/models_test.rb CHANGED
@@ -92,13 +92,20 @@ class ActiveRecordTest < ActiveSupport::TestCase
92
92
  end
93
93
  end
94
94
 
95
+ module StubModelFilters
96
+ def stub_filter(name)
97
+ define_singleton_method(name) { |*| nil }
98
+ end
99
+ end
100
+
95
101
  class CheckFieldsTest < ActiveSupport::TestCase
96
102
  test 'checks if the class respond_to the required fields' do
97
103
  Player = Class.new do
98
104
  extend Devise::Models
105
+ extend StubModelFilters
99
106
 
100
- def self.before_validation(instance)
101
- end
107
+ stub_filter :before_validation
108
+ stub_filter :after_update
102
109
 
103
110
  devise :database_authenticatable
104
111
 
@@ -113,9 +120,10 @@ class CheckFieldsTest < ActiveSupport::TestCase
113
120
  test 'raises Devise::Models::MissingAtrribute and shows the missing attribute if the class doesn\'t respond_to one of the attributes' do
114
121
  Clown = Class.new do
115
122
  extend Devise::Models
123
+ extend StubModelFilters
116
124
 
117
- def self.before_validation(instance)
118
- end
125
+ stub_filter :before_validation
126
+ stub_filter :after_update
119
127
 
120
128
  devise :database_authenticatable
121
129
 
@@ -130,9 +138,10 @@ class CheckFieldsTest < ActiveSupport::TestCase
130
138
  test 'raises Devise::Models::MissingAtrribute with all the missing attributes if there is more than one' do
131
139
  Magician = Class.new do
132
140
  extend Devise::Models
141
+ extend StubModelFilters
133
142
 
134
- def self.before_validation(instance)
135
- end
143
+ stub_filter :before_validation
144
+ stub_filter :after_update
136
145
 
137
146
  devise :database_authenticatable
138
147
  end
@@ -1,24 +1,21 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class OmniAuthRoutesTest < ActionController::TestCase
4
- ExpectedUrlGeneratiorError = Devise.rails4? ?
5
- ActionController::UrlGenerationError : ActionController::RoutingError
6
-
7
4
  tests ApplicationController
8
5
 
9
6
  def assert_path(action, provider, with_param=true)
10
7
  # Resource param
11
8
  assert_equal @controller.send(action, :user, provider),
12
- @controller.send("user_#{action}", provider)
9
+ @controller.send("user_#{provider}_#{action}")
13
10
 
14
11
  # With an object
15
12
  assert_equal @controller.send(action, User.new, provider),
16
- @controller.send("user_#{action}", provider)
13
+ @controller.send("user_#{provider}_#{action}")
17
14
 
18
15
  if with_param
19
16
  # Default url params
20
17
  assert_equal @controller.send(action, :user, provider, param: 123),
21
- @controller.send("user_#{action}", provider, param: 123)
18
+ @controller.send("user_#{provider}_#{action}", param: 123)
22
19
  end
23
20
  end
24
21
 
@@ -33,7 +30,7 @@ class OmniAuthRoutesTest < ActionController::TestCase
33
30
  test 'should generate authorization path' do
34
31
  assert_match "/users/auth/facebook", @controller.omniauth_authorize_path(:user, :facebook)
35
32
 
36
- assert_raise ExpectedUrlGeneratiorError do
33
+ assert_raise NoMethodError do
37
34
  @controller.omniauth_authorize_path(:user, :github)
38
35
  end
39
36
  end
@@ -5,6 +5,11 @@ ActiveRecord::Base.include_root_in_json = true
5
5
  ActiveRecord::Migrator.migrate(File.expand_path("../../rails_app/db/migrate/", __FILE__))
6
6
 
7
7
  class ActiveSupport::TestCase
8
- self.use_transactional_fixtures = true
8
+ if Rails.version >= '5.0.0'
9
+ self.use_transactional_tests = true
10
+ else
11
+ self.use_transactional_fixtures = true
12
+ end
13
+
9
14
  self.use_instantiated_fixtures = false
10
15
  end