devise-security 0.13.0 → 0.14.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.gitignore +1 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +30 -12
  6. data/Appraisals +21 -5
  7. data/Gemfile +8 -1
  8. data/README.md +47 -7
  9. data/app/views/devise/paranoid_verification_code/show.html.erb +1 -1
  10. data/app/views/devise/password_expired/show.html.erb +1 -1
  11. data/config/locales/de.yml +11 -11
  12. data/config/locales/fr.yml +13 -13
  13. data/config/locales/ja.yml +29 -0
  14. data/devise-security.gemspec +12 -6
  15. data/gemfiles/rails_4.2_stable.gemfile +9 -1
  16. data/gemfiles/rails_5.0_stable.gemfile +8 -1
  17. data/gemfiles/rails_5.1_stable.gemfile +8 -1
  18. data/gemfiles/{rails_5.2.0.gemfile → rails_5.2_stable.gemfile} +8 -1
  19. data/gemfiles/rails_6.0_beta.gemfile +15 -0
  20. data/lib/devise-security.rb +2 -4
  21. data/lib/devise-security/models/{old_password.rb → active_record/old_password.rb} +1 -2
  22. data/lib/devise-security/models/compatibility.rb +6 -15
  23. data/lib/devise-security/models/compatibility/active_record.rb +29 -0
  24. data/lib/devise-security/models/compatibility/mongoid.rb +21 -0
  25. data/lib/devise-security/models/database_authenticatable_patch.rb +1 -1
  26. data/lib/devise-security/models/expirable.rb +6 -2
  27. data/lib/devise-security/models/mongoid/old_password.rb +21 -0
  28. data/lib/devise-security/models/password_archivable.rb +16 -7
  29. data/lib/devise-security/models/password_expirable.rb +5 -0
  30. data/lib/devise-security/models/secure_validatable.rb +2 -2
  31. data/lib/devise-security/orm/mongoid.rb +7 -0
  32. data/lib/devise-security/patches/controller_security_question.rb +1 -1
  33. data/lib/devise-security/version.rb +1 -1
  34. data/lib/generators/devise_security/install_generator.rb +1 -1
  35. data/test/dummy/app/models/application_record.rb +8 -2
  36. data/test/dummy/app/models/application_user_record.rb +11 -0
  37. data/test/dummy/app/models/captcha_user.rb +5 -2
  38. data/test/dummy/app/models/mongoid/confirmable_fields.rb +13 -0
  39. data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +17 -0
  40. data/test/dummy/app/models/mongoid/expirable_fields.rb +11 -0
  41. data/test/dummy/app/models/mongoid/lockable_fields.rb +13 -0
  42. data/test/dummy/app/models/mongoid/mappings.rb +13 -0
  43. data/test/dummy/app/models/mongoid/omniauthable_fields.rb +11 -0
  44. data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +10 -0
  45. data/test/dummy/app/models/mongoid/password_archivable_fields.rb +9 -0
  46. data/test/dummy/app/models/mongoid/password_expirable_fields.rb +10 -0
  47. data/test/dummy/app/models/mongoid/recoverable_fields.rb +11 -0
  48. data/test/dummy/app/models/mongoid/registerable_fields.rb +19 -0
  49. data/test/dummy/app/models/mongoid/rememberable_fields.rb +10 -0
  50. data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +11 -0
  51. data/test/dummy/app/models/mongoid/security_questionable_fields.rb +13 -0
  52. data/test/dummy/app/models/mongoid/session_limitable_fields.rb +10 -0
  53. data/test/dummy/app/models/mongoid/timeoutable_fields.rb +9 -0
  54. data/test/dummy/app/models/mongoid/trackable_fields.rb +14 -0
  55. data/test/dummy/app/models/mongoid/validatable_fields.rb +7 -0
  56. data/test/dummy/app/models/secure_user.rb +5 -1
  57. data/test/dummy/app/models/security_question_user.rb +7 -4
  58. data/test/dummy/app/models/user.rb +5 -0
  59. data/test/dummy/app/models/widget.rb +4 -0
  60. data/test/dummy/app/mongoid/admin.rb +31 -0
  61. data/test/dummy/app/mongoid/one_user.rb +58 -0
  62. data/test/dummy/app/mongoid/shim.rb +25 -0
  63. data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
  64. data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
  65. data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
  66. data/test/dummy/app/mongoid/user_without_email.rb +35 -0
  67. data/test/dummy/config/application.rb +10 -7
  68. data/test/dummy/config/environments/test.rb +2 -2
  69. data/test/dummy/config/initializers/devise.rb +3 -4
  70. data/test/dummy/config/initializers/migration_class.rb +8 -6
  71. data/test/dummy/config/mongoid.yml +6 -0
  72. data/test/dummy/lib/shared_expirable_columns.rb +14 -0
  73. data/test/dummy/lib/shared_security_questions_fields.rb +16 -0
  74. data/test/dummy/lib/shared_user.rb +32 -0
  75. data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
  76. data/test/dummy/lib/shared_user_without_email.rb +28 -0
  77. data/test/dummy/lib/shared_user_without_omniauth.rb +15 -0
  78. data/test/dummy/lib/shared_verification_fields.rb +15 -0
  79. data/test/orm/active_record.rb +12 -0
  80. data/test/orm/mongoid.rb +12 -0
  81. data/test/support/mongoid.yml +6 -0
  82. data/test/test_helper.rb +16 -9
  83. data/test/test_install_generator.rb +1 -0
  84. data/test/test_password_archivable.rb +6 -7
  85. data/test/test_password_expirable.rb +3 -1
  86. data/test/test_secure_validatable.rb +11 -10
  87. data/test/test_security_question_controller.rb +9 -11
  88. metadata +125 -16
@@ -7,15 +7,15 @@ class TestWithSecurityQuestion < ActionController::TestCase
7
7
  tests SecurityQuestion::UnlocksController
8
8
 
9
9
  setup do
10
- @user = User.create(username: 'hello', email: 'hello@path.travel',
11
- password: '1234', security_question_answer: 'Right Answer')
10
+ @user = SecurityQuestionUser.create!(username: 'hello', email: 'hello@microsoft.com',
11
+ password: 'A1234567z!', security_question_answer: 'Right Answer')
12
12
  @user.lock_access!
13
-
13
+ assert @user.locked_at.present?
14
14
  @request.env['devise.mapping'] = Devise.mappings[:security_question_user]
15
15
  end
16
16
 
17
17
  test 'When security question is enabled, it is inserted correctly' do
18
- if Rails.version < "5"
18
+ if Rails.gem_version.release <= Gem::Version.new('5.0')
19
19
  post :create, {
20
20
  security_question_user: {
21
21
  email: @user.email
@@ -28,13 +28,12 @@ class TestWithSecurityQuestion < ActionController::TestCase
28
28
  }, security_question_answer: "wrong answer"
29
29
  }
30
30
  end
31
-
32
- assert_equal 'The security question answer was invalid.', flash[:alert]
31
+ assert_equal I18n.t('devise.invalid_security_question'), flash[:alert]
33
32
  assert_redirected_to new_security_question_user_unlock_path
34
33
  end
35
34
 
36
35
  test 'When security_question is valid, it runs as normal' do
37
- if Rails.version < "5"
36
+ if Rails.gem_version.release <= Gem::Version.new('5.0')
38
37
  post :create, {
39
38
  security_question_user: {
40
39
  email: @user.email
@@ -48,7 +47,7 @@ class TestWithSecurityQuestion < ActionController::TestCase
48
47
  }
49
48
  end
50
49
 
51
- assert_equal 'You will receive an email with instructions for how to unlock your account in a few minutes.', flash[:notice]
50
+ assert_equal I18n.t('devise.unlocks.send_instructions'), flash[:notice]
52
51
  assert_redirected_to new_security_question_user_session_path
53
52
  end
54
53
  end
@@ -61,12 +60,11 @@ class TestWithoutSecurityQuestion < ActionController::TestCase
61
60
  @user = User.create(username: 'hello', email: 'hello@path.travel',
62
61
  password: '1234', security_question_answer: 'Right Answer')
63
62
  @user.lock_access!
64
-
65
63
  @request.env['devise.mapping'] = Devise.mappings[:user]
66
64
  end
67
65
 
68
66
  test 'When security question is not enabled it is not inserted' do
69
- if Rails.version < "5"
67
+ if Rails.gem_version.release <= Gem::Version.new('5.0')
70
68
  post :create, {
71
69
  user: {
72
70
  email: @user.email
@@ -80,7 +78,7 @@ class TestWithoutSecurityQuestion < ActionController::TestCase
80
78
  }
81
79
  end
82
80
 
83
- assert_equal 'You will receive an email with instructions for how to unlock your account in a few minutes.', flash[:notice]
81
+ assert_equal I18n.t('devise.unlocks.send_instructions'), flash[:notice]
84
82
  assert_redirected_to new_user_session_path
85
83
  end
86
84
  end
metadata CHANGED
@@ -1,20 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-security
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Scholl
8
8
  - Alexander Dreher
9
9
  - Nate Bird
10
10
  - Dillon Welch
11
+ - Kevin Olbrich
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2018-10-19 00:00:00.000000000 Z
15
+ date: 2019-03-07 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
- name: rails
18
+ name: railties
18
19
  requirement: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - ">="
@@ -39,7 +40,7 @@ dependencies:
39
40
  requirements:
40
41
  - - ">="
41
42
  - !ruby/object:Gem::Version
42
- version: 4.2.0
43
+ version: 4.3.0
43
44
  - - "<"
44
45
  - !ruby/object:Gem::Version
45
46
  version: '5.0'
@@ -49,7 +50,7 @@ dependencies:
49
50
  requirements:
50
51
  - - ">="
51
52
  - !ruby/object:Gem::Version
52
- version: 4.2.0
53
+ version: 4.3.0
53
54
  - - "<"
54
55
  - !ruby/object:Gem::Version
55
56
  version: '5.0'
@@ -95,6 +96,20 @@ dependencies:
95
96
  - - ">="
96
97
  - !ruby/object:Gem::Version
97
98
  version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: database_cleaner
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
98
113
  - !ruby/object:Gem::Dependency
99
114
  name: easy_captcha
100
115
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +153,7 @@ dependencies:
138
153
  - !ruby/object:Gem::Version
139
154
  version: '0'
140
155
  - !ruby/object:Gem::Dependency
141
- name: pry-byebug
156
+ name: omniauth
142
157
  requirement: !ruby/object:Gem::Requirement
143
158
  requirements:
144
159
  - - ">="
@@ -152,7 +167,7 @@ dependencies:
152
167
  - !ruby/object:Gem::Version
153
168
  version: '0'
154
169
  - !ruby/object:Gem::Dependency
155
- name: pry-rescue
170
+ name: pry-byebug
156
171
  requirement: !ruby/object:Gem::Requirement
157
172
  requirements:
158
173
  - - ">="
@@ -166,7 +181,7 @@ dependencies:
166
181
  - !ruby/object:Gem::Version
167
182
  version: '0'
168
183
  - !ruby/object:Gem::Dependency
169
- name: pry
184
+ name: pry-rescue
170
185
  requirement: !ruby/object:Gem::Requirement
171
186
  requirements:
172
187
  - - ">="
@@ -199,14 +214,14 @@ dependencies:
199
214
  requirements:
200
215
  - - "~>"
201
216
  - !ruby/object:Gem::Version
202
- version: 0.58.0
217
+ version: 0.59.2
203
218
  type: :development
204
219
  prerelease: false
205
220
  version_requirements: !ruby/object:Gem::Requirement
206
221
  requirements:
207
222
  - - "~>"
208
223
  - !ruby/object:Gem::Version
209
- version: 0.58.0
224
+ version: 0.59.2
210
225
  - !ruby/object:Gem::Dependency
211
226
  name: sqlite3
212
227
  requirement: !ruby/object:Gem::Requirement
@@ -221,6 +236,20 @@ dependencies:
221
236
  - - ">="
222
237
  - !ruby/object:Gem::Version
223
238
  version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: wwtd
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
224
253
  description: An enterprise security extension for devise.
225
254
  email: natebird@gmail.com
226
255
  executables: []
@@ -248,22 +277,27 @@ files:
248
277
  - config/locales/es.yml
249
278
  - config/locales/fr.yml
250
279
  - config/locales/it.yml
280
+ - config/locales/ja.yml
251
281
  - config/locales/tr.yml
252
282
  - devise-security.gemspec
253
283
  - gemfiles/rails_4.2_stable.gemfile
254
284
  - gemfiles/rails_5.0_stable.gemfile
255
285
  - gemfiles/rails_5.1_stable.gemfile
256
- - gemfiles/rails_5.2.0.gemfile
286
+ - gemfiles/rails_5.2_stable.gemfile
287
+ - gemfiles/rails_6.0_beta.gemfile
257
288
  - lib/devise-security.rb
258
289
  - lib/devise-security/controllers/helpers.rb
259
290
  - lib/devise-security/hooks/expirable.rb
260
291
  - lib/devise-security/hooks/paranoid_verification.rb
261
292
  - lib/devise-security/hooks/password_expirable.rb
262
293
  - lib/devise-security/hooks/session_limitable.rb
294
+ - lib/devise-security/models/active_record/old_password.rb
263
295
  - lib/devise-security/models/compatibility.rb
296
+ - lib/devise-security/models/compatibility/active_record.rb
297
+ - lib/devise-security/models/compatibility/mongoid.rb
264
298
  - lib/devise-security/models/database_authenticatable_patch.rb
265
299
  - lib/devise-security/models/expirable.rb
266
- - lib/devise-security/models/old_password.rb
300
+ - lib/devise-security/models/mongoid/old_password.rb
267
301
  - lib/devise-security/models/paranoid_verification.rb
268
302
  - lib/devise-security/models/password_archivable.rb
269
303
  - lib/devise-security/models/password_expirable.rb
@@ -271,6 +305,7 @@ files:
271
305
  - lib/devise-security/models/security_questionable.rb
272
306
  - lib/devise-security/models/session_limitable.rb
273
307
  - lib/devise-security/orm/active_record.rb
308
+ - lib/devise-security/orm/mongoid.rb
274
309
  - lib/devise-security/patches.rb
275
310
  - lib/devise-security/patches/confirmations_controller_captcha.rb
276
311
  - lib/devise-security/patches/confirmations_controller_security_question.rb
@@ -296,11 +331,37 @@ files:
296
331
  - test/dummy/app/controllers/security_question/unlocks_controller.rb
297
332
  - test/dummy/app/models/.gitkeep
298
333
  - test/dummy/app/models/application_record.rb
334
+ - test/dummy/app/models/application_user_record.rb
299
335
  - test/dummy/app/models/captcha_user.rb
336
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
337
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
338
+ - test/dummy/app/models/mongoid/expirable_fields.rb
339
+ - test/dummy/app/models/mongoid/lockable_fields.rb
340
+ - test/dummy/app/models/mongoid/mappings.rb
341
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
342
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
343
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
344
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
345
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
346
+ - test/dummy/app/models/mongoid/registerable_fields.rb
347
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
348
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
349
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
350
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
351
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
352
+ - test/dummy/app/models/mongoid/trackable_fields.rb
353
+ - test/dummy/app/models/mongoid/validatable_fields.rb
300
354
  - test/dummy/app/models/secure_user.rb
301
355
  - test/dummy/app/models/security_question_user.rb
302
356
  - test/dummy/app/models/user.rb
303
357
  - test/dummy/app/models/widget.rb
358
+ - test/dummy/app/mongoid/admin.rb
359
+ - test/dummy/app/mongoid/one_user.rb
360
+ - test/dummy/app/mongoid/shim.rb
361
+ - test/dummy/app/mongoid/user_on_engine.rb
362
+ - test/dummy/app/mongoid/user_on_main_app.rb
363
+ - test/dummy/app/mongoid/user_with_validations.rb
364
+ - test/dummy/app/mongoid/user_without_email.rb
304
365
  - test/dummy/app/views/foos/index.html.erb
305
366
  - test/dummy/config.ru
306
367
  - test/dummy/config/application.rb
@@ -310,6 +371,7 @@ files:
310
371
  - test/dummy/config/environments/test.rb
311
372
  - test/dummy/config/initializers/devise.rb
312
373
  - test/dummy/config/initializers/migration_class.rb
374
+ - test/dummy/config/mongoid.yml
313
375
  - test/dummy/config/routes.rb
314
376
  - test/dummy/config/secrets.yml
315
377
  - test/dummy/db/migrate/20120508165529_create_tables.rb
@@ -321,6 +383,16 @@ files:
321
383
  - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
322
384
  - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
323
385
  - test/dummy/db/migrate/20180319114023_add_widget.rb
386
+ - test/dummy/lib/shared_expirable_columns.rb
387
+ - test/dummy/lib/shared_security_questions_fields.rb
388
+ - test/dummy/lib/shared_user.rb
389
+ - test/dummy/lib/shared_user_with_password_verification.rb
390
+ - test/dummy/lib/shared_user_without_email.rb
391
+ - test/dummy/lib/shared_user_without_omniauth.rb
392
+ - test/dummy/lib/shared_verification_fields.rb
393
+ - test/orm/active_record.rb
394
+ - test/orm/mongoid.rb
395
+ - test/support/mongoid.yml
324
396
  - test/test_captcha_controller.rb
325
397
  - test/test_complexity_validator.rb
326
398
  - test/test_helper.rb
@@ -343,15 +415,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
343
415
  requirements:
344
416
  - - ">="
345
417
  - !ruby/object:Gem::Version
346
- version: 2.3.7
418
+ version: 2.3.0
347
419
  required_rubygems_version: !ruby/object:Gem::Requirement
348
420
  requirements:
349
- - - ">="
421
+ - - ">"
350
422
  - !ruby/object:Gem::Version
351
- version: '0'
423
+ version: 1.3.1
352
424
  requirements: []
353
425
  rubyforge_project:
354
- rubygems_version: 2.7.7
426
+ rubygems_version: 2.7.8
355
427
  signing_key:
356
428
  specification_version: 4
357
429
  summary: Security extension for devise
@@ -363,11 +435,37 @@ test_files:
363
435
  - test/dummy/app/controllers/security_question/unlocks_controller.rb
364
436
  - test/dummy/app/models/.gitkeep
365
437
  - test/dummy/app/models/application_record.rb
438
+ - test/dummy/app/models/application_user_record.rb
366
439
  - test/dummy/app/models/captcha_user.rb
440
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
441
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
442
+ - test/dummy/app/models/mongoid/expirable_fields.rb
443
+ - test/dummy/app/models/mongoid/lockable_fields.rb
444
+ - test/dummy/app/models/mongoid/mappings.rb
445
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
446
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
447
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
448
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
449
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
450
+ - test/dummy/app/models/mongoid/registerable_fields.rb
451
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
452
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
453
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
454
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
455
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
456
+ - test/dummy/app/models/mongoid/trackable_fields.rb
457
+ - test/dummy/app/models/mongoid/validatable_fields.rb
367
458
  - test/dummy/app/models/secure_user.rb
368
459
  - test/dummy/app/models/security_question_user.rb
369
460
  - test/dummy/app/models/user.rb
370
461
  - test/dummy/app/models/widget.rb
462
+ - test/dummy/app/mongoid/admin.rb
463
+ - test/dummy/app/mongoid/one_user.rb
464
+ - test/dummy/app/mongoid/shim.rb
465
+ - test/dummy/app/mongoid/user_on_engine.rb
466
+ - test/dummy/app/mongoid/user_on_main_app.rb
467
+ - test/dummy/app/mongoid/user_with_validations.rb
468
+ - test/dummy/app/mongoid/user_without_email.rb
371
469
  - test/dummy/app/views/foos/index.html.erb
372
470
  - test/dummy/config.ru
373
471
  - test/dummy/config/application.rb
@@ -377,6 +475,7 @@ test_files:
377
475
  - test/dummy/config/environments/test.rb
378
476
  - test/dummy/config/initializers/devise.rb
379
477
  - test/dummy/config/initializers/migration_class.rb
478
+ - test/dummy/config/mongoid.yml
380
479
  - test/dummy/config/routes.rb
381
480
  - test/dummy/config/secrets.yml
382
481
  - test/dummy/db/migrate/20120508165529_create_tables.rb
@@ -388,6 +487,16 @@ test_files:
388
487
  - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
389
488
  - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
390
489
  - test/dummy/db/migrate/20180319114023_add_widget.rb
490
+ - test/dummy/lib/shared_expirable_columns.rb
491
+ - test/dummy/lib/shared_security_questions_fields.rb
492
+ - test/dummy/lib/shared_user.rb
493
+ - test/dummy/lib/shared_user_with_password_verification.rb
494
+ - test/dummy/lib/shared_user_without_email.rb
495
+ - test/dummy/lib/shared_user_without_omniauth.rb
496
+ - test/dummy/lib/shared_verification_fields.rb
497
+ - test/orm/active_record.rb
498
+ - test/orm/mongoid.rb
499
+ - test/support/mongoid.yml
391
500
  - test/test_captcha_controller.rb
392
501
  - test/test_complexity_validator.rb
393
502
  - test/test_helper.rb