devise 3.2.0 → 3.3.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.

Potentially problematic release.


This version of devise might be problematic. Click here for more details.

Files changed (187) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +18 -3
  3. data/CHANGELOG.md +82 -9
  4. data/CONTRIBUTING.md +2 -2
  5. data/Gemfile +7 -9
  6. data/Gemfile.lock +102 -96
  7. data/MIT-LICENSE +1 -1
  8. data/README.md +94 -42
  9. data/Rakefile +1 -1
  10. data/app/controllers/devise/confirmations_controller.rb +5 -3
  11. data/app/controllers/devise/omniauth_callbacks_controller.rb +2 -2
  12. data/app/controllers/devise/passwords_controller.rb +5 -3
  13. data/app/controllers/devise/registrations_controller.rb +26 -10
  14. data/app/controllers/devise/sessions_controller.rb +39 -14
  15. data/app/controllers/devise/unlocks_controller.rb +4 -2
  16. data/app/controllers/devise_controller.rb +6 -6
  17. data/app/helpers/devise_helper.rb +2 -2
  18. data/app/views/devise/confirmations/new.html.erb +2 -2
  19. data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
  20. data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
  21. data/app/views/devise/mailer/unlock_instructions.html.erb +1 -1
  22. data/app/views/devise/passwords/edit.html.erb +3 -3
  23. data/app/views/devise/passwords/new.html.erb +2 -2
  24. data/app/views/devise/registrations/edit.html.erb +6 -6
  25. data/app/views/devise/registrations/new.html.erb +5 -5
  26. data/app/views/devise/sessions/new.html.erb +5 -5
  27. data/app/views/devise/shared/_links.erb +1 -1
  28. data/app/views/devise/unlocks/new.html.erb +2 -2
  29. data/config/locales/en.yml +17 -16
  30. data/devise.gemspec +2 -2
  31. data/gemfiles/{Gemfile.rails-3.2.x → Gemfile.rails-3.2-stable} +8 -10
  32. data/gemfiles/Gemfile.rails-3.2-stable.lock +166 -0
  33. data/gemfiles/Gemfile.rails-4.0-stable +29 -0
  34. data/gemfiles/Gemfile.rails-4.0-stable.lock +162 -0
  35. data/gemfiles/Gemfile.rails-head +32 -0
  36. data/gemfiles/Gemfile.rails-head.lock +190 -0
  37. data/lib/devise/controllers/helpers.rb +84 -29
  38. data/lib/devise/controllers/rememberable.rb +3 -3
  39. data/lib/devise/controllers/scoped_views.rb +1 -1
  40. data/lib/devise/controllers/sign_in_out.rb +9 -10
  41. data/lib/devise/controllers/store_location.rb +56 -0
  42. data/lib/devise/controllers/url_helpers.rb +3 -1
  43. data/lib/devise/failure_app.rb +12 -10
  44. data/lib/devise/hooks/activatable.rb +5 -6
  45. data/lib/devise/hooks/csrf_cleaner.rb +3 -1
  46. data/lib/devise/hooks/lockable.rb +1 -1
  47. data/lib/devise/hooks/proxy.rb +2 -2
  48. data/lib/devise/hooks/rememberable.rb +2 -2
  49. data/lib/devise/hooks/timeoutable.rb +10 -3
  50. data/lib/devise/hooks/trackable.rb +1 -1
  51. data/lib/devise/mailers/helpers.rb +8 -8
  52. data/lib/devise/mapping.rb +4 -1
  53. data/lib/devise/models/authenticatable.rb +5 -5
  54. data/lib/devise/models/confirmable.rb +14 -14
  55. data/lib/devise/models/database_authenticatable.rb +18 -5
  56. data/lib/devise/models/lockable.rb +14 -11
  57. data/lib/devise/models/omniauthable.rb +1 -1
  58. data/lib/devise/models/recoverable.rb +23 -7
  59. data/lib/devise/models/rememberable.rb +6 -6
  60. data/lib/devise/models/timeoutable.rb +2 -2
  61. data/lib/devise/models/trackable.rb +5 -2
  62. data/lib/devise/models/validatable.rb +6 -6
  63. data/lib/devise/modules.rb +10 -10
  64. data/lib/devise/omniauth/url_helpers.rb +2 -2
  65. data/lib/devise/orm/active_record.rb +1 -1
  66. data/lib/devise/orm/mongoid.rb +1 -1
  67. data/lib/devise/rails/routes.rb +107 -78
  68. data/lib/devise/rails.rb +7 -1
  69. data/lib/devise/strategies/authenticatable.rb +11 -4
  70. data/lib/devise/strategies/base.rb +1 -1
  71. data/lib/devise/strategies/database_authenticatable.rb +7 -4
  72. data/lib/devise/test_helpers.rb +2 -2
  73. data/lib/devise/time_inflector.rb +2 -2
  74. data/lib/devise/version.rb +1 -1
  75. data/lib/devise.rb +15 -10
  76. data/lib/generators/active_record/devise_generator.rb +27 -10
  77. data/lib/generators/active_record/templates/migration.rb +4 -4
  78. data/lib/generators/active_record/templates/migration_existing.rb +4 -4
  79. data/lib/generators/devise/devise_generator.rb +5 -3
  80. data/lib/generators/devise/install_generator.rb +5 -0
  81. data/lib/generators/devise/views_generator.rb +31 -18
  82. data/lib/generators/mongoid/devise_generator.rb +20 -19
  83. data/lib/generators/templates/README +4 -4
  84. data/lib/generators/templates/devise.rb +20 -11
  85. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  86. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  87. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  88. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +2 -2
  89. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +4 -4
  90. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +2 -2
  91. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +6 -6
  92. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +4 -4
  93. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +4 -4
  94. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +2 -2
  95. data/script/cached-bundle +49 -0
  96. data/script/s3-put +71 -0
  97. data/test/controllers/custom_registrations_controller_test.rb +35 -0
  98. data/test/controllers/helpers_test.rb +89 -31
  99. data/test/controllers/internal_helpers_test.rb +11 -8
  100. data/test/controllers/passwords_controller_test.rb +1 -1
  101. data/test/controllers/sessions_controller_test.rb +29 -25
  102. data/test/controllers/url_helpers_test.rb +4 -4
  103. data/test/delegator_test.rb +1 -1
  104. data/test/devise_test.rb +21 -8
  105. data/test/failure_app_test.rb +61 -25
  106. data/test/generators/active_record_generator_test.rb +10 -4
  107. data/test/generators/devise_generator_test.rb +2 -2
  108. data/test/generators/mongoid_generator_test.rb +3 -3
  109. data/test/generators/views_generator_test.rb +30 -1
  110. data/test/helpers/devise_helper_test.rb +14 -13
  111. data/test/integration/authenticatable_test.rb +61 -45
  112. data/test/integration/confirmable_test.rb +95 -55
  113. data/test/integration/database_authenticatable_test.rb +16 -16
  114. data/test/integration/http_authenticatable_test.rb +12 -12
  115. data/test/integration/lockable_test.rb +43 -43
  116. data/test/integration/omniauthable_test.rb +3 -3
  117. data/test/integration/recoverable_test.rb +53 -53
  118. data/test/integration/registerable_test.rb +90 -80
  119. data/test/integration/rememberable_test.rb +15 -15
  120. data/test/integration/timeoutable_test.rb +27 -16
  121. data/test/integration/trackable_test.rb +4 -4
  122. data/test/mailers/confirmation_instructions_test.rb +7 -7
  123. data/test/mailers/reset_password_instructions_test.rb +6 -6
  124. data/test/mailers/unlock_instructions_test.rb +5 -5
  125. data/test/mapping_test.rb +3 -3
  126. data/test/models/authenticatable_test.rb +3 -3
  127. data/test/models/confirmable_test.rb +32 -32
  128. data/test/models/database_authenticatable_test.rb +32 -27
  129. data/test/models/lockable_test.rb +57 -33
  130. data/test/models/recoverable_test.rb +34 -22
  131. data/test/models/rememberable_test.rb +29 -14
  132. data/test/models/serializable_test.rb +8 -8
  133. data/test/models/timeoutable_test.rb +1 -1
  134. data/test/models/trackable_test.rb +28 -0
  135. data/test/models/validatable_test.rb +13 -13
  136. data/test/omniauth/config_test.rb +4 -4
  137. data/test/omniauth/url_helpers_test.rb +3 -3
  138. data/test/orm/mongoid.rb +1 -1
  139. data/test/parameter_sanitizer_test.rb +1 -1
  140. data/test/rails_app/app/active_record/shim.rb +1 -1
  141. data/test/rails_app/app/active_record/user_on_engine.rb +7 -0
  142. data/test/rails_app/app/active_record/user_on_main_app.rb +7 -0
  143. data/test/rails_app/app/controllers/admins/sessions_controller.rb +1 -1
  144. data/test/rails_app/app/controllers/admins_controller.rb +1 -1
  145. data/test/rails_app/app/controllers/application_controller.rb +5 -2
  146. data/test/rails_app/app/controllers/application_with_fake_engine.rb +30 -0
  147. data/test/rails_app/app/controllers/custom/registrations_controller.rb +21 -0
  148. data/test/rails_app/app/controllers/home_controller.rb +1 -1
  149. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +1 -1
  150. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +1 -1
  151. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +4 -4
  152. data/test/rails_app/app/controllers/users_controller.rb +6 -6
  153. data/test/rails_app/app/mailers/users/mailer.rb +4 -4
  154. data/test/rails_app/app/mongoid/admin.rb +11 -11
  155. data/test/rails_app/app/mongoid/shim.rb +2 -2
  156. data/test/rails_app/app/mongoid/user.rb +19 -19
  157. data/test/rails_app/app/mongoid/user_on_engine.rb +39 -0
  158. data/test/rails_app/app/mongoid/user_on_main_app.rb +39 -0
  159. data/test/rails_app/app/views/admins/sessions/new.html.erb +1 -1
  160. data/test/rails_app/app/views/home/admin_dashboard.html.erb +1 -1
  161. data/test/rails_app/app/views/home/index.html.erb +1 -1
  162. data/test/rails_app/app/views/home/join.html.erb +1 -1
  163. data/test/rails_app/app/views/home/user_dashboard.html.erb +1 -1
  164. data/test/rails_app/app/views/layouts/application.html.erb +1 -1
  165. data/test/rails_app/config/application.rb +2 -2
  166. data/test/rails_app/config/boot.rb +7 -1
  167. data/test/rails_app/config/environments/development.rb +0 -4
  168. data/test/rails_app/config/environments/production.rb +0 -4
  169. data/test/rails_app/config/initializers/devise.rb +7 -5
  170. data/test/rails_app/config/initializers/secret_token.rb +1 -1
  171. data/test/rails_app/config/routes.rb +60 -42
  172. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +7 -7
  173. data/test/rails_app/db/schema.rb +21 -17
  174. data/test/rails_app/lib/shared_admin.rb +4 -4
  175. data/test/rails_app/lib/shared_user.rb +1 -1
  176. data/test/rails_app/lib/shared_user_without_omniauth.rb +13 -0
  177. data/test/routes_test.rb +72 -58
  178. data/test/support/action_controller/record_identifier.rb +10 -0
  179. data/test/support/assertions.rb +2 -3
  180. data/test/support/helpers.rb +4 -4
  181. data/test/support/integration.rb +14 -14
  182. data/test/support/mongoid.yml +6 -0
  183. data/test/test_helper.rb +2 -7
  184. data/test/test_helpers_test.rb +25 -35
  185. data/test/test_models.rb +12 -5
  186. metadata +53 -38
  187. data/gemfiles/Gemfile.rails-3.2.x.lock +0 -159
@@ -3,17 +3,17 @@ require 'test_helper'
3
3
  class ConfirmationTest < ActionDispatch::IntegrationTest
4
4
 
5
5
  def visit_user_confirmation_with_token(confirmation_token)
6
- visit user_confirmation_path(:confirmation_token => confirmation_token)
6
+ visit user_confirmation_path(confirmation_token: confirmation_token)
7
7
  end
8
8
 
9
9
  def resend_confirmation
10
- user = create_user(:confirm => false)
10
+ user = create_user(confirm: false)
11
11
  ActionMailer::Base.deliveries.clear
12
12
 
13
13
  visit new_user_session_path
14
14
  click_link "Didn't receive confirmation instructions?"
15
15
 
16
- fill_in 'email', :with => user.email
16
+ fill_in 'email', with: user.email
17
17
  click_button 'Resend confirmation instructions'
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
21
21
  resend_confirmation
22
22
 
23
23
  assert_current_url '/users/sign_in'
24
- assert_contain 'You will receive an email with instructions about how to confirm your account in a few minutes'
24
+ assert_contain 'You will receive an email with instructions for how to confirm your email address in a few minutes'
25
25
  assert_equal 1, ActionMailer::Base.deliveries.size
26
26
  assert_equal ['please-change-me@config-initializers-devise.com'], ActionMailer::Base.deliveries.first.from
27
27
  end
@@ -39,24 +39,55 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
39
39
  end
40
40
 
41
41
  test 'user with valid confirmation token should not be able to confirm an account after the token has expired' do
42
- swap Devise, :confirm_within => 3.days do
43
- user = create_user(:confirm => false, :confirmation_sent_at => 4.days.ago)
42
+ swap Devise, confirm_within: 3.days do
43
+ user = create_user(confirm: false, confirmation_sent_at: 4.days.ago)
44
44
  assert_not user.confirmed?
45
45
  visit_user_confirmation_with_token(user.raw_confirmation_token)
46
46
 
47
47
  assert_have_selector '#error_explanation'
48
48
  assert_contain /needs to be confirmed within 3 days/
49
49
  assert_not user.reload.confirmed?
50
+ assert_current_url "/users/confirmation?confirmation_token=#{user.raw_confirmation_token}"
51
+ end
52
+ end
53
+
54
+ test 'user with valid confirmation token where the token has expired and with application router_name set to a different engine it should raise an error' do
55
+ user = create_user(confirm: false, confirmation_sent_at: 4.days.ago)
56
+
57
+ swap Devise, confirm_within: 3.days, router_name: :fake_engine do
58
+ assert_raise ActionView::Template::Error do
59
+ visit_user_confirmation_with_token(user.raw_confirmation_token)
60
+ end
61
+ end
62
+ end
63
+
64
+ test 'user with valid confirmation token where the token has expired and with application router_name set to a different engine and route overrides back to main it shows the path' do
65
+ user = create_user(confirm: false, confirmation_sent_at: 4.days.ago)
66
+
67
+ swap Devise, confirm_within: 3.days, router_name: :fake_engine do
68
+ visit user_on_main_app_confirmation_path(confirmation_token: user.raw_confirmation_token)
69
+
70
+ assert_current_url "/user_on_main_apps/confirmation?confirmation_token=#{user.raw_confirmation_token}"
71
+ end
72
+ end
73
+
74
+ test 'user with valid confirmation token where the token has expired with router overrides different engine it shows the path' do
75
+ user = create_user(confirm: false, confirmation_sent_at: 4.days.ago)
76
+
77
+ swap Devise, confirm_within: 3.days do
78
+ visit user_on_engine_confirmation_path(confirmation_token: user.raw_confirmation_token)
79
+
80
+ assert_current_url "/user_on_engines/confirmation?confirmation_token=#{user.raw_confirmation_token}"
50
81
  end
51
82
  end
52
83
 
53
84
  test 'user with valid confirmation token should be able to confirm an account before the token has expired' do
54
- swap Devise, :confirm_within => 3.days do
55
- user = create_user(:confirm => false, :confirmation_sent_at => 2.days.ago)
85
+ swap Devise, confirm_within: 3.days do
86
+ user = create_user(confirm: false, confirmation_sent_at: 2.days.ago)
56
87
  assert_not user.confirmed?
57
88
  visit_user_confirmation_with_token(user.raw_confirmation_token)
58
89
 
59
- assert_contain 'Your account was successfully confirmed.'
90
+ assert_contain 'Your email address has been successfully confirmed.'
60
91
  assert_current_url '/users/sign_in'
61
92
  assert user.reload.confirmed?
62
93
  end
@@ -65,14 +96,14 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
65
96
  test 'user should be redirected to a custom path after confirmation' do
66
97
  Devise::ConfirmationsController.any_instance.stubs(:after_confirmation_path_for).returns("/?custom=1")
67
98
 
68
- user = create_user(:confirm => false)
99
+ user = create_user(confirm: false)
69
100
  visit_user_confirmation_with_token(user.raw_confirmation_token)
70
101
 
71
102
  assert_current_url "/?custom=1"
72
103
  end
73
104
 
74
105
  test 'already confirmed user should not be able to confirm the account again' do
75
- user = create_user(:confirm => false)
106
+ user = create_user(confirm: false)
76
107
  user.confirmed_at = Time.now
77
108
  user.save
78
109
  visit_user_confirmation_with_token(user.raw_confirmation_token)
@@ -82,31 +113,31 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
82
113
  end
83
114
 
84
115
  test 'already confirmed user should not be able to confirm the account again neither request confirmation' do
85
- user = create_user(:confirm => false)
116
+ user = create_user(confirm: false)
86
117
  user.confirmed_at = Time.now
87
118
  user.save
88
119
 
89
120
  visit_user_confirmation_with_token(user.raw_confirmation_token)
90
121
  assert_contain 'already confirmed'
91
122
 
92
- fill_in 'email', :with => user.email
123
+ fill_in 'email', with: user.email
93
124
  click_button 'Resend confirmation instructions'
94
125
  assert_contain 'already confirmed'
95
126
  end
96
127
 
97
128
  test 'not confirmed user with setup to block without confirmation should not be able to sign in' do
98
- swap Devise, :allow_unconfirmed_access_for => 0.days do
99
- sign_in_as_user(:confirm => false)
129
+ swap Devise, allow_unconfirmed_access_for: 0.days do
130
+ sign_in_as_user(confirm: false)
100
131
 
101
- assert_contain 'You have to confirm your account before continuing'
132
+ assert_contain 'You have to confirm your email address before continuing'
102
133
  assert_not warden.authenticated?(:user)
103
134
  end
104
135
  end
105
136
 
106
137
  test 'not confirmed user should not see confirmation message if invalid credentials are given' do
107
- swap Devise, :allow_unconfirmed_access_for => 0.days do
108
- sign_in_as_user(:confirm => false) do
109
- fill_in 'password', :with => 'invalid'
138
+ swap Devise, allow_unconfirmed_access_for: 0.days do
139
+ sign_in_as_user(confirm: false) do
140
+ fill_in 'password', with: 'invalid'
110
141
  end
111
142
 
112
143
  assert_contain 'Invalid email or password'
@@ -115,8 +146,8 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
115
146
  end
116
147
 
117
148
  test 'not confirmed user but configured with some days to confirm should be able to sign in' do
118
- swap Devise, :allow_unconfirmed_access_for => 1.day do
119
- sign_in_as_user(:confirm => false)
149
+ swap Devise, allow_unconfirmed_access_for: 1.day do
150
+ sign_in_as_user(confirm: false)
120
151
 
121
152
  assert_response :success
122
153
  assert warden.authenticated?(:user)
@@ -124,86 +155,95 @@ class ConfirmationTest < ActionDispatch::IntegrationTest
124
155
  end
125
156
 
126
157
  test 'unconfirmed but signed in user should be redirected to their root path' do
127
- swap Devise, :allow_unconfirmed_access_for => 1.day do
128
- user = sign_in_as_user(:confirm => false)
158
+ swap Devise, allow_unconfirmed_access_for: 1.day do
159
+ user = sign_in_as_user(confirm: false)
129
160
 
130
161
  visit_user_confirmation_with_token(user.raw_confirmation_token)
131
- assert_contain 'Your account was successfully confirmed.'
162
+ assert_contain 'Your email address has been successfully confirmed.'
132
163
  assert_current_url '/'
133
164
  end
134
165
  end
135
166
 
167
+ test 'user should be redirected to sign in page whenever signed in as another resource at same session already' do
168
+ sign_in_as_admin
169
+
170
+ user = create_user(confirm: false)
171
+ visit_user_confirmation_with_token(user.raw_confirmation_token)
172
+
173
+ assert_current_url '/users/sign_in'
174
+ end
175
+
136
176
  test 'error message is configurable by resource name' do
137
- store_translations :en, :devise => {
138
- :failure => { :user => { :unconfirmed => "Not confirmed user" } }
177
+ store_translations :en, devise: {
178
+ failure: { user: { unconfirmed: "Not confirmed user" } }
139
179
  } do
140
- sign_in_as_user(:confirm => false)
180
+ sign_in_as_user(confirm: false)
141
181
  assert_contain 'Not confirmed user'
142
182
  end
143
183
  end
144
184
 
145
185
  test 'resent confirmation token with valid E-Mail in XML format should return valid response' do
146
- user = create_user(:confirm => false)
147
- post user_confirmation_path(:format => 'xml'), :user => { :email => user.email }
186
+ user = create_user(confirm: false)
187
+ post user_confirmation_path(format: 'xml'), user: { email: user.email }
148
188
  assert_response :success
149
189
  assert_equal response.body, {}.to_xml
150
190
  end
151
191
 
152
192
  test 'resent confirmation token with invalid E-Mail in XML format should return invalid response' do
153
- create_user(:confirm => false)
154
- post user_confirmation_path(:format => 'xml'), :user => { :email => 'invalid.test@test.com' }
193
+ create_user(confirm: false)
194
+ post user_confirmation_path(format: 'xml'), user: { email: 'invalid.test@test.com' }
155
195
  assert_response :unprocessable_entity
156
196
  assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<errors>)
157
197
  end
158
198
 
159
199
  test 'confirm account with valid confirmation token in XML format should return valid response' do
160
- user = create_user(:confirm => false)
161
- get user_confirmation_path(:confirmation_token => user.raw_confirmation_token, :format => 'xml')
200
+ user = create_user(confirm: false)
201
+ get user_confirmation_path(confirmation_token: user.raw_confirmation_token, format: 'xml')
162
202
  assert_response :success
163
203
  assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>)
164
204
  end
165
205
 
166
206
  test 'confirm account with invalid confirmation token in XML format should return invalid response' do
167
- create_user(:confirm => false)
168
- get user_confirmation_path(:confirmation_token => 'invalid_confirmation', :format => 'xml')
207
+ create_user(confirm: false)
208
+ get user_confirmation_path(confirmation_token: 'invalid_confirmation', format: 'xml')
169
209
  assert_response :unprocessable_entity
170
210
  assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<errors>)
171
211
  end
172
212
 
173
213
  test 'request an account confirmation account with JSON, should return an empty JSON' do
174
- user = create_user(:confirm => false)
214
+ user = create_user(confirm: false)
175
215
 
176
- post user_confirmation_path, :user => { :email => user.email }, :format => :json
216
+ post user_confirmation_path, user: { email: user.email }, format: :json
177
217
  assert_response :success
178
218
  assert_equal response.body, {}.to_json
179
219
  end
180
220
 
181
221
  test "when in paranoid mode and with a valid e-mail, should not say that the e-mail is valid" do
182
- swap Devise, :paranoid => true do
183
- user = create_user(:confirm => false)
222
+ swap Devise, paranoid: true do
223
+ user = create_user(confirm: false)
184
224
  visit new_user_session_path
185
225
 
186
226
  click_link "Didn't receive confirmation instructions?"
187
- fill_in 'email', :with => user.email
227
+ fill_in 'email', with: user.email
188
228
  click_button 'Resend confirmation instructions'
189
229
 
190
- assert_contain "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes."
230
+ assert_contain "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
191
231
  assert_current_url "/users/sign_in"
192
232
  end
193
233
  end
194
234
 
195
235
  test "when in paranoid mode and with a invalid e-mail, should not say that the e-mail is invalid" do
196
- swap Devise, :paranoid => true do
236
+ swap Devise, paranoid: true do
197
237
  visit new_user_session_path
198
238
 
199
239
  click_link "Didn't receive confirmation instructions?"
200
- fill_in 'email', :with => "idonthavethisemail@gmail.com"
240
+ fill_in 'email', with: "idonthavethisemail@gmail.com"
201
241
  click_button 'Resend confirmation instructions'
202
242
 
203
243
  assert_not_contain "1 error prohibited this user from being saved:"
204
244
  assert_not_contain "Email not found"
205
245
 
206
- assert_contain "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes."
246
+ assert_contain "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
207
247
  assert_current_url "/users/sign_in"
208
248
  end
209
249
  end
@@ -216,32 +256,32 @@ class ConfirmationOnChangeTest < ActionDispatch::IntegrationTest
216
256
  end
217
257
 
218
258
  def visit_admin_confirmation_with_token(confirmation_token)
219
- visit admin_confirmation_path(:confirmation_token => confirmation_token)
259
+ visit admin_confirmation_path(confirmation_token: confirmation_token)
220
260
  end
221
261
 
222
262
  test 'admin should be able to request a new confirmation after email changed' do
223
263
  admin = create_admin
224
- admin.update_attributes(:email => 'new_test@example.com')
264
+ admin.update_attributes(email: 'new_test@example.com')
225
265
 
226
266
  visit new_admin_session_path
227
267
  click_link "Didn't receive confirmation instructions?"
228
268
 
229
- fill_in 'email', :with => admin.unconfirmed_email
269
+ fill_in 'email', with: admin.unconfirmed_email
230
270
  assert_difference "ActionMailer::Base.deliveries.size" do
231
271
  click_button 'Resend confirmation instructions'
232
272
  end
233
273
 
234
274
  assert_current_url '/admin_area/sign_in'
235
- assert_contain 'You will receive an email with instructions about how to confirm your account in a few minutes'
275
+ assert_contain 'You will receive an email with instructions for how to confirm your email address in a few minutes'
236
276
  end
237
277
 
238
278
  test 'admin with valid confirmation token should be able to confirm email after email changed' do
239
279
  admin = create_admin
240
- admin.update_attributes(:email => 'new_test@example.com')
280
+ admin.update_attributes(email: 'new_test@example.com')
241
281
  assert_equal 'new_test@example.com', admin.unconfirmed_email
242
282
  visit_admin_confirmation_with_token(admin.raw_confirmation_token)
243
283
 
244
- assert_contain 'Your account was successfully confirmed.'
284
+ assert_contain 'Your email address has been successfully confirmed.'
245
285
  assert_current_url '/admin_area/sign_in'
246
286
  assert admin.reload.confirmed?
247
287
  assert_not admin.reload.pending_reconfirmation?
@@ -249,13 +289,13 @@ class ConfirmationOnChangeTest < ActionDispatch::IntegrationTest
249
289
 
250
290
  test 'admin with previously valid confirmation token should not be able to confirm email after email changed again' do
251
291
  admin = create_admin
252
- admin.update_attributes(:email => 'first_test@example.com')
292
+ admin.update_attributes(email: 'first_test@example.com')
253
293
  assert_equal 'first_test@example.com', admin.unconfirmed_email
254
294
 
255
295
  raw_confirmation_token = admin.raw_confirmation_token
256
296
  admin = Admin.find(admin.id)
257
297
 
258
- admin.update_attributes(:email => 'second_test@example.com')
298
+ admin.update_attributes(email: 'second_test@example.com')
259
299
  assert_equal 'second_test@example.com', admin.unconfirmed_email
260
300
 
261
301
  visit_admin_confirmation_with_token(raw_confirmation_token)
@@ -263,7 +303,7 @@ class ConfirmationOnChangeTest < ActionDispatch::IntegrationTest
263
303
  assert_contain(/Confirmation token(.*)invalid/)
264
304
 
265
305
  visit_admin_confirmation_with_token(admin.raw_confirmation_token)
266
- assert_contain 'Your account was successfully confirmed.'
306
+ assert_contain 'Your email address has been successfully confirmed.'
267
307
  assert_current_url '/admin_area/sign_in'
268
308
  assert admin.reload.confirmed?
269
309
  assert_not admin.reload.pending_reconfirmation?
@@ -271,10 +311,10 @@ class ConfirmationOnChangeTest < ActionDispatch::IntegrationTest
271
311
 
272
312
  test 'admin email should be unique also within unconfirmed_email' do
273
313
  admin = create_admin
274
- admin.update_attributes(:email => 'new_admin_test@example.com')
314
+ admin.update_attributes(email: 'new_admin_test@example.com')
275
315
  assert_equal 'new_admin_test@example.com', admin.unconfirmed_email
276
316
 
277
- create_second_admin(:email => "new_admin_test@example.com")
317
+ create_second_admin(email: "new_admin_test@example.com")
278
318
 
279
319
  visit_admin_confirmation_with_token(admin.raw_confirmation_token)
280
320
  assert_have_selector '#error_explanation'
@@ -2,21 +2,21 @@ require 'test_helper'
2
2
 
3
3
  class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
4
4
  test 'sign in with email of different case should succeed when email is in the list of case insensitive keys' do
5
- create_user(:email => 'Foo@Bar.com')
5
+ create_user(email: 'Foo@Bar.com')
6
6
 
7
7
  sign_in_as_user do
8
- fill_in 'email', :with => 'foo@bar.com'
8
+ fill_in 'email', with: 'foo@bar.com'
9
9
  end
10
10
 
11
11
  assert warden.authenticated?(:user)
12
12
  end
13
13
 
14
14
  test 'sign in with email of different case should fail when email is NOT the list of case insensitive keys' do
15
- swap Devise, :case_insensitive_keys => [] do
16
- create_user(:email => 'Foo@Bar.com')
15
+ swap Devise, case_insensitive_keys: [] do
16
+ create_user(email: 'Foo@Bar.com')
17
17
 
18
18
  sign_in_as_user do
19
- fill_in 'email', :with => 'foo@bar.com'
19
+ fill_in 'email', with: 'foo@bar.com'
20
20
  end
21
21
 
22
22
  assert_not warden.authenticated?(:user)
@@ -24,21 +24,21 @@ class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
24
24
  end
25
25
 
26
26
  test 'sign in with email including extra spaces should succeed when email is in the list of strip whitespace keys' do
27
- create_user(:email => ' foo@bar.com ')
27
+ create_user(email: ' foo@bar.com ')
28
28
 
29
29
  sign_in_as_user do
30
- fill_in 'email', :with => 'foo@bar.com'
30
+ fill_in 'email', with: 'foo@bar.com'
31
31
  end
32
32
 
33
33
  assert warden.authenticated?(:user)
34
34
  end
35
35
 
36
36
  test 'sign in with email including extra spaces should fail when email is NOT the list of strip whitespace keys' do
37
- swap Devise, :strip_whitespace_keys => [] do
38
- create_user(:email => 'foo@bar.com')
37
+ swap Devise, strip_whitespace_keys: [] do
38
+ create_user(email: 'foo@bar.com')
39
39
 
40
40
  sign_in_as_user do
41
- fill_in 'email', :with => ' foo@bar.com '
41
+ fill_in 'email', with: ' foo@bar.com '
42
42
  end
43
43
 
44
44
  assert_not warden.authenticated?(:user)
@@ -46,16 +46,16 @@ class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
46
46
  end
47
47
 
48
48
  test 'sign in should not authenticate if not using proper authentication keys' do
49
- swap Devise, :authentication_keys => [:username] do
49
+ swap Devise, authentication_keys: [:username] do
50
50
  sign_in_as_user
51
51
  assert_not warden.authenticated?(:user)
52
52
  end
53
53
  end
54
54
 
55
55
  test 'sign in with invalid email should return to sign in form with error message' do
56
- store_translations :en, :devise => { :failure => { :admin => { :not_found_in_database => 'Invalid email address' } } } do
56
+ store_translations :en, devise: { failure: { admin: { not_found_in_database: 'Invalid email address' } } } do
57
57
  sign_in_as_admin do
58
- fill_in 'email', :with => 'wrongemail@test.com'
58
+ fill_in 'email', with: 'wrongemail@test.com'
59
59
  end
60
60
 
61
61
  assert_contain 'Invalid email address'
@@ -65,7 +65,7 @@ class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
65
65
 
66
66
  test 'sign in with invalid pasword should return to sign in form with error message' do
67
67
  sign_in_as_admin do
68
- fill_in 'password', :with => 'abcdef'
68
+ fill_in 'password', with: 'abcdef'
69
69
  end
70
70
 
71
71
  assert_contain 'Invalid email or password'
@@ -73,9 +73,9 @@ class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
73
73
  end
74
74
 
75
75
  test 'error message is configurable by resource name' do
76
- store_translations :en, :devise => { :failure => { :admin => { :invalid => "Invalid credentials" } } } do
76
+ store_translations :en, devise: { failure: { admin: { invalid: "Invalid credentials" } } } do
77
77
  sign_in_as_admin do
78
- fill_in 'password', :with => 'abcdef'
78
+ fill_in 'password', with: 'abcdef'
79
79
  end
80
80
 
81
81
  assert_contain 'Invalid credentials'
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class HttpAuthenticationTest < ActionDispatch::IntegrationTest
4
4
  test 'handles unverified requests gets rid of caches but continues signed in' do
5
- swap ApplicationController, :allow_forgery_protection => true do
5
+ swap ApplicationController, allow_forgery_protection: true do
6
6
  create_user
7
7
  post exhibit_user_url(1), {}, "HTTP_AUTHORIZATION" => "Basic #{Base64.encode64("user@test.com:12345678")}"
8
8
  assert warden.authenticated?(:user)
@@ -16,18 +16,18 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
16
16
  assert_match '<email>user@test.com</email>', response.body
17
17
  assert warden.authenticated?(:user)
18
18
 
19
- get users_path(:format => :xml)
19
+ get users_path(format: :xml)
20
20
  assert_response 200
21
21
  end
22
22
 
23
23
  test 'sign in should authenticate with http but not emit a cookie if skipping session storage' do
24
- swap Devise, :skip_session_storage => [:http_auth] do
24
+ swap Devise, skip_session_storage: [:http_auth] do
25
25
  sign_in_as_new_user_with_http
26
26
  assert_response 200
27
27
  assert_match '<email>user@test.com</email>', response.body
28
28
  assert warden.authenticated?(:user)
29
29
 
30
- get users_path(:format => :xml)
30
+ get users_path(format: :xml)
31
31
  assert_response 401
32
32
  end
33
33
  end
@@ -42,11 +42,11 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
42
42
  sign_in_as_new_user_with_http("unknown")
43
43
  assert_equal 401, status
44
44
  assert_equal "application/xml; charset=utf-8", headers["Content-Type"]
45
- assert_match "<error>Invalid email or password.</error>", response.body
45
+ assert_match "<error>Invalid email address or password.</error>", response.body
46
46
  end
47
47
 
48
48
  test 'returns a custom response with www-authenticate and chosen realm' do
49
- swap Devise, :http_authentication_realm => "MyApp" do
49
+ swap Devise, http_authentication_realm: "MyApp" do
50
50
  sign_in_as_new_user_with_http("unknown")
51
51
  assert_equal 401, status
52
52
  assert_equal 'Basic realm="MyApp"', headers["WWW-Authenticate"]
@@ -54,7 +54,7 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
54
54
  end
55
55
 
56
56
  test 'sign in should authenticate with http even with specific authentication keys' do
57
- swap Devise, :authentication_keys => [:username] do
57
+ swap Devise, authentication_keys: [:username] do
58
58
  sign_in_as_new_user_with_http("usertest")
59
59
  assert_response :success
60
60
  assert_match '<email>user@test.com</email>', response.body
@@ -63,7 +63,7 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
63
63
  end
64
64
 
65
65
  test 'it uses appropriate authentication_keys when configured with hash' do
66
- swap Devise, :authentication_keys => ActiveSupport::OrderedHash[:username, false, :email, false] do
66
+ swap Devise, authentication_keys: ActiveSupport::OrderedHash[:username, false, :email, false] do
67
67
  sign_in_as_new_user_with_http("usertest")
68
68
  assert_response :success
69
69
  assert_match '<email>user@test.com</email>', response.body
@@ -72,7 +72,7 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
72
72
  end
73
73
 
74
74
  test 'it uses the appropriate key when configured explicitly' do
75
- swap Devise, :authentication_keys => ActiveSupport::OrderedHash[:email, false, :username, false], :http_authentication_key => :username do
75
+ swap Devise, authentication_keys: ActiveSupport::OrderedHash[:email, false, :username, false], http_authentication_key: :username do
76
76
  sign_in_as_new_user_with_http("usertest")
77
77
  assert_response :success
78
78
  assert_match '<email>user@test.com</email>', response.body
@@ -81,7 +81,7 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
81
81
  end
82
82
 
83
83
  test 'test request with oauth2 header doesnt get mistaken for basic authentication' do
84
- swap Devise, :http_authenticatable => true do
84
+ swap Devise, http_authenticatable: true do
85
85
  add_oauth2_header
86
86
  assert_equal 401, status
87
87
  assert_equal 'Basic realm="Application"', headers["WWW-Authenticate"]
@@ -92,14 +92,14 @@ class HttpAuthenticationTest < ActionDispatch::IntegrationTest
92
92
 
93
93
  def sign_in_as_new_user_with_http(username="user@test.com", password="12345678")
94
94
  user = create_user
95
- get users_path(:format => :xml), {}, "HTTP_AUTHORIZATION" => "Basic #{Base64.encode64("#{username}:#{password}")}"
95
+ get users_path(format: :xml), {}, "HTTP_AUTHORIZATION" => "Basic #{Base64.encode64("#{username}:#{password}")}"
96
96
  user
97
97
  end
98
98
 
99
99
  # Sign in with oauth2 token. This is just to test that it isn't misinterpreted as basic authentication
100
100
  def add_oauth2_header
101
101
  user = create_user
102
- get users_path(:format => :xml), {}, "HTTP_AUTHORIZATION" => "OAuth #{Base64.encode64("#{user.email}:12345678")}"
102
+ get users_path(format: :xml), {}, "HTTP_AUTHORIZATION" => "OAuth #{Base64.encode64("#{user.email}:12345678")}"
103
103
  end
104
104
 
105
105
  end