devise 4.3.0 → 4.9.2

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 (259) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +205 -2
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +214 -57
  5. data/app/controllers/devise/confirmations_controller.rb +3 -0
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +3 -1
  7. data/app/controllers/devise/passwords_controller.rb +5 -2
  8. data/app/controllers/devise/registrations_controller.rb +32 -12
  9. data/app/controllers/devise/sessions_controller.rb +4 -2
  10. data/app/controllers/devise/unlocks_controller.rb +3 -0
  11. data/app/controllers/devise_controller.rb +6 -3
  12. data/app/helpers/devise_helper.rb +23 -18
  13. data/app/mailers/devise/mailer.rb +7 -5
  14. data/app/views/devise/confirmations/new.html.erb +2 -2
  15. data/app/views/devise/passwords/edit.html.erb +3 -3
  16. data/app/views/devise/passwords/new.html.erb +2 -2
  17. data/app/views/devise/registrations/edit.html.erb +6 -6
  18. data/app/views/devise/registrations/new.html.erb +4 -4
  19. data/app/views/devise/sessions/new.html.erb +4 -4
  20. data/app/views/devise/shared/_error_messages.html.erb +15 -0
  21. data/app/views/devise/shared/_links.html.erb +8 -8
  22. data/app/views/devise/unlocks/new.html.erb +2 -2
  23. data/config/locales/en.yml +3 -2
  24. data/lib/devise/controllers/helpers.rb +10 -8
  25. data/lib/devise/controllers/rememberable.rb +2 -0
  26. data/lib/devise/controllers/responder.rb +35 -0
  27. data/lib/devise/controllers/scoped_views.rb +2 -0
  28. data/lib/devise/controllers/sign_in_out.rb +14 -4
  29. data/lib/devise/controllers/store_location.rb +24 -6
  30. data/lib/devise/controllers/url_helpers.rb +3 -1
  31. data/lib/devise/delegator.rb +2 -0
  32. data/lib/devise/encryptor.rb +2 -0
  33. data/lib/devise/failure_app.rb +33 -7
  34. data/lib/devise/hooks/activatable.rb +2 -0
  35. data/lib/devise/hooks/csrf_cleaner.rb +8 -1
  36. data/lib/devise/hooks/forgetable.rb +2 -0
  37. data/lib/devise/hooks/lockable.rb +4 -5
  38. data/lib/devise/hooks/proxy.rb +2 -0
  39. data/lib/devise/hooks/rememberable.rb +2 -0
  40. data/lib/devise/hooks/timeoutable.rb +4 -2
  41. data/lib/devise/hooks/trackable.rb +2 -0
  42. data/lib/devise/mailers/helpers.rb +2 -0
  43. data/lib/devise/mapping.rb +3 -1
  44. data/lib/devise/models/authenticatable.rb +55 -50
  45. data/lib/devise/models/confirmable.rb +36 -40
  46. data/lib/devise/models/database_authenticatable.rb +57 -36
  47. data/lib/devise/models/lockable.rb +18 -4
  48. data/lib/devise/models/omniauthable.rb +4 -2
  49. data/lib/devise/models/recoverable.rb +10 -19
  50. data/lib/devise/models/registerable.rb +4 -0
  51. data/lib/devise/models/rememberable.rb +5 -3
  52. data/lib/devise/models/timeoutable.rb +3 -1
  53. data/lib/devise/models/trackable.rb +15 -1
  54. data/lib/devise/models/validatable.rb +7 -10
  55. data/lib/devise/models.rb +3 -0
  56. data/lib/devise/modules.rb +2 -0
  57. data/lib/devise/omniauth/config.rb +2 -0
  58. data/lib/devise/omniauth/url_helpers.rb +2 -0
  59. data/lib/devise/omniauth.rb +4 -5
  60. data/lib/devise/orm/active_record.rb +2 -0
  61. data/lib/devise/orm/mongoid.rb +2 -0
  62. data/lib/devise/orm.rb +71 -0
  63. data/lib/devise/parameter_filter.rb +4 -0
  64. data/lib/devise/parameter_sanitizer.rb +15 -1
  65. data/lib/devise/rails/deprecated_constant_accessor.rb +39 -0
  66. data/lib/devise/rails/routes.rb +8 -6
  67. data/lib/devise/rails/warden_compat.rb +2 -0
  68. data/lib/devise/rails.rb +3 -5
  69. data/lib/devise/secret_key_finder.rb +27 -0
  70. data/lib/devise/strategies/authenticatable.rb +3 -1
  71. data/lib/devise/strategies/base.rb +2 -0
  72. data/lib/devise/strategies/database_authenticatable.rb +8 -1
  73. data/lib/devise/strategies/rememberable.rb +2 -0
  74. data/lib/devise/test/controller_helpers.rb +6 -1
  75. data/lib/devise/test/integration_helpers.rb +3 -1
  76. data/lib/devise/test_helpers.rb +2 -0
  77. data/lib/devise/time_inflector.rb +2 -0
  78. data/lib/devise/token_generator.rb +2 -0
  79. data/lib/devise/version.rb +3 -1
  80. data/lib/devise.rb +38 -12
  81. data/lib/generators/active_record/devise_generator.rb +40 -12
  82. data/lib/generators/active_record/templates/migration.rb +3 -1
  83. data/lib/generators/active_record/templates/migration_existing.rb +2 -0
  84. data/lib/generators/devise/controllers_generator.rb +3 -1
  85. data/lib/generators/devise/devise_generator.rb +5 -3
  86. data/lib/generators/devise/install_generator.rb +3 -5
  87. data/lib/generators/devise/orm_helpers.rb +9 -3
  88. data/lib/generators/devise/views_generator.rb +8 -9
  89. data/lib/generators/mongoid/devise_generator.rb +7 -5
  90. data/lib/generators/templates/README +9 -1
  91. data/lib/generators/templates/controllers/confirmations_controller.rb +2 -0
  92. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +3 -1
  93. data/lib/generators/templates/controllers/passwords_controller.rb +2 -0
  94. data/lib/generators/templates/controllers/registrations_controller.rb +2 -0
  95. data/lib/generators/templates/controllers/sessions_controller.rb +2 -0
  96. data/lib/generators/templates/controllers/unlocks_controller.rb +2 -0
  97. data/lib/generators/templates/devise.rb +43 -7
  98. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +5 -1
  99. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +10 -2
  100. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +4 -1
  101. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +12 -4
  102. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +11 -3
  103. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +7 -2
  104. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +4 -1
  105. metadata +24 -307
  106. data/.gitignore +0 -10
  107. data/.travis.yml +0 -58
  108. data/.yardopts +0 -9
  109. data/CODE_OF_CONDUCT.md +0 -22
  110. data/CONTRIBUTING.md +0 -79
  111. data/Gemfile +0 -40
  112. data/Gemfile.lock +0 -194
  113. data/Rakefile +0 -36
  114. data/bin/test +0 -13
  115. data/devise.gemspec +0 -26
  116. data/devise.png +0 -0
  117. data/gemfiles/Gemfile.rails-4.1-stable +0 -30
  118. data/gemfiles/Gemfile.rails-4.1-stable.lock +0 -171
  119. data/gemfiles/Gemfile.rails-4.2-stable +0 -30
  120. data/gemfiles/Gemfile.rails-4.2-stable.lock +0 -192
  121. data/gemfiles/Gemfile.rails-5.0-stable +0 -34
  122. data/gemfiles/Gemfile.rails-5.0-stable.lock +0 -193
  123. data/guides/bug_report_templates/integration_test.rb +0 -104
  124. data/test/controllers/custom_registrations_controller_test.rb +0 -40
  125. data/test/controllers/custom_strategy_test.rb +0 -64
  126. data/test/controllers/helper_methods_test.rb +0 -22
  127. data/test/controllers/helpers_test.rb +0 -316
  128. data/test/controllers/inherited_controller_i18n_messages_test.rb +0 -51
  129. data/test/controllers/internal_helpers_test.rb +0 -127
  130. data/test/controllers/load_hooks_controller_test.rb +0 -19
  131. data/test/controllers/passwords_controller_test.rb +0 -32
  132. data/test/controllers/sessions_controller_test.rb +0 -106
  133. data/test/controllers/url_helpers_test.rb +0 -65
  134. data/test/delegator_test.rb +0 -19
  135. data/test/devise_test.rb +0 -107
  136. data/test/failure_app_test.rb +0 -338
  137. data/test/generators/active_record_generator_test.rb +0 -83
  138. data/test/generators/controllers_generator_test.rb +0 -48
  139. data/test/generators/devise_generator_test.rb +0 -39
  140. data/test/generators/install_generator_test.rb +0 -24
  141. data/test/generators/mongoid_generator_test.rb +0 -23
  142. data/test/generators/views_generator_test.rb +0 -103
  143. data/test/helpers/devise_helper_test.rb +0 -49
  144. data/test/integration/authenticatable_test.rb +0 -698
  145. data/test/integration/confirmable_test.rb +0 -324
  146. data/test/integration/database_authenticatable_test.rb +0 -95
  147. data/test/integration/http_authenticatable_test.rb +0 -106
  148. data/test/integration/lockable_test.rb +0 -240
  149. data/test/integration/mounted_engine_test.rb +0 -36
  150. data/test/integration/omniauthable_test.rb +0 -135
  151. data/test/integration/recoverable_test.rb +0 -347
  152. data/test/integration/registerable_test.rb +0 -363
  153. data/test/integration/rememberable_test.rb +0 -217
  154. data/test/integration/timeoutable_test.rb +0 -184
  155. data/test/integration/trackable_test.rb +0 -92
  156. data/test/mailers/confirmation_instructions_test.rb +0 -115
  157. data/test/mailers/email_changed_test.rb +0 -130
  158. data/test/mailers/mailer_test.rb +0 -18
  159. data/test/mailers/reset_password_instructions_test.rb +0 -96
  160. data/test/mailers/unlock_instructions_test.rb +0 -91
  161. data/test/mapping_test.rb +0 -134
  162. data/test/models/authenticatable_test.rb +0 -23
  163. data/test/models/confirmable_test.rb +0 -536
  164. data/test/models/database_authenticatable_test.rb +0 -281
  165. data/test/models/lockable_test.rb +0 -350
  166. data/test/models/omniauthable_test.rb +0 -7
  167. data/test/models/recoverable_test.rb +0 -261
  168. data/test/models/registerable_test.rb +0 -7
  169. data/test/models/rememberable_test.rb +0 -182
  170. data/test/models/serializable_test.rb +0 -54
  171. data/test/models/timeoutable_test.rb +0 -51
  172. data/test/models/trackable_test.rb +0 -41
  173. data/test/models/validatable_test.rb +0 -119
  174. data/test/models_test.rb +0 -153
  175. data/test/omniauth/config_test.rb +0 -59
  176. data/test/omniauth/url_helpers_test.rb +0 -51
  177. data/test/orm/active_record.rb +0 -17
  178. data/test/orm/mongoid.rb +0 -13
  179. data/test/parameter_sanitizer_test.rb +0 -75
  180. data/test/rails_app/Rakefile +0 -6
  181. data/test/rails_app/app/active_record/admin.rb +0 -6
  182. data/test/rails_app/app/active_record/shim.rb +0 -2
  183. data/test/rails_app/app/active_record/user.rb +0 -7
  184. data/test/rails_app/app/active_record/user_on_engine.rb +0 -7
  185. data/test/rails_app/app/active_record/user_on_main_app.rb +0 -7
  186. data/test/rails_app/app/active_record/user_without_email.rb +0 -8
  187. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  188. data/test/rails_app/app/controllers/admins_controller.rb +0 -6
  189. data/test/rails_app/app/controllers/application_controller.rb +0 -11
  190. data/test/rails_app/app/controllers/application_with_fake_engine.rb +0 -30
  191. data/test/rails_app/app/controllers/custom/registrations_controller.rb +0 -31
  192. data/test/rails_app/app/controllers/home_controller.rb +0 -29
  193. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  194. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  195. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  196. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  197. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  198. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +0 -3
  199. data/test/rails_app/app/mailers/users/mailer.rb +0 -3
  200. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +0 -4
  201. data/test/rails_app/app/mongoid/admin.rb +0 -29
  202. data/test/rails_app/app/mongoid/shim.rb +0 -23
  203. data/test/rails_app/app/mongoid/user.rb +0 -39
  204. data/test/rails_app/app/mongoid/user_on_engine.rb +0 -39
  205. data/test/rails_app/app/mongoid/user_on_main_app.rb +0 -39
  206. data/test/rails_app/app/mongoid/user_without_email.rb +0 -33
  207. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  208. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  209. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  210. data/test/rails_app/app/views/home/index.html.erb +0 -1
  211. data/test/rails_app/app/views/home/join.html.erb +0 -1
  212. data/test/rails_app/app/views/home/private.html.erb +0 -1
  213. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  214. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  215. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  216. data/test/rails_app/app/views/users/index.html.erb +0 -1
  217. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  218. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  219. data/test/rails_app/bin/bundle +0 -3
  220. data/test/rails_app/bin/rails +0 -4
  221. data/test/rails_app/bin/rake +0 -4
  222. data/test/rails_app/config/application.rb +0 -44
  223. data/test/rails_app/config/boot.rb +0 -20
  224. data/test/rails_app/config/database.yml +0 -18
  225. data/test/rails_app/config/environment.rb +0 -5
  226. data/test/rails_app/config/environments/development.rb +0 -30
  227. data/test/rails_app/config/environments/production.rb +0 -86
  228. data/test/rails_app/config/environments/test.rb +0 -45
  229. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  230. data/test/rails_app/config/initializers/devise.rb +0 -180
  231. data/test/rails_app/config/initializers/inflections.rb +0 -2
  232. data/test/rails_app/config/initializers/secret_token.rb +0 -3
  233. data/test/rails_app/config/initializers/session_store.rb +0 -1
  234. data/test/rails_app/config/routes.rb +0 -126
  235. data/test/rails_app/config.ru +0 -4
  236. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -75
  237. data/test/rails_app/db/schema.rb +0 -55
  238. data/test/rails_app/lib/shared_admin.rb +0 -21
  239. data/test/rails_app/lib/shared_user.rb +0 -30
  240. data/test/rails_app/lib/shared_user_without_email.rb +0 -26
  241. data/test/rails_app/lib/shared_user_without_omniauth.rb +0 -13
  242. data/test/rails_app/public/404.html +0 -26
  243. data/test/rails_app/public/422.html +0 -26
  244. data/test/rails_app/public/500.html +0 -26
  245. data/test/rails_app/public/favicon.ico +0 -0
  246. data/test/rails_test.rb +0 -9
  247. data/test/routes_test.rb +0 -279
  248. data/test/support/action_controller/record_identifier.rb +0 -10
  249. data/test/support/assertions.rb +0 -28
  250. data/test/support/helpers.rb +0 -77
  251. data/test/support/http_method_compatibility.rb +0 -51
  252. data/test/support/integration.rb +0 -92
  253. data/test/support/locale/en.yml +0 -8
  254. data/test/support/mongoid.yml +0 -6
  255. data/test/support/webrat/integrations/rails.rb +0 -33
  256. data/test/test/controller_helpers_test.rb +0 -186
  257. data/test/test/integration_helpers_test.rb +0 -32
  258. data/test/test_helper.rb +0 -34
  259. data/test/test_models.rb +0 -33
@@ -1,119 +0,0 @@
1
- # encoding: UTF-8
2
- require 'test_helper'
3
-
4
- class ValidatableTest < ActiveSupport::TestCase
5
- test 'should require email to be set' do
6
- user = new_user(email: nil)
7
- assert user.invalid?
8
- assert user.errors[:email]
9
- assert_equal 'can\'t be blank', user.errors[:email].join
10
- end
11
-
12
- test 'should require uniqueness of email if email has changed, allowing blank' do
13
- existing_user = create_user
14
-
15
- user = new_user(email: '')
16
- assert user.invalid?
17
- assert_no_match(/taken/, user.errors[:email].join)
18
-
19
- user.email = existing_user.email
20
- assert user.invalid?
21
- assert_match(/taken/, user.errors[:email].join)
22
-
23
- user.save(validate: false)
24
- assert user.valid?
25
- end
26
-
27
- test 'should require correct email format if email has changed, allowing blank' do
28
- user = new_user(email: '')
29
- assert user.invalid?
30
- assert_not_equal 'is invalid', user.errors[:email].join
31
-
32
- %w{invalid_email_format 123 $$$ () ☃}.each do |email|
33
- user.email = email
34
- assert user.invalid?, 'should be invalid with email ' << email
35
- assert_equal 'is invalid', user.errors[:email].join
36
- end
37
-
38
- user.save(validate: false)
39
- assert user.valid?
40
- end
41
-
42
- test 'should accept valid emails' do
43
- %w(a.b.c@example.com test_mail@gmail.com any@any.net email@test.br 123@mail.test 1☃3@mail.test).each do |email|
44
- user = new_user(email: email)
45
- assert user.valid?, 'should be valid with email ' << email
46
- assert_blank user.errors[:email]
47
- end
48
- end
49
-
50
- test 'should require password to be set when creating a new record' do
51
- user = new_user(password: '', password_confirmation: '')
52
- assert user.invalid?
53
- assert_equal 'can\'t be blank', user.errors[:password].join
54
- end
55
-
56
- test 'should require confirmation to be set when creating a new record' do
57
- user = new_user(password: 'new_password', password_confirmation: 'blabla')
58
- assert user.invalid?
59
-
60
- assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
61
- end
62
-
63
- test 'should require password when updating/resetting password' do
64
- user = create_user
65
-
66
- user.password = ''
67
- user.password_confirmation = ''
68
-
69
- assert user.invalid?
70
- assert_equal 'can\'t be blank', user.errors[:password].join
71
- end
72
-
73
- test 'should require confirmation when updating/resetting password' do
74
- user = create_user
75
- user.password_confirmation = 'another_password'
76
- assert user.invalid?
77
-
78
- assert_equal 'doesn\'t match Password', user.errors[:password_confirmation].join
79
- end
80
-
81
- test 'should require a password with minimum of 7 characters' do
82
- user = new_user(password: '12345', password_confirmation: '12345')
83
- assert user.invalid?
84
- assert_equal 'is too short (minimum is 7 characters)', user.errors[:password].join
85
- end
86
-
87
- test 'should require a password with maximum of 72 characters long' do
88
- user = new_user(password: 'x'*73, password_confirmation: 'x'*73)
89
- assert user.invalid?
90
- assert_equal 'is too long (maximum is 72 characters)', user.errors[:password].join
91
- end
92
-
93
- test 'should not require password length when it\'s not changed' do
94
- user = create_user.reload
95
- user.password = user.password_confirmation = nil
96
- assert user.valid?
97
-
98
- user.password_confirmation = 'confirmation'
99
- assert user.invalid?
100
- refute (user.errors[:password].join =~ /is too long/)
101
- end
102
-
103
- test 'should complain about length even if password is not required' do
104
- user = new_user(password: 'x'*73, password_confirmation: 'x'*73)
105
- user.stubs(:password_required?).returns(false)
106
- assert user.invalid?
107
- assert_equal 'is too long (maximum is 72 characters)', user.errors[:password].join
108
- end
109
-
110
- test 'should not be included in objects with invalid API' do
111
- assert_raise RuntimeError do
112
- Class.new.send :include, Devise::Models::Validatable
113
- end
114
- end
115
-
116
- test 'required_fields should be an empty array' do
117
- assert_equal Devise::Models::Validatable.required_fields(User), []
118
- end
119
- end
data/test/models_test.rb DELETED
@@ -1,153 +0,0 @@
1
- require 'test_helper'
2
- require 'test_models'
3
-
4
- class ActiveRecordTest < ActiveSupport::TestCase
5
- def include_module?(klass, mod)
6
- klass.devise_modules.include?(mod) &&
7
- klass.included_modules.include?(Devise::Models::const_get(mod.to_s.classify))
8
- end
9
-
10
- def assert_include_modules(klass, *modules)
11
- modules.each do |mod|
12
- assert include_module?(klass, mod)
13
- end
14
-
15
- (Devise::ALL - modules).each do |mod|
16
- refute include_module?(klass, mod)
17
- end
18
- end
19
-
20
- test 'can cherry pick modules' do
21
- assert_include_modules Admin, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :confirmable
22
- end
23
-
24
- test 'validations options are not applied too late' do
25
- validators = WithValidation.validators_on :password
26
- length = validators.find { |v| v.kind == :length }
27
- assert_equal 2, length.options[:minimum]
28
- assert_equal 6, length.options[:maximum]
29
- end
30
-
31
- test 'validations are applied just once' do
32
- validators = Several.validators_on :password
33
- assert_equal 1, validators.select{ |v| v.kind == :length }.length
34
- end
35
-
36
- test 'chosen modules are inheritable' do
37
- assert_include_modules Inheritable, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :confirmable
38
- end
39
-
40
- test 'order of module inclusion' do
41
- correct_module_order = [:database_authenticatable, :recoverable, :registerable, :confirmable, :lockable, :timeoutable]
42
- incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable, :recoverable, :lockable, :confirmable]
43
-
44
- assert_include_modules Admin, *incorrect_module_order
45
-
46
- # get module constants from symbol list
47
- module_constants = correct_module_order.collect { |mod| Devise::Models::const_get(mod.to_s.classify) }
48
-
49
- # confirm that they adhere to the order in ALL
50
- # get included modules, filter out the noise, and reverse the order
51
- assert_equal module_constants, (Admin.included_modules & module_constants).reverse
52
- end
53
-
54
- test 'raise error on invalid module' do
55
- assert_raise NameError do
56
- # Mix valid an invalid modules.
57
- Configurable.class_eval { devise :database_authenticatable, :doesnotexit }
58
- end
59
- end
60
-
61
- test 'set a default value for stretches' do
62
- assert_equal 15, Configurable.stretches
63
- end
64
-
65
- test 'set a default value for pepper' do
66
- assert_equal 'abcdef', Configurable.pepper
67
- end
68
-
69
- test 'set a default value for allow_unconfirmed_access_for' do
70
- assert_equal 5.days, Configurable.allow_unconfirmed_access_for
71
- end
72
-
73
- test 'set a default value for remember_for' do
74
- assert_equal 7.days, Configurable.remember_for
75
- end
76
-
77
- test 'set a default value for timeout_in' do
78
- assert_equal 15.minutes, Configurable.timeout_in
79
- end
80
-
81
- test 'set a default value for unlock_in' do
82
- assert_equal 10.days, Configurable.unlock_in
83
- end
84
-
85
- test 'set null fields on migrations' do
86
- # Ignore email sending since no email exists.
87
- klass = Class.new(Admin) do
88
- def send_devise_notification(*); end
89
- end
90
-
91
- klass.create!
92
- end
93
- end
94
-
95
- module StubModelFilters
96
- def stub_filter(name)
97
- define_singleton_method(name) { |*| nil }
98
- end
99
- end
100
-
101
- class CheckFieldsTest < ActiveSupport::TestCase
102
- test 'checks if the class respond_to the required fields' do
103
- Player = Class.new do
104
- extend Devise::Models
105
- extend StubModelFilters
106
-
107
- stub_filter :before_validation
108
- stub_filter :after_update
109
-
110
- devise :database_authenticatable
111
-
112
- attr_accessor :encrypted_password, :email
113
- end
114
-
115
- assert_nothing_raised do
116
- Devise::Models.check_fields!(Player)
117
- end
118
- end
119
-
120
- test 'raises Devise::Models::MissingAtrribute and shows the missing attribute if the class doesn\'t respond_to one of the attributes' do
121
- Clown = Class.new do
122
- extend Devise::Models
123
- extend StubModelFilters
124
-
125
- stub_filter :before_validation
126
- stub_filter :after_update
127
-
128
- devise :database_authenticatable
129
-
130
- attr_accessor :encrypted_password
131
- end
132
-
133
- assert_raise_with_message Devise::Models::MissingAttribute, "The following attribute(s) is (are) missing on your model: email" do
134
- Devise::Models.check_fields!(Clown)
135
- end
136
- end
137
-
138
- test 'raises Devise::Models::MissingAtrribute with all the missing attributes if there is more than one' do
139
- Magician = Class.new do
140
- extend Devise::Models
141
- extend StubModelFilters
142
-
143
- stub_filter :before_validation
144
- stub_filter :after_update
145
-
146
- devise :database_authenticatable
147
- end
148
-
149
- assert_raise_with_message Devise::Models::MissingAttribute, "The following attribute(s) is (are) missing on your model: encrypted_password, email" do
150
- Devise::Models.check_fields!(Magician)
151
- end
152
- end
153
- end
@@ -1,59 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OmniAuthConfigTest < ActiveSupport::TestCase
4
- class MyStrategy
5
- include OmniAuth::Strategy
6
- end
7
-
8
- test 'strategy_name returns provider if no options given' do
9
- config = Devise::OmniAuth::Config.new :facebook, [{}]
10
- assert_equal :facebook, config.strategy_name
11
- end
12
-
13
- test 'strategy_name returns provider if no name option are given' do
14
- config = Devise::OmniAuth::Config.new :facebook, [{ other: :option }]
15
- assert_equal :facebook, config.strategy_name
16
- end
17
-
18
- test 'returns name option when have a name' do
19
- config = Devise::OmniAuth::Config.new :facebook, [{ name: :github }]
20
- assert_equal :github, config.strategy_name
21
- end
22
-
23
- test "finds contrib strategies" do
24
- config = Devise::OmniAuth::Config.new :facebook, [{}]
25
- assert_equal OmniAuth::Strategies::Facebook, config.strategy_class
26
- end
27
-
28
- class NamedTestStrategy
29
- include OmniAuth::Strategy
30
- option :name, :the_one
31
- end
32
-
33
- test "finds the strategy in OmniAuth's list by name" do
34
- config = Devise::OmniAuth::Config.new :the_one, [{}]
35
- assert_equal NamedTestStrategy, config.strategy_class
36
- end
37
-
38
- class UnNamedTestStrategy
39
- include OmniAuth::Strategy
40
- end
41
-
42
- test "finds the strategy in OmniAuth's list by class name" do
43
- config = Devise::OmniAuth::Config.new :un_named_test_strategy, [{}]
44
- assert_equal UnNamedTestStrategy, config.strategy_class
45
- end
46
-
47
- test 'raises an error if strategy cannot be found' do
48
- config = Devise::OmniAuth::Config.new :my_other_strategy, [{}]
49
- assert_raise Devise::OmniAuth::StrategyNotFound do
50
- config.strategy_class
51
- end
52
- end
53
-
54
- test 'allows the user to define a custom require path' do
55
- config = Devise::OmniAuth::Config.new :my_strategy, [{strategy_class: MyStrategy}]
56
- config_class = config.strategy_class
57
- assert_equal MyStrategy, config_class
58
- end
59
- end
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OmniAuthRoutesTest < ActionController::TestCase
4
- tests ApplicationController
5
-
6
- def assert_path(action, provider, with_param=true)
7
- # Resource param
8
- assert_equal @controller.send(action, :user, provider),
9
- @controller.send("user_#{provider}_#{action}")
10
-
11
- # With an object
12
- assert_equal @controller.send(action, User.new, provider),
13
- @controller.send("user_#{provider}_#{action}")
14
-
15
- if with_param
16
- # Default url params
17
- assert_equal @controller.send(action, :user, provider, param: 123),
18
- @controller.send("user_#{provider}_#{action}", param: 123)
19
- end
20
- end
21
-
22
- test 'should alias omniauth_callback to mapped user auth_callback' do
23
- assert_path :omniauth_callback_path, :facebook
24
- end
25
-
26
- test 'should alias omniauth_authorize to mapped user auth_authorize' do
27
- assert_path :omniauth_authorize_path, :facebook, false
28
- end
29
-
30
- test 'should generate authorization path' do
31
- assert_match "/users/auth/facebook", @controller.omniauth_authorize_path(:user, :facebook)
32
-
33
- assert_raise NoMethodError do
34
- @controller.omniauth_authorize_path(:user, :github)
35
- end
36
- end
37
-
38
- test 'should generate authorization path for named open_id omniauth' do
39
- assert_match "/users/auth/google", @controller.omniauth_authorize_path(:user, :google)
40
- end
41
-
42
- test 'should generate authorization path with params' do
43
- assert_match "/users/auth/openid?openid_url=http%3A%2F%2Fyahoo.com",
44
- @controller.omniauth_authorize_path(:user, :openid, openid_url: "http://yahoo.com")
45
- end
46
-
47
- test 'should not add a "?" if no param was sent' do
48
- assert_equal "/users/auth/openid",
49
- @controller.omniauth_authorize_path(:user, :openid)
50
- end
51
- end
@@ -1,17 +0,0 @@
1
- ActiveRecord::Migration.verbose = false
2
- ActiveRecord::Base.logger = Logger.new(nil)
3
- ActiveRecord::Base.include_root_in_json = true
4
-
5
- ActiveRecord::Migrator.migrate(File.expand_path("../../rails_app/db/migrate/", __FILE__))
6
-
7
- class ActiveSupport::TestCase
8
- if Devise::Test.rails5?
9
- self.use_transactional_tests = true
10
- else
11
- # Let `after_commit` work with transactional fixtures, however this is not needed for Rails 5.
12
- require 'test_after_commit'
13
- self.use_transactional_fixtures = true
14
- end
15
-
16
- self.use_instantiated_fixtures = false
17
- end
data/test/orm/mongoid.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'mongoid/version'
2
-
3
- Mongoid.configure do |config|
4
- config.load!('test/support/mongoid.yml')
5
- config.use_utc = true
6
- config.include_root_in_json = true
7
- end
8
-
9
- class ActiveSupport::TestCase
10
- setup do
11
- Mongoid.purge!
12
- end
13
- end
@@ -1,75 +0,0 @@
1
- require 'test_helper'
2
- require 'devise/parameter_sanitizer'
3
-
4
- class ParameterSanitizerTest < ActiveSupport::TestCase
5
- def sanitizer(params)
6
- params = ActionController::Parameters.new(params)
7
- Devise::ParameterSanitizer.new(User, :user, params)
8
- end
9
-
10
- test 'permits the default parameters for sign in' do
11
- sanitizer = sanitizer('user' => { 'email' => 'jose' })
12
- sanitized = sanitizer.sanitize(:sign_in)
13
-
14
- assert_equal({ 'email' => 'jose' }, sanitized)
15
- end
16
-
17
- test 'permits the default parameters for sign up' do
18
- sanitizer = sanitizer('user' => { 'email' => 'jose', 'role' => 'invalid' })
19
- sanitized = sanitizer.sanitize(:sign_up)
20
-
21
- assert_equal({ 'email' => 'jose' }, sanitized)
22
- end
23
-
24
- test 'permits the default parameters for account update' do
25
- sanitizer = sanitizer('user' => { 'email' => 'jose', 'role' => 'invalid' })
26
- sanitized = sanitizer.sanitize(:account_update)
27
-
28
- assert_equal({ 'email' => 'jose' }, sanitized)
29
- end
30
-
31
- test 'permits news parameters for an existing action' do
32
- sanitizer = sanitizer('user' => { 'username' => 'jose' })
33
- sanitizer.permit(:sign_in, keys: [:username])
34
- sanitized = sanitizer.sanitize(:sign_in)
35
-
36
- assert_equal({ 'username' => 'jose' }, sanitized)
37
- end
38
-
39
- test 'permits news parameters for an existing action with a block' do
40
- sanitizer = sanitizer('user' => { 'username' => 'jose' })
41
- sanitizer.permit(:sign_in) do |user|
42
- user.permit(:username)
43
- end
44
-
45
- sanitized = sanitizer.sanitize(:sign_in)
46
-
47
- assert_equal({ 'username' => 'jose' }, sanitized)
48
- end
49
-
50
- test 'permit parameters for new actions' do
51
- sanitizer = sanitizer('user' => { 'email' => 'jose@omglol', 'name' => 'Jose' })
52
- sanitizer.permit(:invite_user, keys: [:email, :name])
53
-
54
- sanitized = sanitizer.sanitize(:invite_user)
55
-
56
- assert_equal({ 'email' => 'jose@omglol', 'name' => 'Jose' }, sanitized)
57
- end
58
-
59
- test 'fails when we do not have any permitted parameters for the action' do
60
- sanitizer = sanitizer('user' => { 'email' => 'jose', 'password' => 'invalid' })
61
-
62
- assert_raise NotImplementedError do
63
- sanitizer.sanitize(:unknown)
64
- end
65
- end
66
-
67
- test 'removes permitted parameters' do
68
- sanitizer = sanitizer('user' => { 'email' => 'jose@omglol', 'username' => 'jose' })
69
-
70
- sanitizer.permit(:sign_in, keys: [:username], except: [:email])
71
- sanitized = sanitizer.sanitize(:sign_in)
72
-
73
- assert_equal({ 'username' => 'jose' }, sanitized)
74
- end
75
- end
@@ -1,6 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require File.expand_path('../config/application', __FILE__)
5
-
6
- Rails.application.load_tasks
@@ -1,6 +0,0 @@
1
- require 'shared_admin'
2
-
3
- class Admin < ActiveRecord::Base
4
- include Shim
5
- include SharedAdmin
6
- end
@@ -1,2 +0,0 @@
1
- module Shim
2
- end
@@ -1,7 +0,0 @@
1
- require 'shared_user'
2
-
3
- class User < ActiveRecord::Base
4
- include Shim
5
- include SharedUser
6
- include ActiveModel::Serializers::Xml if Devise::Test.rails5?
7
- end
@@ -1,7 +0,0 @@
1
- require 'shared_user_without_omniauth'
2
-
3
- class UserOnEngine < ActiveRecord::Base
4
- self.table_name = 'users'
5
- include Shim
6
- include SharedUserWithoutOmniauth
7
- end
@@ -1,7 +0,0 @@
1
- require 'shared_user_without_omniauth'
2
-
3
- class UserOnMainApp < ActiveRecord::Base
4
- self.table_name = 'users'
5
- include Shim
6
- include SharedUserWithoutOmniauth
7
- end
@@ -1,8 +0,0 @@
1
- require "shared_user_without_email"
2
-
3
- class UserWithoutEmail < ActiveRecord::Base
4
- self.table_name = 'users'
5
- include Shim
6
- include SharedUserWithoutEmail
7
- end
8
-
@@ -1,6 +0,0 @@
1
- class Admins::SessionsController < Devise::SessionsController
2
- def new
3
- flash[:special] = "Welcome to #{controller_path.inspect} controller!"
4
- super
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- class AdminsController < ApplicationController
2
- before_action :authenticate_admin!
3
-
4
- def index
5
- end
6
- end
@@ -1,11 +0,0 @@
1
- # Filters added to this controller apply to all controllers in the application.
2
- # Likewise, all the methods added will be available for all controllers.
3
-
4
- class ApplicationController < ActionController::Base
5
- protect_from_forgery
6
- before_action :current_user, unless: :devise_controller?
7
- before_action :authenticate_user!, if: :devise_controller?
8
- respond_to(*Mime::SET.map(&:to_sym))
9
-
10
- devise_group :commenter, contains: [:user, :admin]
11
- end
@@ -1,30 +0,0 @@
1
- class ApplicationWithFakeEngine < ApplicationController
2
- private
3
-
4
- helper_method :fake_engine
5
- def fake_engine
6
- @fake_engine ||= FakeEngine.new
7
- end
8
- end
9
-
10
- class FakeEngine
11
- def user_on_engine_confirmation_path
12
- '/user_on_engine/confirmation'
13
- end
14
-
15
- def new_user_on_engine_session_path
16
- '/user_on_engine/confirmation/new'
17
- end
18
-
19
- def new_user_on_engine_registration_path
20
- '/user_on_engine/registration/new'
21
- end
22
-
23
- def new_user_on_engine_password_path
24
- '/user_on_engine/password/new'
25
- end
26
-
27
- def new_user_on_engine_unlock_path
28
- '/user_on_engine/unlock/new'
29
- end
30
- end
@@ -1,31 +0,0 @@
1
- class Custom::RegistrationsController < Devise::RegistrationsController
2
- def new
3
- super do |resource|
4
- @new_block_called = true
5
- end
6
- end
7
-
8
- def create
9
- super do |resource|
10
- @create_block_called = true
11
- end
12
- end
13
-
14
- def update
15
- super do |resource|
16
- @update_block_called = true
17
- end
18
- end
19
-
20
- def create_block_called?
21
- @create_block_called == true
22
- end
23
-
24
- def update_block_called?
25
- @update_block_called == true
26
- end
27
-
28
- def new_block_called?
29
- @new_block_called == true
30
- end
31
- end
@@ -1,29 +0,0 @@
1
- class HomeController < ApplicationController
2
- def index
3
- end
4
-
5
- def private
6
- end
7
-
8
- def user_dashboard
9
- end
10
-
11
- def admin_dashboard
12
- end
13
-
14
- def join
15
- end
16
-
17
- def set
18
- session["devise.foo_bar"] = "something"
19
- head :ok
20
- end
21
-
22
- def unauthenticated
23
- if Devise::Test.rails5?
24
- render body: "unauthenticated", status: :unauthorized
25
- else
26
- render text: "unauthenticated", status: :unauthorized
27
- end
28
- end
29
- end
@@ -1,2 +0,0 @@
1
- class Publisher::RegistrationsController < ApplicationController
2
- end
@@ -1,2 +0,0 @@
1
- class Publisher::SessionsController < ApplicationController
2
- end