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
data/test/routes_test.rb DELETED
@@ -1,279 +0,0 @@
1
- require 'test_helper'
2
-
3
- ExpectedRoutingError = MiniTest::Assertion
4
-
5
- class DefaultRoutingTest < ActionController::TestCase
6
- test 'map new user session' do
7
- assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: 'users/sign_in', method: :get})
8
- assert_named_route "/users/sign_in", :new_user_session_path
9
- end
10
-
11
- test 'map create user session' do
12
- assert_recognizes({controller: 'devise/sessions', action: 'create'}, {path: 'users/sign_in', method: :post})
13
- assert_named_route "/users/sign_in", :user_session_path
14
- end
15
-
16
- test 'map destroy user session' do
17
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: 'users/sign_out', method: :delete})
18
- assert_named_route "/users/sign_out", :destroy_user_session_path
19
- end
20
-
21
- test 'map new user confirmation' do
22
- assert_recognizes({controller: 'devise/confirmations', action: 'new'}, 'users/confirmation/new')
23
- assert_named_route "/users/confirmation/new", :new_user_confirmation_path
24
- end
25
-
26
- test 'map create user confirmation' do
27
- assert_recognizes({controller: 'devise/confirmations', action: 'create'}, {path: 'users/confirmation', method: :post})
28
- assert_named_route "/users/confirmation", :user_confirmation_path
29
- end
30
-
31
- test 'map show user confirmation' do
32
- assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: 'users/confirmation', method: :get})
33
- end
34
-
35
- test 'map new user password' do
36
- assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'users/password/new')
37
- assert_named_route "/users/password/new", :new_user_password_path
38
- end
39
-
40
- test 'map create user password' do
41
- assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: 'users/password', method: :post})
42
- assert_named_route "/users/password", :user_password_path
43
- end
44
-
45
- test 'map edit user password' do
46
- assert_recognizes({controller: 'devise/passwords', action: 'edit'}, 'users/password/edit')
47
- assert_named_route "/users/password/edit", :edit_user_password_path
48
- end
49
-
50
- test 'map update user password' do
51
- assert_recognizes({controller: 'devise/passwords', action: 'update'}, {path: 'users/password', method: :put})
52
- end
53
-
54
- test 'map new user unlock' do
55
- assert_recognizes({controller: 'devise/unlocks', action: 'new'}, 'users/unlock/new')
56
- assert_named_route "/users/unlock/new", :new_user_unlock_path
57
- end
58
-
59
- test 'map create user unlock' do
60
- assert_recognizes({controller: 'devise/unlocks', action: 'create'}, {path: 'users/unlock', method: :post})
61
- assert_named_route "/users/unlock", :user_unlock_path
62
- end
63
-
64
- test 'map show user unlock' do
65
- assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: 'users/unlock', method: :get})
66
- end
67
-
68
- test 'map new user registration' do
69
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, 'users/sign_up')
70
- assert_named_route "/users/sign_up", :new_user_registration_path
71
- end
72
-
73
- test 'map create user registration' do
74
- assert_recognizes({controller: 'devise/registrations', action: 'create'}, {path: 'users', method: :post})
75
- assert_named_route "/users", :user_registration_path
76
- end
77
-
78
- test 'map edit user registration' do
79
- assert_recognizes({controller: 'devise/registrations', action: 'edit'}, {path: 'users/edit', method: :get})
80
- assert_named_route "/users/edit", :edit_user_registration_path
81
- end
82
-
83
- test 'map update user registration' do
84
- assert_recognizes({controller: 'devise/registrations', action: 'update'}, {path: 'users', method: :put})
85
- end
86
-
87
- test 'map destroy user registration' do
88
- assert_recognizes({controller: 'devise/registrations', action: 'destroy'}, {path: 'users', method: :delete})
89
- end
90
-
91
- test 'map cancel user registration' do
92
- assert_recognizes({controller: 'devise/registrations', action: 'cancel'}, {path: 'users/cancel', method: :get})
93
- assert_named_route "/users/cancel", :cancel_user_registration_path
94
- end
95
-
96
- test 'map omniauth callbacks' do
97
- assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :get})
98
- assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :post})
99
- assert_named_route "/users/auth/facebook/callback", :user_facebook_omniauth_callback_path
100
-
101
- # named open_id
102
- assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :get})
103
- assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :post})
104
- assert_named_route "/users/auth/google/callback", :user_google_omniauth_callback_path
105
-
106
- assert_raise ExpectedRoutingError do
107
- assert_recognizes({controller: 'ysers/omniauth_callbacks', action: 'twitter'}, {path: 'users/auth/twitter/callback', method: :get})
108
- end
109
- end
110
-
111
- protected
112
-
113
- def assert_named_route(result, *args)
114
- assert_equal result, @routes.url_helpers.send(*args)
115
- end
116
- end
117
-
118
- class CustomizedRoutingTest < ActionController::TestCase
119
- test 'map admin with :path option' do
120
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'admin_area/sign_up', method: :get})
121
- end
122
-
123
- test 'map admin with :controllers option' do
124
- assert_recognizes({controller: 'admins/sessions', action: 'new'}, {path: 'admin_area/sign_in', method: :get})
125
- end
126
-
127
- test 'does not map admin password' do
128
- assert_raise ExpectedRoutingError do
129
- assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'admin_area/password/new')
130
- end
131
- end
132
-
133
- test 'subdomain admin' do
134
- assert_recognizes({"host"=>"sub.example.com", controller: 'devise/sessions', action: 'new'}, {host: "sub.example.com", path: '/sub_admin/sign_in', method: :get})
135
- end
136
-
137
- test 'does only map reader password' do
138
- assert_raise ExpectedRoutingError do
139
- assert_recognizes({controller: 'devise/sessions', action: 'new'}, 'reader/sessions/new')
140
- end
141
- assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'reader/password/new')
142
- end
143
-
144
- test 'map account with custom path name for session sign in' do
145
- assert_recognizes({controller: 'devise/sessions', action: 'new', locale: 'en'}, '/en/accounts/login')
146
- end
147
-
148
- test 'map account with custom path name for session sign out' do
149
- assert_recognizes({controller: 'devise/sessions', action: 'destroy', locale: 'en'}, {path: '/en/accounts/logout', method: :delete })
150
- end
151
-
152
- test 'map account with custom path name for password' do
153
- assert_recognizes({controller: 'devise/passwords', action: 'new', locale: 'en'}, '/en/accounts/secret/new')
154
- end
155
-
156
- test 'map account with custom path name for registration' do
157
- assert_recognizes({controller: 'devise/registrations', action: 'new', locale: 'en'}, '/en/accounts/management/register')
158
- end
159
-
160
- test 'map account with custom path name for edit registration' do
161
- assert_recognizes({controller: 'devise/registrations', action: 'edit', locale: 'en'}, '/en/accounts/management/edit/profile')
162
- end
163
-
164
- test 'map account with custom path name for cancel registration' do
165
- assert_recognizes({controller: 'devise/registrations', action: 'cancel', locale: 'en'}, '/en/accounts/management/giveup')
166
- end
167
-
168
- test 'map deletes with :sign_out_via option' do
169
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :delete})
170
- assert_raise ExpectedRoutingError do
171
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :get})
172
- end
173
- end
174
-
175
- test 'map posts with :sign_out_via option' do
176
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :post})
177
- assert_raise ExpectedRoutingError do
178
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :get})
179
- end
180
- end
181
-
182
- test 'map delete_or_posts with :sign_out_via option' do
183
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :post})
184
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :delete})
185
- assert_raise ExpectedRoutingError do
186
- assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :get})
187
- end
188
- end
189
-
190
- test 'map with constraints defined in hash' do
191
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/headquarters/sign_up', method: :get})
192
- assert_raise ExpectedRoutingError do
193
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100/headquarters/sign_up', method: :get})
194
- end
195
- end
196
-
197
- test 'map with constraints defined in block' do
198
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/homebase/sign_up', method: :get})
199
- assert_raise ExpectedRoutingError do
200
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100//homebase/sign_up', method: :get})
201
- end
202
- end
203
-
204
- test 'map with format false for sessions' do
205
- expected_params = {controller: 'devise/sessions', action: 'new'}
206
- expected_params[:format] = false if Devise::Test.rails5?
207
-
208
- assert_recognizes(expected_params, {path: '/htmlonly_admin/sign_in', method: :get})
209
- assert_raise ExpectedRoutingError do
210
- assert_recognizes(expected_params, {path: '/htmlonly_admin/sign_in.xml', method: :get})
211
- end
212
- end
213
-
214
- test 'map with format false for passwords' do
215
- expected_params = {controller: 'devise/passwords', action: 'create'}
216
- expected_params[:format] = false if Devise::Test.rails5?
217
-
218
- assert_recognizes(expected_params, {path: '/htmlonly_admin/password', method: :post})
219
- assert_raise ExpectedRoutingError do
220
- assert_recognizes(expected_params, {path: '/htmlonly_admin/password.xml', method: :post})
221
- end
222
- end
223
-
224
- test 'map with format false for registrations' do
225
- expected_params = {controller: 'devise/registrations', action: 'new'}
226
- expected_params[:format] = false if Devise::Test.rails5?
227
-
228
- assert_recognizes(expected_params, {path: '/htmlonly_admin/sign_up', method: :get})
229
- assert_raise ExpectedRoutingError do
230
- assert_recognizes(expected_params, {path: '/htmlonly_admin/sign_up.xml', method: :get})
231
- end
232
- end
233
-
234
- test 'map with format false for confirmations' do
235
- expected_params = {controller: 'devise/confirmations', action: 'show'}
236
- expected_params[:format] = false if Devise::Test.rails5?
237
-
238
- assert_recognizes(expected_params, {path: '/htmlonly_users/confirmation', method: :get})
239
- assert_raise ExpectedRoutingError do
240
- assert_recognizes(expected_params, {path: '/htmlonly_users/confirmation.xml', method: :get})
241
- end
242
- end
243
-
244
- test 'map with format false for unlocks' do
245
- expected_params = {controller: 'devise/unlocks', action: 'show'}
246
- expected_params[:format] = false if Devise::Test.rails5?
247
-
248
- assert_recognizes(expected_params, {path: '/htmlonly_users/unlock', method: :get})
249
- assert_raise ExpectedRoutingError do
250
- assert_recognizes(expected_params, {path: '/htmlonly_users/unlock.xml', method: :get})
251
- end
252
- end
253
-
254
- test 'map with format false is not permanent' do
255
- assert_equal "/set.xml", @routes.url_helpers.set_path(:xml)
256
- end
257
-
258
- test 'checks if mapping has proper configuration for omniauth callback' do
259
- e = assert_raise ArgumentError do
260
- routes = ActionDispatch::Routing::RouteSet.new
261
- routes.draw do
262
- devise_for :not_omniauthable, class_name: 'Admin', controllers: {omniauth_callbacks: "users/omniauth_callbacks"}
263
- end
264
- end
265
- assert_match "Mapping omniauth_callbacks on a resource that is not omniauthable", e.message
266
- end
267
- end
268
-
269
- class ScopedRoutingTest < ActionController::TestCase
270
- test 'map publisher account' do
271
- assert_recognizes({controller: 'publisher/registrations', action: 'new'}, {path: '/publisher/accounts/sign_up', method: :get})
272
- assert_equal '/publisher/accounts/sign_up', @routes.url_helpers.new_publisher_account_registration_path
273
- end
274
-
275
- test 'map publisher account merges path names' do
276
- assert_recognizes({controller: 'publisher/sessions', action: 'new'}, {path: '/publisher/accounts/get_in', method: :get})
277
- assert_equal '/publisher/accounts/get_in', @routes.url_helpers.new_publisher_account_session_path
278
- end
279
- end
@@ -1,10 +0,0 @@
1
- # Since webrat uses ActionController::RecordIdentifier class that was moved to
2
- # ActionView namespace in Rails 4.1+
3
-
4
- unless defined?(ActionController::RecordIdentifier)
5
- require 'action_view/record_identifier'
6
-
7
- module ActionController
8
- RecordIdentifier = ActionView::RecordIdentifier
9
- end
10
- end
@@ -1,28 +0,0 @@
1
- require 'active_support/test_case'
2
-
3
- class ActiveSupport::TestCase
4
- def assert_blank(assertion)
5
- assert assertion.blank?
6
- end
7
-
8
- def assert_present(assertion)
9
- assert assertion.present?
10
- end
11
-
12
- def assert_email_sent(address = nil, &block)
13
- assert_difference('ActionMailer::Base.deliveries.size', &block)
14
- if address.present?
15
- assert_equal address, ActionMailer::Base.deliveries.last['to'].to_s
16
- end
17
- end
18
-
19
- def assert_email_not_sent(&block)
20
- assert_no_difference('ActionMailer::Base.deliveries.size', &block)
21
- end
22
-
23
- def assert_raise_with_message(exception_klass, message, &block)
24
- exception = assert_raise exception_klass, &block
25
- assert_equal exception.message, message,
26
- "The expected message was #{message} but your exception throwed #{exception.message}"
27
- end
28
- end
@@ -1,77 +0,0 @@
1
- require 'active_support/test_case'
2
-
3
- class ActiveSupport::TestCase
4
- VALID_AUTHENTICATION_TOKEN = 'AbCdEfGhIjKlMnOpQrSt'.freeze
5
-
6
- def setup_mailer
7
- ActionMailer::Base.deliveries = []
8
- end
9
-
10
- def store_translations(locale, translations, &block)
11
- # Calling 'available_locales' before storing the translations to ensure
12
- # that the I18n backend will be initialized before we store our custom
13
- # translations, so they will always override the translations for the
14
- # YML file.
15
- I18n.available_locales
16
- I18n.backend.store_translations(locale, translations)
17
- yield
18
- ensure
19
- I18n.reload!
20
- end
21
-
22
- def generate_unique_email
23
- @@email_count ||= 0
24
- @@email_count += 1
25
- "test#{@@email_count}@example.com"
26
- end
27
-
28
- def valid_attributes(attributes={})
29
- { username: "usertest",
30
- email: generate_unique_email,
31
- password: '12345678',
32
- password_confirmation: '12345678' }.update(attributes)
33
- end
34
-
35
- def new_user(attributes={})
36
- User.new(valid_attributes(attributes))
37
- end
38
-
39
- def create_user(attributes={})
40
- User.create!(valid_attributes(attributes))
41
- end
42
-
43
- def create_admin(attributes={})
44
- valid_attributes = valid_attributes(attributes)
45
- valid_attributes.delete(:username)
46
- Admin.create!(valid_attributes)
47
- end
48
-
49
- def create_user_without_email(attributes={})
50
- UserWithoutEmail.create!(valid_attributes(attributes))
51
- end
52
-
53
- # Execute the block setting the given values and restoring old values after
54
- # the block is executed.
55
- def swap(object, new_values)
56
- old_values = {}
57
- new_values.each do |key, value|
58
- old_values[key] = object.send key
59
- object.send :"#{key}=", value
60
- end
61
- clear_cached_variables(new_values)
62
- yield
63
- ensure
64
- clear_cached_variables(new_values)
65
- old_values.each do |key, value|
66
- object.send :"#{key}=", value
67
- end
68
- end
69
-
70
- def clear_cached_variables(options)
71
- if options.key?(:case_insensitive_keys) || options.key?(:strip_whitespace_keys)
72
- Devise.mappings.each do |_, mapping|
73
- mapping.to.instance_variable_set(:@devise_parameter_filter, nil)
74
- end
75
- end
76
- end
77
- end
@@ -1,51 +0,0 @@
1
- module Devise
2
- class IntegrationTest < ActionDispatch::IntegrationTest
3
- # %w( get post patch put head delete xml_http_request
4
- # xhr get_via_redirect post_via_redirect
5
- # ).each do |method|
6
- %w( get post put ).each do |method|
7
- if Rails.version >= '5.0.0'
8
- define_method(method) do |url, options={}|
9
- if options.empty?
10
- super url
11
- else
12
- super url, options
13
- end
14
- end
15
- else
16
- define_method(method) do |url, options={}|
17
- if options[:xhr]==true
18
- xml_http_request __method__, url, options[:params] || {}, options[:headers]
19
- else
20
- super url, options[:params] || {}, options[:headers]
21
- end
22
- end
23
- end
24
- end
25
- end
26
-
27
- class ControllerTestCase < ActionController::TestCase
28
- # %w( get post patch put head delete xml_http_request
29
- # xhr get_via_redirect post_via_redirect
30
- # ).each do |method|
31
- %w( get post put ).each do |method|
32
- if Rails.version >= '5.0.0'
33
- define_method(method) do |action, options={}|
34
- if options.empty?
35
- super action
36
- else
37
- super action, options
38
- end
39
- end
40
- else
41
- define_method(method) do |action, options={}|
42
- if options[:xhr]==true
43
- xml_http_request __method__, action, options[:params] || {}, options[:headers]
44
- else
45
- super action, options[:params] || {}, options[:headers]
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,92 +0,0 @@
1
- require 'action_dispatch/testing/integration'
2
-
3
- class ActionDispatch::IntegrationTest
4
- def warden
5
- request.env['warden']
6
- end
7
-
8
- def create_user(options={})
9
- @user ||= begin
10
- user = User.create!(
11
- username: 'usertest',
12
- email: options[:email] || 'user@test.com',
13
- password: options[:password] || '12345678',
14
- password_confirmation: options[:password] || '12345678',
15
- created_at: Time.now.utc
16
- )
17
- user.update_attribute(:confirmation_sent_at, options[:confirmation_sent_at]) if options[:confirmation_sent_at]
18
- user.confirm unless options[:confirm] == false
19
- user.lock_access! if options[:locked] == true
20
- user
21
- end
22
- end
23
-
24
- def create_admin(options={})
25
- @admin ||= begin
26
- admin = Admin.create!(
27
- email: options[:email] || 'admin@test.com',
28
- password: '123456', password_confirmation: '123456',
29
- active: options[:active]
30
- )
31
- admin.confirm unless options[:confirm] == false
32
- admin
33
- end
34
- end
35
-
36
- def sign_in_as_user(options={}, &block)
37
- user = create_user(options)
38
- visit_with_option options[:visit], new_user_session_path
39
- fill_in 'email', with: options[:email] || 'user@test.com'
40
- fill_in 'password', with: options[:password] || '12345678'
41
- check 'remember me' if options[:remember_me] == true
42
- yield if block_given?
43
- click_button 'Log In'
44
- user
45
- end
46
-
47
- def sign_in_as_admin(options={}, &block)
48
- admin = create_admin(options)
49
- visit_with_option options[:visit], new_admin_session_path
50
- fill_in 'email', with: 'admin@test.com'
51
- fill_in 'password', with: '123456'
52
- yield if block_given?
53
- click_button 'Log In'
54
- admin
55
- end
56
-
57
- # Fix assert_redirect_to in integration sessions because they don't take into
58
- # account Middleware redirects.
59
- #
60
- def assert_redirected_to(url)
61
- assert [301, 302].include?(@integration_session.status),
62
- "Expected status to be 301 or 302, got #{@integration_session.status}"
63
-
64
- assert_url url, @integration_session.headers["Location"]
65
- end
66
-
67
- def assert_current_url(expected)
68
- assert_url expected, current_url
69
- end
70
-
71
- def assert_url(expected, actual)
72
- assert_equal prepend_host(expected), prepend_host(actual)
73
- end
74
-
75
- protected
76
-
77
- def visit_with_option(given, default)
78
- case given
79
- when String
80
- visit given
81
- when FalseClass
82
- # Do nothing
83
- else
84
- visit default
85
- end
86
- end
87
-
88
- def prepend_host(url)
89
- url = "http://#{request.host}#{url}" if url[0] == ?/
90
- url
91
- end
92
- end
@@ -1,8 +0,0 @@
1
- en:
2
- devise:
3
- failure:
4
- user:
5
- does_not_exist: "User %{name} does not exist"
6
- errors:
7
- messages:
8
- taken: "has already been taken"
@@ -1,6 +0,0 @@
1
- test:
2
- <%= Mongoid::VERSION.to_i > 4 ? 'clients' : 'sessions' %>:
3
- default:
4
- database: devise-test-suite
5
- hosts:
6
- - localhost:<%= ENV['MONGODB_PORT'] || '27017' %>
@@ -1,33 +0,0 @@
1
- require 'webrat/core/elements/form'
2
- require 'action_dispatch/testing/integration'
3
-
4
- module Webrat
5
- Form.class_eval do
6
- def self.parse_rails_request_params(params)
7
- Rack::Utils.parse_nested_query(params)
8
- end
9
- end
10
-
11
- module Logging
12
- # Avoid RAILS_DEFAULT_LOGGER deprecation warning
13
- def logger # :nodoc:
14
- ::Rails.logger
15
- end
16
- end
17
-
18
- class RailsAdapter
19
- protected
20
-
21
- def do_request(http_method, url, data, headers)
22
- update_protocol(url)
23
- integration_session.send(http_method, normalize_url(url), params: data, headers: headers)
24
- end
25
- end
26
- end
27
-
28
- module ActionDispatch #:nodoc:
29
- IntegrationTest.class_eval do
30
- include Webrat::Methods
31
- include Webrat::Matchers
32
- end
33
- end