devise 4.1.1 → 4.8.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 (255) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +224 -4
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +275 -90
  5. data/app/controllers/devise/confirmations_controller.rb +2 -0
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +7 -5
  7. data/app/controllers/devise/passwords_controller.rb +3 -0
  8. data/app/controllers/devise/registrations_controller.rb +34 -13
  9. data/app/controllers/devise/sessions_controller.rb +3 -1
  10. data/app/controllers/devise/unlocks_controller.rb +2 -0
  11. data/app/controllers/devise_controller.rb +5 -3
  12. data/app/helpers/devise_helper.rb +23 -18
  13. data/app/mailers/devise/mailer.rb +10 -4
  14. data/app/views/devise/confirmations/new.html.erb +2 -2
  15. data/app/views/devise/mailer/email_changed.html.erb +7 -0
  16. data/app/views/devise/passwords/edit.html.erb +3 -3
  17. data/app/views/devise/passwords/new.html.erb +2 -2
  18. data/app/views/devise/registrations/edit.html.erb +9 -5
  19. data/app/views/devise/registrations/new.html.erb +4 -4
  20. data/app/views/devise/sessions/new.html.erb +4 -4
  21. data/app/views/devise/shared/_error_messages.html.erb +15 -0
  22. data/app/views/devise/shared/_links.html.erb +8 -8
  23. data/app/views/devise/unlocks/new.html.erb +2 -2
  24. data/config/locales/en.yml +5 -2
  25. data/lib/devise.rb +39 -17
  26. data/lib/devise/controllers/helpers.rb +22 -9
  27. data/lib/devise/controllers/rememberable.rb +3 -1
  28. data/lib/devise/controllers/scoped_views.rb +2 -0
  29. data/lib/devise/controllers/sign_in_out.rb +39 -14
  30. data/lib/devise/controllers/store_location.rb +25 -7
  31. data/lib/devise/controllers/url_helpers.rb +3 -1
  32. data/lib/devise/delegator.rb +2 -0
  33. data/lib/devise/encryptor.rb +2 -0
  34. data/lib/devise/failure_app.rb +63 -33
  35. data/lib/devise/hooks/activatable.rb +2 -0
  36. data/lib/devise/hooks/csrf_cleaner.rb +2 -0
  37. data/lib/devise/hooks/forgetable.rb +2 -0
  38. data/lib/devise/hooks/lockable.rb +4 -2
  39. data/lib/devise/hooks/proxy.rb +3 -1
  40. data/lib/devise/hooks/rememberable.rb +2 -0
  41. data/lib/devise/hooks/timeoutable.rb +4 -2
  42. data/lib/devise/hooks/trackable.rb +2 -0
  43. data/lib/devise/mailers/helpers.rb +6 -3
  44. data/lib/devise/mapping.rb +3 -1
  45. data/lib/devise/models.rb +3 -1
  46. data/lib/devise/models/authenticatable.rb +63 -37
  47. data/lib/devise/models/confirmable.rb +79 -22
  48. data/lib/devise/models/database_authenticatable.rb +86 -17
  49. data/lib/devise/models/lockable.rb +17 -3
  50. data/lib/devise/models/omniauthable.rb +2 -0
  51. data/lib/devise/models/recoverable.rb +32 -20
  52. data/lib/devise/models/registerable.rb +4 -0
  53. data/lib/devise/models/rememberable.rb +5 -3
  54. data/lib/devise/models/timeoutable.rb +2 -0
  55. data/lib/devise/models/trackable.rb +15 -1
  56. data/lib/devise/models/validatable.rb +10 -3
  57. data/lib/devise/modules.rb +2 -0
  58. data/lib/devise/omniauth.rb +4 -5
  59. data/lib/devise/omniauth/config.rb +2 -0
  60. data/lib/devise/omniauth/url_helpers.rb +2 -51
  61. data/lib/devise/orm/active_record.rb +5 -1
  62. data/lib/devise/orm/mongoid.rb +6 -2
  63. data/lib/devise/parameter_filter.rb +4 -0
  64. data/lib/devise/parameter_sanitizer.rb +15 -56
  65. data/lib/devise/rails.rb +6 -6
  66. data/lib/devise/rails/deprecated_constant_accessor.rb +39 -0
  67. data/lib/devise/rails/routes.rb +9 -7
  68. data/lib/devise/rails/warden_compat.rb +2 -0
  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 +167 -0
  75. data/lib/devise/test/integration_helpers.rb +63 -0
  76. data/lib/devise/test_helpers.rb +7 -129
  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/generators/active_record/devise_generator.rb +40 -12
  81. data/lib/generators/active_record/templates/migration.rb +3 -1
  82. data/lib/generators/active_record/templates/migration_existing.rb +2 -0
  83. data/lib/generators/devise/controllers_generator.rb +3 -1
  84. data/lib/generators/devise/devise_generator.rb +5 -3
  85. data/lib/generators/devise/install_generator.rb +3 -5
  86. data/lib/generators/devise/orm_helpers.rb +9 -3
  87. data/lib/generators/devise/views_generator.rb +8 -9
  88. data/lib/generators/mongoid/devise_generator.rb +7 -5
  89. data/lib/generators/templates/README +9 -8
  90. data/lib/generators/templates/controllers/confirmations_controller.rb +2 -0
  91. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +3 -1
  92. data/lib/generators/templates/controllers/passwords_controller.rb +2 -0
  93. data/lib/generators/templates/controllers/registrations_controller.rb +4 -2
  94. data/lib/generators/templates/controllers/sessions_controller.rb +3 -1
  95. data/lib/generators/templates/controllers/unlocks_controller.rb +2 -0
  96. data/lib/generators/templates/devise.rb +49 -6
  97. data/lib/generators/templates/markerb/email_changed.markerb +7 -0
  98. data/lib/generators/templates/markerb/password_change.markerb +2 -2
  99. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +5 -1
  100. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +10 -2
  101. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +4 -1
  102. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +11 -3
  103. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +11 -3
  104. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +7 -2
  105. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +4 -1
  106. metadata +16 -297
  107. data/.gitignore +0 -10
  108. data/.travis.yml +0 -44
  109. data/.yardopts +0 -9
  110. data/CODE_OF_CONDUCT.md +0 -22
  111. data/CONTRIBUTING.md +0 -16
  112. data/Gemfile +0 -30
  113. data/Gemfile.lock +0 -182
  114. data/Rakefile +0 -36
  115. data/bin/test +0 -13
  116. data/devise.gemspec +0 -26
  117. data/devise.png +0 -0
  118. data/gemfiles/Gemfile.rails-4.1-stable +0 -30
  119. data/gemfiles/Gemfile.rails-4.1-stable.lock +0 -170
  120. data/gemfiles/Gemfile.rails-4.2-stable +0 -30
  121. data/gemfiles/Gemfile.rails-4.2-stable.lock +0 -192
  122. data/gemfiles/Gemfile.rails-5.0-beta +0 -37
  123. data/gemfiles/Gemfile.rails-5.0-beta.lock +0 -199
  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 -320
  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/omniauthable_test.rb +0 -135
  150. data/test/integration/recoverable_test.rb +0 -347
  151. data/test/integration/registerable_test.rb +0 -357
  152. data/test/integration/rememberable_test.rb +0 -211
  153. data/test/integration/timeoutable_test.rb +0 -184
  154. data/test/integration/trackable_test.rb +0 -92
  155. data/test/mailers/confirmation_instructions_test.rb +0 -115
  156. data/test/mailers/reset_password_instructions_test.rb +0 -96
  157. data/test/mailers/unlock_instructions_test.rb +0 -91
  158. data/test/mapping_test.rb +0 -134
  159. data/test/models/authenticatable_test.rb +0 -23
  160. data/test/models/confirmable_test.rb +0 -511
  161. data/test/models/database_authenticatable_test.rb +0 -269
  162. data/test/models/lockable_test.rb +0 -350
  163. data/test/models/omniauthable_test.rb +0 -7
  164. data/test/models/recoverable_test.rb +0 -251
  165. data/test/models/registerable_test.rb +0 -7
  166. data/test/models/rememberable_test.rb +0 -169
  167. data/test/models/serializable_test.rb +0 -49
  168. data/test/models/timeoutable_test.rb +0 -51
  169. data/test/models/trackable_test.rb +0 -41
  170. data/test/models/validatable_test.rb +0 -119
  171. data/test/models_test.rb +0 -153
  172. data/test/omniauth/config_test.rb +0 -57
  173. data/test/omniauth/url_helpers_test.rb +0 -51
  174. data/test/orm/active_record.rb +0 -17
  175. data/test/orm/mongoid.rb +0 -13
  176. data/test/parameter_sanitizer_test.rb +0 -131
  177. data/test/rails_app/Rakefile +0 -6
  178. data/test/rails_app/app/active_record/admin.rb +0 -6
  179. data/test/rails_app/app/active_record/shim.rb +0 -2
  180. data/test/rails_app/app/active_record/user.rb +0 -7
  181. data/test/rails_app/app/active_record/user_on_engine.rb +0 -7
  182. data/test/rails_app/app/active_record/user_on_main_app.rb +0 -7
  183. data/test/rails_app/app/active_record/user_without_email.rb +0 -8
  184. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  185. data/test/rails_app/app/controllers/admins_controller.rb +0 -6
  186. data/test/rails_app/app/controllers/application_controller.rb +0 -11
  187. data/test/rails_app/app/controllers/application_with_fake_engine.rb +0 -30
  188. data/test/rails_app/app/controllers/custom/registrations_controller.rb +0 -31
  189. data/test/rails_app/app/controllers/home_controller.rb +0 -29
  190. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  191. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  192. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  193. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  194. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  195. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +0 -3
  196. data/test/rails_app/app/mailers/users/mailer.rb +0 -3
  197. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +0 -4
  198. data/test/rails_app/app/mongoid/admin.rb +0 -29
  199. data/test/rails_app/app/mongoid/shim.rb +0 -23
  200. data/test/rails_app/app/mongoid/user.rb +0 -39
  201. data/test/rails_app/app/mongoid/user_on_engine.rb +0 -39
  202. data/test/rails_app/app/mongoid/user_on_main_app.rb +0 -39
  203. data/test/rails_app/app/mongoid/user_without_email.rb +0 -33
  204. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  205. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  206. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  207. data/test/rails_app/app/views/home/index.html.erb +0 -1
  208. data/test/rails_app/app/views/home/join.html.erb +0 -1
  209. data/test/rails_app/app/views/home/private.html.erb +0 -1
  210. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  211. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  212. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  213. data/test/rails_app/app/views/users/index.html.erb +0 -1
  214. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  215. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  216. data/test/rails_app/bin/bundle +0 -3
  217. data/test/rails_app/bin/rails +0 -4
  218. data/test/rails_app/bin/rake +0 -4
  219. data/test/rails_app/config.ru +0 -4
  220. data/test/rails_app/config/application.rb +0 -44
  221. data/test/rails_app/config/boot.rb +0 -14
  222. data/test/rails_app/config/database.yml +0 -18
  223. data/test/rails_app/config/environment.rb +0 -5
  224. data/test/rails_app/config/environments/development.rb +0 -30
  225. data/test/rails_app/config/environments/production.rb +0 -84
  226. data/test/rails_app/config/environments/test.rb +0 -46
  227. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  228. data/test/rails_app/config/initializers/devise.rb +0 -180
  229. data/test/rails_app/config/initializers/inflections.rb +0 -2
  230. data/test/rails_app/config/initializers/secret_token.rb +0 -3
  231. data/test/rails_app/config/initializers/session_store.rb +0 -1
  232. data/test/rails_app/config/routes.rb +0 -126
  233. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
  234. data/test/rails_app/db/schema.rb +0 -55
  235. data/test/rails_app/lib/shared_admin.rb +0 -17
  236. data/test/rails_app/lib/shared_user.rb +0 -30
  237. data/test/rails_app/lib/shared_user_without_email.rb +0 -26
  238. data/test/rails_app/lib/shared_user_without_omniauth.rb +0 -13
  239. data/test/rails_app/public/404.html +0 -26
  240. data/test/rails_app/public/422.html +0 -26
  241. data/test/rails_app/public/500.html +0 -26
  242. data/test/rails_app/public/favicon.ico +0 -0
  243. data/test/rails_test.rb +0 -9
  244. data/test/routes_test.rb +0 -279
  245. data/test/support/action_controller/record_identifier.rb +0 -10
  246. data/test/support/assertions.rb +0 -39
  247. data/test/support/helpers.rb +0 -77
  248. data/test/support/http_method_compatibility.rb +0 -51
  249. data/test/support/integration.rb +0 -92
  250. data/test/support/locale/en.yml +0 -8
  251. data/test/support/mongoid.yml +0 -6
  252. data/test/support/webrat/integrations/rails.rb +0 -33
  253. data/test/test_helper.rb +0 -34
  254. data/test/test_helpers_test.rb +0 -178
  255. data/test/test_models.rb +0 -33
@@ -1,127 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MyController < DeviseController
4
- end
5
-
6
- class HelpersTest < Devise::ControllerTestCase
7
- tests MyController
8
-
9
- def setup
10
- @mock_warden = OpenStruct.new
11
- @controller.request.env['warden'] = @mock_warden
12
- @controller.request.env['devise.mapping'] = Devise.mappings[:user]
13
- end
14
-
15
- test 'get resource name from env' do
16
- assert_equal :user, @controller.send(:resource_name)
17
- end
18
-
19
- test 'get resource class from env' do
20
- assert_equal User, @controller.send(:resource_class)
21
- end
22
-
23
- test 'get resource instance variable from env' do
24
- @controller.instance_variable_set(:@user, user = User.new)
25
- assert_equal user, @controller.send(:resource)
26
- end
27
-
28
- test 'set resource instance variable from env' do
29
- user = @controller.send(:resource_class).new
30
- @controller.send(:resource=, user)
31
-
32
- assert_equal user, @controller.send(:resource)
33
- assert_equal user, @controller.instance_variable_get(:@user)
34
- end
35
-
36
- test 'get resource params from request params using resource name as key' do
37
- user_params = {'email' => 'shirley@templar.com'}
38
-
39
- # Stub controller name so strong parameters can filter properly.
40
- # DeviseController does not allow any parameters by default.
41
- @controller.stubs(:controller_name).returns(:sessions_controller)
42
-
43
- params = ActionController::Parameters.new({'user' => user_params})
44
-
45
- @controller.stubs(:params).returns(params)
46
-
47
- res_params = @controller.send(:resource_params).permit!.to_h
48
- assert_equal user_params, res_params
49
- end
50
-
51
- test 'resources methods are not controller actions' do
52
- assert @controller.class.action_methods.delete_if { |m| m.include? 'commenter' }.empty?
53
- end
54
-
55
- test 'require no authentication tests current mapping' do
56
- @mock_warden.expects(:authenticate?).with(:rememberable, scope: :user).returns(true)
57
- @mock_warden.expects(:user).with(:user).returns(User.new)
58
- @controller.expects(:redirect_to).with(root_path)
59
- @controller.send :require_no_authentication
60
- end
61
-
62
- test 'require no authentication only checks if already authenticated if no inputs strategies are available' do
63
- Devise.mappings[:user].expects(:no_input_strategies).returns([])
64
- @mock_warden.expects(:authenticate?).never
65
- @mock_warden.expects(:authenticated?).with(:user).once.returns(true)
66
- @mock_warden.expects(:user).with(:user).returns(User.new)
67
- @controller.expects(:redirect_to).with(root_path)
68
- @controller.send :require_no_authentication
69
- end
70
-
71
- test 'require no authentication sets a flash message' do
72
- @mock_warden.expects(:authenticate?).with(:rememberable, scope: :user).returns(true)
73
- @mock_warden.expects(:user).with(:user).returns(User.new)
74
- @controller.expects(:redirect_to).with(root_path)
75
- @controller.send :require_no_authentication
76
- assert flash[:alert] == I18n.t("devise.failure.already_authenticated")
77
- end
78
-
79
- test 'signed in resource returns signed in resource for current scope' do
80
- @mock_warden.expects(:authenticate).with(scope: :user).returns(User.new)
81
- assert_kind_of User, @controller.send(:signed_in_resource)
82
- end
83
-
84
- test 'is a devise controller' do
85
- assert @controller.devise_controller?
86
- end
87
-
88
- test 'does not issue blank flash messages' do
89
- I18n.stubs(:t).returns(' ')
90
- @controller.send :set_flash_message, :notice, :send_instructions
91
- assert flash[:notice].nil?
92
- end
93
-
94
- test 'issues non-blank flash messages normally' do
95
- I18n.stubs(:t).returns('non-blank')
96
- @controller.send :set_flash_message, :notice, :send_instructions
97
- assert_equal 'non-blank', flash[:notice]
98
- end
99
-
100
- test 'issues non-blank flash.now messages normally' do
101
- I18n.stubs(:t).returns('non-blank')
102
- @controller.send :set_flash_message, :notice, :send_instructions, { now: true }
103
- assert_equal 'non-blank', flash.now[:notice]
104
- end
105
-
106
- test 'uses custom i18n options' do
107
- @controller.stubs(:devise_i18n_options).returns(default: "devise custom options")
108
- @controller.send :set_flash_message, :notice, :invalid_i18n_messagesend_instructions
109
- assert_equal 'devise custom options', flash[:notice]
110
- end
111
-
112
- test 'allows custom i18n options to override resource_name' do
113
- I18n.expects(:t).with("custom_resource_name.confirmed", anything)
114
- @controller.stubs(:devise_i18n_options).returns(resource_name: "custom_resource_name")
115
- @controller.send :set_flash_message, :notice, :confirmed
116
- end
117
-
118
- test 'navigational_formats not returning a wild card' do
119
- MyController.send(:public, :navigational_formats)
120
-
121
- swap Devise, navigational_formats: ['*/*', :html] do
122
- assert_not @controller.navigational_formats.include?("*/*")
123
- end
124
-
125
- MyController.send(:protected, :navigational_formats)
126
- end
127
- end
@@ -1,19 +0,0 @@
1
- require 'test_helper'
2
-
3
- class LoadHooksControllerTest < Devise::ControllerTestCase
4
- setup do
5
- ActiveSupport.on_load(:devise_controller) do
6
- define_method :defined_by_load_hook do
7
- puts 'I am defined dynamically by activesupport load hook'
8
- end
9
- end
10
- end
11
-
12
- teardown do
13
- DeviseController.class_eval { undef :defined_by_load_hook }
14
- end
15
-
16
- test 'load hook called when controller is loaded' do
17
- assert DeviseController.instance_methods.include? :defined_by_load_hook
18
- end
19
- end
@@ -1,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PasswordsControllerTest < Devise::ControllerTestCase
4
- tests Devise::PasswordsController
5
- include Devise::TestHelpers
6
-
7
- setup do
8
- request.env["devise.mapping"] = Devise.mappings[:user]
9
- @user = create_user.tap(&:confirm)
10
- @raw = @user.send_reset_password_instructions
11
- end
12
-
13
- def put_update_with_params
14
- put :update, params: { "user" => {
15
- "reset_password_token" => @raw, "password" => "1234567", "password_confirmation" => "1234567"
16
- }
17
- }
18
- end
19
-
20
- test 'redirect to after_sign_in_path_for if after_resetting_password_path_for is not overridden' do
21
- put_update_with_params
22
- assert_redirected_to "http://test.host/"
23
- end
24
-
25
- test 'redirect accordingly if after_resetting_password_path_for is overridden' do
26
- custom_path = "http://custom.path/"
27
- Devise::PasswordsController.any_instance.stubs(:after_resetting_password_path_for).with(@user).returns(custom_path)
28
-
29
- put_update_with_params
30
- assert_redirected_to custom_path
31
- end
32
- end
@@ -1,106 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SessionsControllerTest < Devise::ControllerTestCase
4
- tests Devise::SessionsController
5
- include Devise::TestHelpers
6
-
7
- test "#create doesn't raise unpermitted params when sign in fails" do
8
- begin
9
- subscriber = ActiveSupport::Notifications.subscribe %r{unpermitted_parameters} do |name, start, finish, id, payload|
10
- flunk "Unpermitted params: #{payload}"
11
- end
12
- request.env["devise.mapping"] = Devise.mappings[:user]
13
- request.session["user_return_to"] = 'foo.bar'
14
- create_user
15
- post :create, params: { user: {
16
- email: "wrong@email.com",
17
- password: "wrongpassword"
18
- }
19
- }
20
- assert_equal 200, @response.status
21
- ensure
22
- ActiveSupport::Notifications.unsubscribe(subscriber)
23
- end
24
- end
25
-
26
- test "#create works even with scoped views" do
27
- swap Devise, scoped_views: true do
28
- request.env["devise.mapping"] = Devise.mappings[:user]
29
- post :create
30
- assert_equal 200, @response.status
31
- assert_template "users/sessions/new"
32
- end
33
- end
34
-
35
- test "#create delete the url stored in the session if the requested format is navigational" do
36
- request.env["devise.mapping"] = Devise.mappings[:user]
37
- request.session["user_return_to"] = 'foo.bar'
38
-
39
- user = create_user
40
- user.confirm
41
- post :create, params: { user: {
42
- email: user.email,
43
- password: user.password
44
- }
45
- }
46
- assert_nil request.session["user_return_to"]
47
- end
48
-
49
- test "#create doesn't delete the url stored in the session if the requested format is not navigational" do
50
- request.env["devise.mapping"] = Devise.mappings[:user]
51
- request.session["user_return_to"] = 'foo.bar'
52
-
53
- user = create_user
54
- user.confirm
55
- post :create, params: { format: 'json', user: {
56
- email: user.email,
57
- password: user.password
58
- }
59
- }
60
-
61
- assert_equal 'foo.bar', request.session["user_return_to"]
62
- end
63
-
64
- test "#create doesn't raise exception after Warden authentication fails when TestHelpers included" do
65
- request.env["devise.mapping"] = Devise.mappings[:user]
66
- post :create, params: { user: {
67
- email: "nosuchuser@example.com",
68
- password: "wevdude"
69
- }
70
- }
71
- assert_equal 200, @response.status
72
- assert_template "devise/sessions/new"
73
- end
74
-
75
- test "#destroy doesn't set the flash if the requested format is not navigational" do
76
- request.env["devise.mapping"] = Devise.mappings[:user]
77
- user = create_user
78
- user.confirm
79
- post :create, params: { format: 'json', user: {
80
- email: user.email,
81
- password: user.password
82
- }
83
- }
84
- delete :destroy, format: 'json'
85
- assert flash[:notice].blank?, "flash[:notice] should be blank, not #{flash[:notice].inspect}"
86
- assert_equal 204, @response.status
87
- end
88
-
89
- if defined?(ActiveRecord) && ActiveRecord::Base.respond_to?(:mass_assignment_sanitizer)
90
- test "#new doesn't raise mass-assignment exception even if sign-in key is attr_protected" do
91
- request.env["devise.mapping"] = Devise.mappings[:user]
92
-
93
- ActiveRecord::Base.mass_assignment_sanitizer = :strict
94
- User.class_eval { attr_protected :email }
95
-
96
- begin
97
- assert_nothing_raised ActiveModel::MassAssignmentSecurity::Error do
98
- get :new, user: { email: "allez viens!" }
99
- end
100
- ensure
101
- ActiveRecord::Base.mass_assignment_sanitizer = :logger
102
- User.class_eval { attr_accessible :email }
103
- end
104
- end
105
- end
106
- end
@@ -1,65 +0,0 @@
1
- require 'test_helper'
2
-
3
- class RoutesTest < Devise::ControllerTestCase
4
- tests ApplicationController
5
-
6
- def assert_path_and_url(name, prepend_path=nil)
7
- @request.path = '/users/session'
8
- prepend_path = "#{prepend_path}_" if prepend_path
9
-
10
- # Resource param
11
- assert_equal @controller.send(:"#{prepend_path}#{name}_path", :user),
12
- send(:"#{prepend_path}user_#{name}_path")
13
- assert_equal @controller.send(:"#{prepend_path}#{name}_url", :user),
14
- send(:"#{prepend_path}user_#{name}_url")
15
-
16
- # With string
17
- assert_equal @controller.send(:"#{prepend_path}#{name}_path", "user"),
18
- send(:"#{prepend_path}user_#{name}_path")
19
- assert_equal @controller.send(:"#{prepend_path}#{name}_url", "user"),
20
- send(:"#{prepend_path}user_#{name}_url")
21
-
22
- # Default url params
23
- assert_equal @controller.send(:"#{prepend_path}#{name}_path", :user, param: 123),
24
- send(:"#{prepend_path}user_#{name}_path", param: 123)
25
- assert_equal @controller.send(:"#{prepend_path}#{name}_url", :user, param: 123),
26
- send(:"#{prepend_path}user_#{name}_url", param: 123)
27
-
28
- @request.path = nil
29
- # With an object
30
- assert_equal @controller.send(:"#{prepend_path}#{name}_path", User.new),
31
- send(:"#{prepend_path}user_#{name}_path")
32
- assert_equal @controller.send(:"#{prepend_path}#{name}_url", User.new),
33
- send(:"#{prepend_path}user_#{name}_url")
34
- end
35
-
36
-
37
- test 'should alias session to mapped user session' do
38
- assert_path_and_url :session
39
- assert_path_and_url :session, :new
40
- assert_path_and_url :session, :destroy
41
- end
42
-
43
- test 'should alias password to mapped user password' do
44
- assert_path_and_url :password
45
- assert_path_and_url :password, :new
46
- assert_path_and_url :password, :edit
47
- end
48
-
49
- test 'should alias confirmation to mapped user confirmation' do
50
- assert_path_and_url :confirmation
51
- assert_path_and_url :confirmation, :new
52
- end
53
-
54
- test 'should alias unlock to mapped user unlock' do
55
- assert_path_and_url :unlock
56
- assert_path_and_url :unlock, :new
57
- end
58
-
59
- test 'should alias registration to mapped user registration' do
60
- assert_path_and_url :registration
61
- assert_path_and_url :registration, :new
62
- assert_path_and_url :registration, :edit
63
- assert_path_and_url :registration, :cancel
64
- end
65
- end
@@ -1,19 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DelegatorTest < ActiveSupport::TestCase
4
- def delegator
5
- Devise::Delegator.new
6
- end
7
-
8
- test 'failure_app returns default failure app if no warden options in env' do
9
- assert_equal Devise::FailureApp, delegator.failure_app({})
10
- end
11
-
12
- test 'failure_app returns default failure app if no scope in warden options' do
13
- assert_equal Devise::FailureApp, delegator.failure_app({"warden.options" => {}})
14
- end
15
-
16
- test 'failure_app returns associated failure app by scope in the given environment' do
17
- assert_kind_of Proc, delegator.failure_app({"warden.options" => {scope: "manager"}})
18
- end
19
- end
data/test/devise_test.rb DELETED
@@ -1,107 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Devise
4
- def self.yield_and_restore
5
- @@warden_configured = nil
6
- c, b = @@warden_config, @@warden_config_blocks
7
- yield
8
- ensure
9
- @@warden_config, @@warden_config_blocks = c, b
10
- end
11
- end
12
-
13
- class DeviseTest < ActiveSupport::TestCase
14
- test 'bcrypt on the class' do
15
- password = "super secret"
16
- klass = Struct.new(:pepper, :stretches).new("blahblah", 2)
17
- hash = Devise::Encryptor.digest(klass, password)
18
- assert_equal ::BCrypt::Password.create(hash), hash
19
-
20
- klass = Struct.new(:pepper, :stretches).new("bla", 2)
21
- hash = Devise::Encryptor.digest(klass, password)
22
- assert_not_equal ::BCrypt::Password.new(hash), hash
23
- end
24
-
25
- test 'model options can be configured through Devise' do
26
- swap Devise, allow_unconfirmed_access_for: 113, pepper: "foo" do
27
- assert_equal 113, Devise.allow_unconfirmed_access_for
28
- assert_equal "foo", Devise.pepper
29
- end
30
- end
31
-
32
- test 'setup block yields self' do
33
- Devise.setup do |config|
34
- assert_equal Devise, config
35
- end
36
- end
37
-
38
- test 'stores warden configuration' do
39
- assert_kind_of Devise::Delegator, Devise.warden_config.failure_app
40
- assert_equal :user, Devise.warden_config.default_scope
41
- end
42
-
43
- test 'warden manager user configuration through a block' do
44
- Devise.yield_and_restore do
45
- executed = false
46
- Devise.warden do |config|
47
- executed = true
48
- assert_kind_of Warden::Config, config
49
- end
50
-
51
- Devise.configure_warden!
52
- assert executed
53
- end
54
- end
55
-
56
- test 'warden manager user configuration through multiple blocks' do
57
- Devise.yield_and_restore do
58
- executed = 0
59
-
60
- 3.times do
61
- Devise.warden { |config| executed += 1 }
62
- end
63
-
64
- Devise.configure_warden!
65
- assert_equal 3, executed
66
- end
67
- end
68
-
69
- test 'add new module using the helper method' do
70
- assert_nothing_raised(Exception) { Devise.add_module(:coconut) }
71
- assert_equal 1, Devise::ALL.select { |v| v == :coconut }.size
72
- assert_not Devise::STRATEGIES.include?(:coconut)
73
- assert_not defined?(Devise::Models::Coconut)
74
- Devise::ALL.delete(:coconut)
75
-
76
- assert_nothing_raised(Exception) { Devise.add_module(:banana, strategy: :fruits) }
77
- assert_equal :fruits, Devise::STRATEGIES[:banana]
78
- Devise::ALL.delete(:banana)
79
- Devise::STRATEGIES.delete(:banana)
80
-
81
- assert_nothing_raised(Exception) { Devise.add_module(:kivi, controller: :fruits) }
82
- assert_equal :fruits, Devise::CONTROLLERS[:kivi]
83
- Devise::ALL.delete(:kivi)
84
- Devise::CONTROLLERS.delete(:kivi)
85
- end
86
-
87
- test 'should complain when comparing empty or different sized passes' do
88
- [nil, ""].each do |empty|
89
- assert_not Devise.secure_compare(empty, "something")
90
- assert_not Devise.secure_compare("something", empty)
91
- assert_not Devise.secure_compare(empty, empty)
92
- end
93
- assert_not Devise.secure_compare("size_1", "size_four")
94
- end
95
-
96
- test 'Devise.email_regexp should match valid email addresses' do
97
- valid_emails = ["test@example.com", "jo@jo.co", "f4$_m@you.com", "testing.example@example.com.ua", "test@tt", "test@valid---domain.com"]
98
- non_valid_emails = ["rex", "test user@example.com", "test_user@example server.com"]
99
-
100
- valid_emails.each do |email|
101
- assert_match Devise.email_regexp, email
102
- end
103
- non_valid_emails.each do |email|
104
- assert_no_match Devise.email_regexp, email
105
- end
106
- end
107
- end