devise 3.5.10 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (257) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +240 -1147
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +240 -65
  5. data/app/controllers/devise/confirmations_controller.rb +3 -1
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +8 -6
  7. data/app/controllers/devise/passwords_controller.rb +7 -4
  8. data/app/controllers/devise/registrations_controller.rb +39 -18
  9. data/app/controllers/devise/sessions_controller.rb +9 -7
  10. data/app/controllers/devise/unlocks_controller.rb +4 -2
  11. data/app/controllers/devise_controller.rb +23 -10
  12. data/app/helpers/devise_helper.rb +12 -19
  13. data/app/mailers/devise/mailer.rb +6 -0
  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 +2 -2
  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 +7 -7
  23. data/app/views/devise/unlocks/new.html.erb +2 -2
  24. data/config/locales/en.yml +3 -0
  25. data/lib/devise/controllers/helpers.rb +23 -20
  26. data/lib/devise/controllers/rememberable.rb +3 -1
  27. data/lib/devise/controllers/scoped_views.rb +2 -0
  28. data/lib/devise/controllers/sign_in_out.rb +34 -11
  29. data/lib/devise/controllers/store_location.rb +25 -7
  30. data/lib/devise/controllers/url_helpers.rb +2 -0
  31. data/lib/devise/delegator.rb +2 -0
  32. data/lib/devise/encryptor.rb +6 -4
  33. data/lib/devise/failure_app.rb +81 -37
  34. data/lib/devise/hooks/activatable.rb +2 -0
  35. data/lib/devise/hooks/csrf_cleaner.rb +2 -0
  36. data/lib/devise/hooks/forgetable.rb +2 -0
  37. data/lib/devise/hooks/lockable.rb +6 -1
  38. data/lib/devise/hooks/proxy.rb +3 -1
  39. data/lib/devise/hooks/rememberable.rb +2 -0
  40. data/lib/devise/hooks/timeoutable.rb +2 -0
  41. data/lib/devise/hooks/trackable.rb +2 -0
  42. data/lib/devise/mailers/helpers.rb +7 -4
  43. data/lib/devise/mapping.rb +2 -0
  44. data/lib/devise/models/authenticatable.rb +51 -25
  45. data/lib/devise/models/confirmable.rb +76 -27
  46. data/lib/devise/models/database_authenticatable.rb +91 -23
  47. data/lib/devise/models/lockable.rb +10 -4
  48. data/lib/devise/models/omniauthable.rb +2 -0
  49. data/lib/devise/models/recoverable.rb +31 -19
  50. data/lib/devise/models/registerable.rb +4 -0
  51. data/lib/devise/models/rememberable.rb +5 -10
  52. data/lib/devise/models/timeoutable.rb +2 -0
  53. data/lib/devise/models/trackable.rb +15 -1
  54. data/lib/devise/models/validatable.rb +10 -3
  55. data/lib/devise/models.rb +3 -1
  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 +14 -5
  59. data/lib/devise/omniauth.rb +2 -0
  60. data/lib/devise/orm/active_record.rb +5 -1
  61. data/lib/devise/orm/mongoid.rb +6 -2
  62. data/lib/devise/parameter_filter.rb +4 -0
  63. data/lib/devise/parameter_sanitizer.rb +139 -65
  64. data/lib/devise/rails/routes.rb +42 -31
  65. data/lib/devise/rails/warden_compat.rb +3 -10
  66. data/lib/devise/rails.rb +7 -16
  67. data/lib/devise/secret_key_finder.rb +27 -0
  68. data/lib/devise/strategies/authenticatable.rb +2 -0
  69. data/lib/devise/strategies/base.rb +2 -0
  70. data/lib/devise/strategies/database_authenticatable.rb +11 -4
  71. data/lib/devise/strategies/rememberable.rb +2 -0
  72. data/lib/devise/test/controller_helpers.rb +165 -0
  73. data/lib/devise/test/integration_helpers.rb +63 -0
  74. data/lib/devise/test_helpers.rb +7 -124
  75. data/lib/devise/time_inflector.rb +2 -0
  76. data/lib/devise/token_generator.rb +3 -41
  77. data/lib/devise/version.rb +3 -1
  78. data/lib/devise.rb +61 -40
  79. data/lib/generators/active_record/devise_generator.rb +29 -10
  80. data/lib/generators/active_record/templates/migration.rb +4 -2
  81. data/lib/generators/active_record/templates/migration_existing.rb +4 -2
  82. data/lib/generators/devise/controllers_generator.rb +3 -1
  83. data/lib/generators/devise/devise_generator.rb +4 -2
  84. data/lib/generators/devise/install_generator.rb +17 -0
  85. data/lib/generators/devise/orm_helpers.rb +10 -21
  86. data/lib/generators/devise/views_generator.rb +7 -8
  87. data/lib/generators/mongoid/devise_generator.rb +7 -5
  88. data/lib/generators/templates/README +1 -8
  89. data/lib/generators/templates/controllers/confirmations_controller.rb +2 -0
  90. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +2 -0
  91. data/lib/generators/templates/controllers/passwords_controller.rb +2 -0
  92. data/lib/generators/templates/controllers/registrations_controller.rb +6 -4
  93. data/lib/generators/templates/controllers/sessions_controller.rb +4 -2
  94. data/lib/generators/templates/controllers/unlocks_controller.rb +2 -0
  95. data/lib/generators/templates/devise.rb +50 -20
  96. data/lib/generators/templates/markerb/email_changed.markerb +7 -0
  97. data/lib/generators/templates/markerb/password_change.markerb +2 -2
  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 +6 -1
  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 +11 -3
  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 +15 -307
  106. data/.gitignore +0 -10
  107. data/.travis.yml +0 -44
  108. data/.yardopts +0 -9
  109. data/CODE_OF_CONDUCT.md +0 -22
  110. data/CONTRIBUTING.md +0 -16
  111. data/Gemfile +0 -30
  112. data/Gemfile.lock +0 -187
  113. data/Rakefile +0 -36
  114. data/devise.gemspec +0 -27
  115. data/devise.png +0 -0
  116. data/gemfiles/Gemfile.rails-3.2-stable +0 -29
  117. data/gemfiles/Gemfile.rails-3.2-stable.lock +0 -172
  118. data/gemfiles/Gemfile.rails-4.0-stable +0 -30
  119. data/gemfiles/Gemfile.rails-4.0-stable.lock +0 -166
  120. data/gemfiles/Gemfile.rails-4.1-stable +0 -30
  121. data/gemfiles/Gemfile.rails-4.1-stable.lock +0 -171
  122. data/gemfiles/Gemfile.rails-4.2-stable +0 -30
  123. data/gemfiles/Gemfile.rails-4.2-stable.lock +0 -193
  124. data/script/cached-bundle +0 -49
  125. data/script/s3-put +0 -71
  126. data/test/controllers/custom_registrations_controller_test.rb +0 -40
  127. data/test/controllers/custom_strategy_test.rb +0 -62
  128. data/test/controllers/helper_methods_test.rb +0 -21
  129. data/test/controllers/helpers_test.rb +0 -316
  130. data/test/controllers/inherited_controller_i18n_messages_test.rb +0 -51
  131. data/test/controllers/internal_helpers_test.rb +0 -129
  132. data/test/controllers/load_hooks_controller_test.rb +0 -19
  133. data/test/controllers/passwords_controller_test.rb +0 -31
  134. data/test/controllers/sessions_controller_test.rb +0 -103
  135. data/test/controllers/url_helpers_test.rb +0 -65
  136. data/test/delegator_test.rb +0 -19
  137. data/test/devise_test.rb +0 -107
  138. data/test/failure_app_test.rb +0 -315
  139. data/test/generators/active_record_generator_test.rb +0 -109
  140. data/test/generators/controllers_generator_test.rb +0 -48
  141. data/test/generators/devise_generator_test.rb +0 -39
  142. data/test/generators/install_generator_test.rb +0 -13
  143. data/test/generators/mongoid_generator_test.rb +0 -23
  144. data/test/generators/views_generator_test.rb +0 -103
  145. data/test/helpers/devise_helper_test.rb +0 -49
  146. data/test/integration/authenticatable_test.rb +0 -729
  147. data/test/integration/confirmable_test.rb +0 -324
  148. data/test/integration/database_authenticatable_test.rb +0 -95
  149. data/test/integration/http_authenticatable_test.rb +0 -105
  150. data/test/integration/lockable_test.rb +0 -239
  151. data/test/integration/omniauthable_test.rb +0 -135
  152. data/test/integration/recoverable_test.rb +0 -347
  153. data/test/integration/registerable_test.rb +0 -359
  154. data/test/integration/rememberable_test.rb +0 -214
  155. data/test/integration/timeoutable_test.rb +0 -184
  156. data/test/integration/trackable_test.rb +0 -92
  157. data/test/mailers/confirmation_instructions_test.rb +0 -115
  158. data/test/mailers/reset_password_instructions_test.rb +0 -96
  159. data/test/mailers/unlock_instructions_test.rb +0 -91
  160. data/test/mapping_test.rb +0 -134
  161. data/test/models/authenticatable_test.rb +0 -23
  162. data/test/models/confirmable_test.rb +0 -511
  163. data/test/models/database_authenticatable_test.rb +0 -269
  164. data/test/models/lockable_test.rb +0 -350
  165. data/test/models/omniauthable_test.rb +0 -7
  166. data/test/models/recoverable_test.rb +0 -251
  167. data/test/models/registerable_test.rb +0 -7
  168. data/test/models/rememberable_test.rb +0 -169
  169. data/test/models/serializable_test.rb +0 -49
  170. data/test/models/timeoutable_test.rb +0 -51
  171. data/test/models/trackable_test.rb +0 -41
  172. data/test/models/validatable_test.rb +0 -127
  173. data/test/models_test.rb +0 -153
  174. data/test/omniauth/config_test.rb +0 -57
  175. data/test/omniauth/url_helpers_test.rb +0 -54
  176. data/test/orm/active_record.rb +0 -10
  177. data/test/orm/mongoid.rb +0 -13
  178. data/test/parameter_sanitizer_test.rb +0 -81
  179. data/test/rails_app/Rakefile +0 -6
  180. data/test/rails_app/app/active_record/admin.rb +0 -6
  181. data/test/rails_app/app/active_record/shim.rb +0 -2
  182. data/test/rails_app/app/active_record/user.rb +0 -6
  183. data/test/rails_app/app/active_record/user_on_engine.rb +0 -7
  184. data/test/rails_app/app/active_record/user_on_main_app.rb +0 -7
  185. data/test/rails_app/app/active_record/user_without_email.rb +0 -8
  186. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  187. data/test/rails_app/app/controllers/admins_controller.rb +0 -6
  188. data/test/rails_app/app/controllers/application_controller.rb +0 -12
  189. data/test/rails_app/app/controllers/application_with_fake_engine.rb +0 -30
  190. data/test/rails_app/app/controllers/custom/registrations_controller.rb +0 -31
  191. data/test/rails_app/app/controllers/home_controller.rb +0 -25
  192. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  193. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  194. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  195. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  196. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  197. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +0 -3
  198. data/test/rails_app/app/mailers/users/mailer.rb +0 -3
  199. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +0 -4
  200. data/test/rails_app/app/mongoid/admin.rb +0 -29
  201. data/test/rails_app/app/mongoid/shim.rb +0 -23
  202. data/test/rails_app/app/mongoid/user.rb +0 -39
  203. data/test/rails_app/app/mongoid/user_on_engine.rb +0 -39
  204. data/test/rails_app/app/mongoid/user_on_main_app.rb +0 -39
  205. data/test/rails_app/app/mongoid/user_without_email.rb +0 -33
  206. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  207. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  208. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  209. data/test/rails_app/app/views/home/index.html.erb +0 -1
  210. data/test/rails_app/app/views/home/join.html.erb +0 -1
  211. data/test/rails_app/app/views/home/private.html.erb +0 -1
  212. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  213. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  214. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  215. data/test/rails_app/app/views/users/index.html.erb +0 -1
  216. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  217. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  218. data/test/rails_app/bin/bundle +0 -3
  219. data/test/rails_app/bin/rails +0 -4
  220. data/test/rails_app/bin/rake +0 -4
  221. data/test/rails_app/config/application.rb +0 -40
  222. data/test/rails_app/config/boot.rb +0 -14
  223. data/test/rails_app/config/database.yml +0 -18
  224. data/test/rails_app/config/environment.rb +0 -5
  225. data/test/rails_app/config/environments/development.rb +0 -30
  226. data/test/rails_app/config/environments/production.rb +0 -84
  227. data/test/rails_app/config/environments/test.rb +0 -41
  228. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  229. data/test/rails_app/config/initializers/devise.rb +0 -180
  230. data/test/rails_app/config/initializers/inflections.rb +0 -2
  231. data/test/rails_app/config/initializers/secret_token.rb +0 -8
  232. data/test/rails_app/config/initializers/session_store.rb +0 -1
  233. data/test/rails_app/config/routes.rb +0 -125
  234. data/test/rails_app/config.ru +0 -4
  235. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
  236. data/test/rails_app/db/schema.rb +0 -55
  237. data/test/rails_app/lib/shared_admin.rb +0 -17
  238. data/test/rails_app/lib/shared_user.rb +0 -29
  239. data/test/rails_app/lib/shared_user_without_email.rb +0 -26
  240. data/test/rails_app/lib/shared_user_without_omniauth.rb +0 -13
  241. data/test/rails_app/public/404.html +0 -26
  242. data/test/rails_app/public/422.html +0 -26
  243. data/test/rails_app/public/500.html +0 -26
  244. data/test/rails_app/public/favicon.ico +0 -0
  245. data/test/rails_test.rb +0 -9
  246. data/test/routes_test.rb +0 -264
  247. data/test/support/action_controller/record_identifier.rb +0 -10
  248. data/test/support/assertions.rb +0 -39
  249. data/test/support/helpers.rb +0 -77
  250. data/test/support/integration.rb +0 -92
  251. data/test/support/locale/en.yml +0 -8
  252. data/test/support/mongoid.yml +0 -6
  253. data/test/support/webrat/integrations/rails.rb +0 -24
  254. data/test/test_helper.rb +0 -34
  255. data/test/test_helpers_test.rb +0 -178
  256. data/test/test_models.rb +0 -33
  257. data/test/time_helpers.rb +0 -137
data/test/routes_test.rb DELETED
@@ -1,264 +0,0 @@
1
- require 'test_helper'
2
-
3
- ExpectedRoutingError = Devise.rails4? ? MiniTest::Assertion : ActionController::RoutingError
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: :get})
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_omniauth_callback_path, :facebook
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_omniauth_callback_path, :google
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'}, '/en/accounts/logout')
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
- assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in', method: :get})
206
- assert_raise ExpectedRoutingError do
207
- assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in.xml', method: :get})
208
- end
209
- end
210
-
211
- test 'map with format false for passwords' do
212
- assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password', method: :post})
213
- assert_raise ExpectedRoutingError do
214
- assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password.xml', method: :post})
215
- end
216
- end
217
-
218
- test 'map with format false for registrations' do
219
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up', method: :get})
220
- assert_raise ExpectedRoutingError do
221
- assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up.xml', method: :get})
222
- end
223
- end
224
-
225
- test 'map with format false for confirmations' do
226
- assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation', method: :get})
227
- assert_raise ExpectedRoutingError do
228
- assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation.xml', method: :get})
229
- end
230
- end
231
-
232
- test 'map with format false for unlocks' do
233
- assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock', method: :get})
234
- assert_raise ExpectedRoutingError do
235
- assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock.xml', method: :get})
236
- end
237
- end
238
-
239
- test 'map with format false is not permanent' do
240
- assert_equal "/set.xml", @routes.url_helpers.set_path(:xml)
241
- end
242
-
243
- test 'checks if mapping has proper configuration for omniauth callback' do
244
- e = assert_raise ArgumentError do
245
- routes = ActionDispatch::Routing::RouteSet.new
246
- routes.draw do
247
- devise_for :not_omniauthable, class_name: 'Admin', controllers: {omniauth_callbacks: "users/omniauth_callbacks"}
248
- end
249
- end
250
- assert_match "Mapping omniauth_callbacks on a resource that is not omniauthable", e.message
251
- end
252
- end
253
-
254
- class ScopedRoutingTest < ActionController::TestCase
255
- test 'map publisher account' do
256
- assert_recognizes({controller: 'publisher/registrations', action: 'new'}, {path: '/publisher/accounts/sign_up', method: :get})
257
- assert_equal '/publisher/accounts/sign_up', @routes.url_helpers.new_publisher_account_registration_path
258
- end
259
-
260
- test 'map publisher account merges path names' do
261
- assert_recognizes({controller: 'publisher/sessions', action: 'new'}, {path: '/publisher/accounts/get_in', method: :get})
262
- assert_equal '/publisher/accounts/get_in', @routes.url_helpers.new_publisher_account_session_path
263
- end
264
- 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,39 +0,0 @@
1
- require 'active_support/test_case'
2
-
3
- class ActiveSupport::TestCase
4
- def assert_not(assertion)
5
- assert !assertion
6
- end
7
-
8
- def assert_blank(assertion)
9
- assert assertion.blank?
10
- end
11
-
12
- def assert_present(assertion)
13
- assert assertion.present?
14
- end
15
-
16
- def assert_email_sent(address = nil, &block)
17
- assert_difference('ActionMailer::Base.deliveries.size', &block)
18
- if address.present?
19
- assert_equal address, ActionMailer::Base.deliveries.last['to'].to_s
20
- end
21
- end
22
-
23
- def assert_email_not_sent(&block)
24
- assert_no_difference('ActionMailer::Base.deliveries.size', &block)
25
- end
26
-
27
- def assert_same_content(result, expected)
28
- assert expected.size == result.size, "the arrays doesn't have the same size"
29
- expected.each do |element|
30
- assert result.include?(element), "The array doesn't include '#{element}'."
31
- end
32
- end
33
-
34
- def assert_raise_with_message(exception_klass, message, &block)
35
- exception = assert_raise exception_klass, &block
36
- assert_equal exception.message, message,
37
- "The expected message was #{message} but your exception throwed #{exception.message}"
38
- end
39
- 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,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
- sessions:
3
- default:
4
- database: devise-test-suite
5
- hosts:
6
- - localhost:<%= ENV['MONGODB_PORT'] || '27017' %>
@@ -1,24 +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
- end
18
-
19
- module ActionDispatch #:nodoc:
20
- IntegrationTest.class_eval do
21
- include Webrat::Methods
22
- include Webrat::Matchers
23
- end
24
- end
data/test/test_helper.rb DELETED
@@ -1,34 +0,0 @@
1
- ENV["RAILS_ENV"] = "test"
2
- DEVISE_ORM = (ENV["DEVISE_ORM"] || :active_record).to_sym
3
-
4
- $:.unshift File.dirname(__FILE__)
5
- puts "\n==> Devise.orm = #{DEVISE_ORM.inspect}"
6
-
7
- require "rails_app/config/environment"
8
- require "rails/test_help"
9
- require "orm/#{DEVISE_ORM}"
10
-
11
- I18n.load_path << File.expand_path("../support/locale/en.yml", __FILE__)
12
-
13
- require 'mocha/setup'
14
- require 'webrat'
15
- Webrat.configure do |config|
16
- config.mode = :rails
17
- config.open_error_files = false
18
- end
19
-
20
- if ActiveSupport.respond_to?(:test_order)
21
- ActiveSupport.test_order = :random
22
- end
23
-
24
- OmniAuth.config.logger = Logger.new('/dev/null')
25
-
26
- # Add support to load paths so we can overwrite broken webrat setup
27
- $:.unshift File.expand_path('../support', __FILE__)
28
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
29
-
30
- # For generators
31
- require "rails/generators/test_case"
32
- require "generators/devise/install_generator"
33
- require "generators/devise/views_generator"
34
- require "generators/devise/controllers_generator"