devise-security 0.12.0 → 0.16.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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +186 -63
  3. data/app/controllers/devise/paranoid_verification_code_controller.rb +2 -0
  4. data/app/controllers/devise/password_expired_controller.rb +13 -6
  5. data/app/views/devise/paranoid_verification_code/show.html.erb +4 -4
  6. data/app/views/devise/password_expired/show.html.erb +6 -6
  7. data/config/locales/by.yml +49 -0
  8. data/config/locales/cs.yml +41 -0
  9. data/config/locales/de.yml +30 -7
  10. data/config/locales/en.yml +25 -1
  11. data/config/locales/es.yml +19 -6
  12. data/config/locales/fa.yml +41 -0
  13. data/config/locales/fr.yml +30 -0
  14. data/config/locales/hi.yml +42 -0
  15. data/config/locales/it.yml +35 -4
  16. data/config/locales/ja.yml +30 -0
  17. data/config/locales/nl.yml +41 -0
  18. data/config/locales/pt.yml +41 -0
  19. data/config/locales/ru.yml +49 -0
  20. data/config/locales/tr.yml +18 -0
  21. data/config/locales/uk.yml +49 -0
  22. data/config/locales/zh_CN.yml +41 -0
  23. data/config/locales/zh_TW.yml +41 -0
  24. data/lib/devise-security/controllers/helpers.rb +61 -50
  25. data/lib/devise-security/hooks/expirable.rb +3 -1
  26. data/lib/devise-security/hooks/paranoid_verification.rb +2 -0
  27. data/lib/devise-security/hooks/password_expirable.rb +4 -0
  28. data/lib/devise-security/hooks/session_limitable.rb +31 -14
  29. data/lib/devise-security/models/active_record/old_password.rb +5 -0
  30. data/lib/devise-security/models/compatibility/active_record_patch.rb +40 -0
  31. data/lib/devise-security/models/compatibility/mongoid_patch.rb +31 -0
  32. data/lib/devise-security/models/compatibility.rb +8 -15
  33. data/lib/devise-security/models/database_authenticatable_patch.rb +3 -1
  34. data/lib/devise-security/models/expirable.rb +8 -2
  35. data/lib/devise-security/models/mongoid/old_password.rb +21 -0
  36. data/lib/devise-security/models/paranoid_verification.rb +2 -0
  37. data/lib/devise-security/models/password_archivable.rb +18 -7
  38. data/lib/devise-security/models/password_expirable.rb +103 -48
  39. data/lib/devise-security/models/secure_validatable.rb +26 -6
  40. data/lib/devise-security/models/security_questionable.rb +2 -0
  41. data/lib/devise-security/models/session_limitable.rb +19 -2
  42. data/lib/devise-security/orm/mongoid.rb +7 -0
  43. data/lib/devise-security/patches/confirmations_controller_captcha.rb +2 -0
  44. data/lib/devise-security/patches/confirmations_controller_security_question.rb +2 -0
  45. data/lib/devise-security/patches/controller_captcha.rb +2 -0
  46. data/lib/devise-security/patches/controller_security_question.rb +3 -1
  47. data/lib/devise-security/patches/passwords_controller_captcha.rb +2 -0
  48. data/lib/devise-security/patches/passwords_controller_security_question.rb +2 -0
  49. data/lib/devise-security/patches/registrations_controller_captcha.rb +2 -0
  50. data/lib/devise-security/patches/sessions_controller_captcha.rb +2 -0
  51. data/lib/devise-security/patches/unlocks_controller_captcha.rb +2 -0
  52. data/lib/devise-security/patches/unlocks_controller_security_question.rb +2 -0
  53. data/lib/devise-security/patches.rb +2 -0
  54. data/lib/devise-security/rails.rb +2 -0
  55. data/lib/devise-security/routes.rb +2 -0
  56. data/lib/devise-security/validators/password_complexity_validator.rb +35 -0
  57. data/lib/devise-security/version.rb +3 -1
  58. data/lib/devise-security.rb +16 -10
  59. data/lib/generators/devise_security/install_generator.rb +5 -3
  60. data/lib/generators/templates/devise_security.rb +47 -0
  61. data/test/{test_captcha_controller.rb → controllers/test_captcha_controller.rb} +2 -0
  62. data/test/controllers/test_password_expired_controller.rb +110 -0
  63. data/test/controllers/test_security_question_controller.rb +60 -0
  64. data/test/dummy/Rakefile +3 -1
  65. data/test/dummy/app/assets/config/manifest.js +3 -0
  66. data/test/dummy/app/controllers/application_controller.rb +2 -0
  67. data/test/dummy/app/controllers/captcha/sessions_controller.rb +2 -0
  68. data/test/dummy/app/controllers/security_question/unlocks_controller.rb +2 -0
  69. data/test/dummy/app/controllers/widgets_controller.rb +6 -0
  70. data/test/dummy/app/models/application_record.rb +10 -2
  71. data/test/dummy/app/models/application_user_record.rb +11 -0
  72. data/test/dummy/app/models/captcha_user.rb +7 -2
  73. data/test/dummy/app/models/mongoid/confirmable_fields.rb +13 -0
  74. data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +17 -0
  75. data/test/dummy/app/models/mongoid/expirable_fields.rb +11 -0
  76. data/test/dummy/app/models/mongoid/lockable_fields.rb +13 -0
  77. data/test/dummy/app/models/mongoid/mappings.rb +13 -0
  78. data/test/dummy/app/models/mongoid/omniauthable_fields.rb +11 -0
  79. data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +10 -0
  80. data/test/dummy/app/models/mongoid/password_archivable_fields.rb +9 -0
  81. data/test/dummy/app/models/mongoid/password_expirable_fields.rb +10 -0
  82. data/test/dummy/app/models/mongoid/recoverable_fields.rb +11 -0
  83. data/test/dummy/app/models/mongoid/registerable_fields.rb +19 -0
  84. data/test/dummy/app/models/mongoid/rememberable_fields.rb +10 -0
  85. data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +11 -0
  86. data/test/dummy/app/models/mongoid/security_questionable_fields.rb +13 -0
  87. data/test/dummy/app/models/mongoid/session_limitable_fields.rb +10 -0
  88. data/test/dummy/app/models/mongoid/timeoutable_fields.rb +9 -0
  89. data/test/dummy/app/models/mongoid/trackable_fields.rb +14 -0
  90. data/test/dummy/app/models/mongoid/validatable_fields.rb +7 -0
  91. data/test/dummy/app/models/secure_user.rb +7 -1
  92. data/test/dummy/app/models/security_question_user.rb +9 -4
  93. data/test/dummy/app/models/user.rb +15 -0
  94. data/test/dummy/app/models/widget.rb +6 -0
  95. data/test/dummy/app/mongoid/admin.rb +31 -0
  96. data/test/dummy/app/mongoid/one_user.rb +58 -0
  97. data/test/dummy/app/mongoid/shim.rb +25 -0
  98. data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
  99. data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
  100. data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
  101. data/test/dummy/app/mongoid/user_without_email.rb +35 -0
  102. data/test/dummy/config/application.rb +13 -7
  103. data/test/dummy/config/boot.rb +2 -0
  104. data/test/dummy/config/environment.rb +2 -0
  105. data/test/dummy/config/environments/test.rb +5 -13
  106. data/test/dummy/config/initializers/devise.rb +10 -3
  107. data/test/dummy/config/initializers/migration_class.rb +3 -6
  108. data/test/dummy/config/mongoid.yml +6 -0
  109. data/test/dummy/config/routes.rb +6 -3
  110. data/test/dummy/config.ru +3 -1
  111. data/test/dummy/db/migrate/20120508165529_create_tables.rb +13 -2
  112. data/test/dummy/db/migrate/20150402165590_add_verification_columns.rb +2 -0
  113. data/test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb +2 -0
  114. data/test/dummy/db/migrate/20160320162345_add_security_questions_fields.rb +2 -0
  115. data/test/dummy/db/migrate/20180318103603_add_expireable_columns.rb +2 -0
  116. data/test/dummy/db/migrate/20180318105329_add_confirmable_columns.rb +2 -0
  117. data/test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb +2 -0
  118. data/test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb +2 -0
  119. data/test/dummy/db/migrate/20180319114023_add_widget.rb +2 -0
  120. data/test/dummy/lib/shared_expirable_columns.rb +14 -0
  121. data/test/dummy/lib/shared_security_questions_fields.rb +16 -0
  122. data/test/dummy/lib/shared_user.rb +32 -0
  123. data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
  124. data/test/dummy/lib/shared_user_without_email.rb +28 -0
  125. data/test/dummy/lib/shared_user_without_omniauth.rb +15 -0
  126. data/test/dummy/lib/shared_verification_fields.rb +15 -0
  127. data/test/dummy/log/development.log +883 -0
  128. data/test/dummy/log/test.log +21689 -0
  129. data/test/integration/test_password_expirable_workflow.rb +53 -0
  130. data/test/integration/test_session_limitable_workflow.rb +67 -0
  131. data/test/orm/active_record.rb +15 -0
  132. data/test/orm/mongoid.rb +13 -0
  133. data/test/support/integration_helpers.rb +29 -0
  134. data/test/support/mongoid.yml +6 -0
  135. data/test/test_compatibility.rb +13 -0
  136. data/test/test_complexity_validator.rb +72 -0
  137. data/test/test_helper.rb +42 -9
  138. data/test/test_install_generator.rb +19 -2
  139. data/test/test_paranoid_verification.rb +2 -0
  140. data/test/test_password_archivable.rb +8 -7
  141. data/test/test_password_expirable.rb +70 -7
  142. data/test/test_secure_validatable.rb +97 -21
  143. data/test/test_session_limitable.rb +57 -0
  144. data/{lib/generators/templates → test/tmp/config/initializers}/devise-security.rb +12 -3
  145. data/test/tmp/config/locales/devise.security_extension.by.yml +49 -0
  146. data/test/tmp/config/locales/devise.security_extension.cs.yml +41 -0
  147. data/test/tmp/config/locales/devise.security_extension.de.yml +39 -0
  148. data/test/tmp/config/locales/devise.security_extension.en.yml +41 -0
  149. data/test/tmp/config/locales/devise.security_extension.es.yml +30 -0
  150. data/test/tmp/config/locales/devise.security_extension.fa.yml +41 -0
  151. data/test/tmp/config/locales/devise.security_extension.fr.yml +30 -0
  152. data/test/tmp/config/locales/devise.security_extension.hi.yml +42 -0
  153. data/test/tmp/config/locales/devise.security_extension.it.yml +41 -0
  154. data/test/tmp/config/locales/devise.security_extension.ja.yml +30 -0
  155. data/test/tmp/config/locales/devise.security_extension.nl.yml +41 -0
  156. data/test/tmp/config/locales/devise.security_extension.pt.yml +41 -0
  157. data/test/tmp/config/locales/devise.security_extension.ru.yml +49 -0
  158. data/test/tmp/config/locales/devise.security_extension.tr.yml +18 -0
  159. data/test/tmp/config/locales/devise.security_extension.uk.yml +49 -0
  160. data/test/tmp/config/locales/devise.security_extension.zh_CN.yml +41 -0
  161. data/test/tmp/config/locales/devise.security_extension.zh_TW.yml +41 -0
  162. metadata +235 -110
  163. data/.circleci/config.yml +0 -41
  164. data/.document +0 -5
  165. data/.gitignore +0 -40
  166. data/.rubocop.yml +0 -63
  167. data/.ruby-version +0 -1
  168. data/.travis.yml +0 -25
  169. data/Appraisals +0 -19
  170. data/Gemfile +0 -3
  171. data/Rakefile +0 -28
  172. data/devise-security.gemspec +0 -44
  173. data/gemfiles/rails_4.1_stable.gemfile +0 -8
  174. data/gemfiles/rails_4.2_stable.gemfile +0 -8
  175. data/gemfiles/rails_5.0_stable.gemfile +0 -8
  176. data/gemfiles/rails_5.1_stable.gemfile +0 -8
  177. data/gemfiles/rails_5.2_rc1.gemfile +0 -8
  178. data/lib/devise-security/models/old_password.rb +0 -4
  179. data/lib/devise-security/orm/active_record.rb +0 -18
  180. data/lib/devise-security/schema.rb +0 -64
  181. data/test/dummy/app/models/.gitkeep +0 -0
  182. data/test/test_password_expired_controller.rb +0 -44
  183. data/test/test_security_question_controller.rb +0 -84
data/.rubocop.yml DELETED
@@ -1,63 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.3
3
- Include:
4
- - '**/Rakefile'
5
- - '**/config.ru'
6
- - 'lib/tasks/**/*'
7
- Exclude:
8
- - Gemfile*
9
- - 'db/**/*'
10
- - 'config/**/*'
11
- - 'bin/**/*'
12
- - 'vendor/bundle/**/*'
13
- - 'spec/support/**/*' # rspec support helpers have a strange api
14
-
15
- Rails:
16
- Enabled: true
17
-
18
- # We don't care about method length, since we check method cyclomatic
19
- # complexity.
20
- Metrics/MethodLength:
21
- Enabled: false
22
-
23
- Metrics/LineLength:
24
- Max: 100
25
-
26
- Naming/FileName:
27
- Exclude: ["devise-security.gemspec"]
28
-
29
- Style/ClassAndModuleChildren:
30
- EnforcedStyle: compact
31
- SupportedStyles:
32
- - nested
33
- - compact
34
-
35
- Style/HashSyntax:
36
- EnforcedStyle: ruby19
37
-
38
- Style/SymbolArray:
39
- EnforcedStyle: brackets
40
-
41
- # Trailing commas make for clearer diffs because the last line won't appear
42
- # to have been changed, as it would if it lacked a comma and had one added.
43
- Style/TrailingCommaInArrayLiteral:
44
- EnforcedStyleForMultiline: comma
45
- Style/TrailingCommaInHashLiteral:
46
- EnforcedStyleForMultiline: comma
47
- Style/TrailingCommaInArguments:
48
- EnforcedStyleForMultiline: comma
49
-
50
- # Cop supports --auto-correct.
51
- # Configuration parameters: PreferredDelimiters.
52
- Style/PercentLiteralDelimiters:
53
- PreferredDelimiters:
54
- # Using `[]` for string arrays instead of `()`, since normal arrays are
55
- # indicated with `[]` not `()`.
56
- '%w': '[]'
57
- '%W': '[]'
58
-
59
- Style/AndOr:
60
- # Whether `and` and `or` are banned only in conditionals (conditionals)
61
- # or completely (always).
62
- # They read better, more like normal English.
63
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.2.9
data/.travis.yml DELETED
@@ -1,25 +0,0 @@
1
- language: ruby
2
- before_install: gem install bundler && bundler -v
3
- install: bundle install --jobs=3 --retry=3
4
- before_script: bundle install
5
- script: bundle exec rake
6
- rvm:
7
- - 2.2.9
8
- - 2.3.6
9
- - 2.4.3
10
- - 2.5.0
11
- - ruby-head
12
- matrix:
13
- allow_failures:
14
- - rvm: ruby-head
15
- - gemfile: gemfiles/rails_5.2_rc1.gemfile
16
- - rvm: 2.4.3
17
- gemfile: gemfiles/rails_4.1_stable.gemfile
18
- - rvm: 2.5.0
19
- gemfile: gemfiles/rails_4.1_stable.gemfile
20
- gemfile:
21
- - gemfiles/rails_4.1_stable.gemfile
22
- - gemfiles/rails_4.2_stable.gemfile
23
- - gemfiles/rails_5.0_stable.gemfile
24
- - gemfiles/rails_5.1_stable.gemfile
25
- - gemfiles/rails_5.2_rc1.gemfile
data/Appraisals DELETED
@@ -1,19 +0,0 @@
1
- appraise 'rails-4.1-stable' do
2
- gem 'rails', '~> 4.1.0'
3
- end
4
-
5
- appraise 'rails-4.2-stable' do
6
- gem 'rails', '~> 4.2.0'
7
- end
8
-
9
- appraise 'rails-5.0-stable' do
10
- gem 'rails', '~> 5.0.0'
11
- end
12
-
13
- appraise 'rails-5.1-stable' do
14
- gem 'rails', '~> 5.1.0'
15
- end
16
-
17
- appraise 'rails-5.2-rc1' do
18
- gem 'rails', '~> 5.2.0.rc1'
19
- end
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source "https://rubygems.org"
2
- gemspec
3
- gem 'omniauth'
data/Rakefile DELETED
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
4
- require 'rubygems'
5
- require 'bundler'
6
- require 'rake/testtask'
7
- require 'rdoc/task'
8
- require 'devise-security/version'
9
-
10
- desc 'Default: Run DeviseSecurity unit tests'
11
- task default: :test
12
-
13
- Rake::TestTask.new(:test) do |t|
14
- t.libs << 'lib'
15
- t.libs << 'test'
16
- t.test_files = FileList['test/*test*.rb']
17
- t.verbose = true
18
- t.warning = false
19
- end
20
-
21
- Rake::RDocTask.new do |rdoc|
22
- version = DeviseSecurity::VERSION.dup
23
-
24
- rdoc.rdoc_dir = 'rdoc'
25
- rdoc.title = "devise-security #{version}"
26
- rdoc.rdoc_files.include('README*')
27
- rdoc.rdoc_files.include('lib/**/*.rb')
28
- end
@@ -1,44 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH.push File.expand_path('../lib', __FILE__)
5
- require 'devise-security/version'
6
-
7
- Gem::Specification.new do |s|
8
- s.name = 'devise-security'
9
- s.version = DeviseSecurity::VERSION.dup
10
- s.platform = Gem::Platform::RUBY
11
- s.licenses = ['MIT']
12
- s.summary = 'Security extension for devise'
13
- s.email = 'natebird@gmail.com'
14
- s.homepage = 'https://github.com/devise-security/devise-security'
15
- s.description = 'An enterprise security extension for devise.'
16
- s.authors = [
17
- 'Marco Scholl', 'Alexander Dreher', 'Nate Bird', 'Dillon Welch'
18
- ]
19
-
20
- s.files = `git ls-files`.split("\n")
21
- s.test_files = `git ls-files -- test/*`.split("\n")
22
- s.require_paths = ['lib']
23
- s.required_ruby_version = '>= 2.2.9'
24
-
25
- if RUBY_VERSION >= '2.4'
26
- s.add_runtime_dependency 'rails', '>= 4.1.0', '< 6.0'
27
- else
28
- s.add_runtime_dependency 'railties', '>= 4.1.0', '< 6.0'
29
- end
30
- s.add_runtime_dependency 'devise', '>= 4.2.0', '< 5.0'
31
-
32
- s.add_development_dependency 'appraisal'
33
- s.add_development_dependency 'bundler', '>= 1.3.0', '< 2.0'
34
- s.add_development_dependency 'coveralls', '~> 0.8'
35
- s.add_development_dependency 'easy_captcha', '~> 0'
36
- s.add_development_dependency 'm'
37
- s.add_development_dependency 'minitest', '5.10.3' # see https://github.com/seattlerb/minitest/issues/730
38
- s.add_development_dependency 'pry-byebug'
39
- s.add_development_dependency 'pry-rescue'
40
- s.add_development_dependency 'pry'
41
- s.add_development_dependency 'rails_email_validator', '~> 0'
42
- s.add_development_dependency 'rubocop', '~> 0'
43
- s.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.10'
44
- end
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "omniauth"
6
- gem "rails", "~> 4.1.0"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "omniauth"
6
- gem "rails", "~> 4.2.0"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "omniauth"
6
- gem "rails", "~> 5.0.0"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "omniauth"
6
- gem "rails", "~> 5.1.0"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "omniauth"
6
- gem "rails", "~> 5.2.0.rc1"
7
-
8
- gemspec path: "../"
@@ -1,4 +0,0 @@
1
- require 'active_record'
2
- class OldPassword < ActiveRecord::Base
3
- belongs_to :password_archivable, polymorphic: true
4
- end
@@ -1,18 +0,0 @@
1
- module DeviseSecurity
2
- module Orm
3
- # This module contains some helpers and handle schema (migrations):
4
- #
5
- # create_table :accounts do |t|
6
- # t.password_expirable
7
- # end
8
- #
9
- module ActiveRecord
10
- module Schema
11
- include DeviseSecurity::Schema
12
- end
13
- end
14
- end
15
- end
16
-
17
- ActiveRecord::ConnectionAdapters::Table.send :include, DeviseSecurity::Orm::ActiveRecord::Schema
18
- ActiveRecord::ConnectionAdapters::TableDefinition.send :include, DeviseSecurity::Orm::ActiveRecord::Schema
@@ -1,64 +0,0 @@
1
- module DeviseSecurity
2
- # add schema helper for migrations
3
- module Schema
4
- # Add password_changed_at columns in the resource's database table.
5
- #
6
- # Examples
7
- #
8
- # # For a new resource migration:
9
- # create_table :the_resources do |t|
10
- # t.password_expirable
11
- # ...
12
- # end
13
- #
14
- # # or if the resource's table already exists, define a migration and put this in:
15
- # change_table :the_resources do |t|
16
- # t.datetime :password_changed_at
17
- # end
18
- #
19
- def password_expirable
20
- apply_devise_schema :password_changed_at, DateTime
21
- end
22
-
23
- # Add password_archivable columns
24
- #
25
- # Examples
26
- #
27
- # create_table :old_passwords do
28
- # t.password_archivable
29
- # end
30
- # add_index :old_passwords, [:password_archivable_type, :password_archivable_id], name: :index_password_archivable
31
- #
32
- def password_archivable
33
- apply_devise_schema :encrypted_password, String, limit: 128, null: false
34
- apply_devise_schema :password_salt, String
35
- apply_devise_schema :password_archivable_id, Integer, null: false
36
- apply_devise_schema :password_archivable_type, String, null: false
37
- apply_devise_schema :created_at, DateTime
38
- end
39
-
40
- # Add session_limitable columns in the resource's database table.
41
- #
42
- # Examples
43
- #
44
- # # For a new resource migration:
45
- # create_table :the_resources do |t|
46
- # t.session_limitable
47
- # ...
48
- # end
49
- #
50
- # # or if the resource's table already exists, define a migration and put this in:
51
- # change_table :the_resources do |t|
52
- # t.string :unique_session_id, limit: 20
53
- # end
54
- #
55
- def session_limitable
56
- apply_devise_schema :unique_session_id, String, limit: 20
57
- end
58
-
59
- def expirable
60
- apply_devise_schema :expired_at, DateTime
61
- apply_devise_schema :last_activity_at, DateTime
62
- end
63
- end
64
- end
File without changes
@@ -1,44 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Devise::PasswordExpiredControllerTest < ActionController::TestCase
4
- include Devise::Test::ControllerHelpers
5
-
6
- setup do
7
- @request.env["devise.mapping"] = Devise.mappings[:user]
8
- @user = User.create!(
9
- username: 'hello',
10
- email: 'hello@path.travel',
11
- password: 'Password4',
12
- password_changed_at: 4.months.ago,
13
- confirmed_at: 5.months.ago
14
- )
15
- assert @user.valid?
16
- sign_in(@user)
17
- end
18
-
19
- test 'should render show' do
20
- get :show
21
- assert_includes @response.body, 'Renew your password'
22
- end
23
-
24
- test 'should update password' do
25
- if Rails.version < "5"
26
- put :update, {
27
- user: {
28
- current_password: 'Password4',
29
- password: 'Password5',
30
- password_confirmation: 'Password5'
31
- }
32
- }
33
- else
34
- put :update, params: {
35
- user: {
36
- current_password: 'Password4',
37
- password: 'Password5',
38
- password_confirmation: 'Password5'
39
- }
40
- }
41
- end
42
- assert_redirected_to root_path
43
- end
44
- end
@@ -1,84 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestWithSecurityQuestion < ActionController::TestCase
4
- include Devise::Test::ControllerHelpers
5
- tests SecurityQuestion::UnlocksController
6
-
7
- setup do
8
- @user = User.create(username: 'hello', email: 'hello@path.travel',
9
- password: '1234', security_question_answer: 'Right Answer')
10
- @user.lock_access!
11
-
12
- @request.env['devise.mapping'] = Devise.mappings[:security_question_user]
13
- end
14
-
15
- test 'When security question is enabled, it is inserted correctly' do
16
- if Rails.version < "5"
17
- post :create, {
18
- security_question_user: {
19
- email: @user.email
20
- }, security_question_answer: "wrong answer"
21
- }
22
- else
23
- post :create, params: {
24
- security_question_user: {
25
- email: @user.email
26
- }, security_question_answer: "wrong answer"
27
- }
28
- end
29
-
30
- assert_equal 'The security question answer was invalid.', flash[:alert]
31
- assert_redirected_to new_security_question_user_unlock_path
32
- end
33
-
34
- test 'When security_question is valid, it runs as normal' do
35
- if Rails.version < "5"
36
- post :create, {
37
- security_question_user: {
38
- email: @user.email
39
- }, security_question_answer: @user.security_question_answer
40
- }
41
- else
42
- post :create, params: {
43
- security_question_user: {
44
- email: @user.email
45
- }, security_question_answer: @user.security_question_answer
46
- }
47
- end
48
-
49
- assert_equal 'You will receive an email with instructions for how to unlock your account in a few minutes.', flash[:notice]
50
- assert_redirected_to new_security_question_user_session_path
51
- end
52
- end
53
-
54
- class TestWithoutSecurityQuestion < ActionController::TestCase
55
- include Devise::Test::ControllerHelpers
56
- tests Devise::UnlocksController
57
-
58
- setup do
59
- @user = User.create(username: 'hello', email: 'hello@path.travel',
60
- password: '1234', security_question_answer: 'Right Answer')
61
- @user.lock_access!
62
-
63
- @request.env['devise.mapping'] = Devise.mappings[:user]
64
- end
65
-
66
- test 'When security question is not enabled it is not inserted' do
67
- if Rails.version < "5"
68
- post :create, {
69
- user: {
70
- email: @user.email
71
- }
72
- }
73
- else
74
- post :create, params: {
75
- user: {
76
- email: @user.email
77
- }
78
- }
79
- end
80
-
81
- assert_equal 'You will receive an email with instructions for how to unlock your account in a few minutes.', flash[:notice]
82
- assert_redirected_to new_user_session_path
83
- end
84
- end