devise 3.0.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +351 -0
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +422 -130
  5. data/app/controllers/devise/confirmations_controller.rb +17 -6
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +12 -6
  7. data/app/controllers/devise/passwords_controller.rb +23 -8
  8. data/app/controllers/devise/registrations_controller.rb +70 -28
  9. data/app/controllers/devise/sessions_controller.rb +49 -17
  10. data/app/controllers/devise/unlocks_controller.rb +11 -4
  11. data/app/controllers/devise_controller.rb +74 -34
  12. data/app/helpers/devise_helper.rb +23 -18
  13. data/app/mailers/devise/mailer.rb +25 -10
  14. data/app/views/devise/confirmations/new.html.erb +9 -5
  15. data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
  16. data/app/views/devise/mailer/email_changed.html.erb +7 -0
  17. data/app/views/devise/mailer/password_change.html.erb +3 -0
  18. data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
  19. data/app/views/devise/mailer/unlock_instructions.html.erb +1 -1
  20. data/app/views/devise/passwords/edit.html.erb +16 -7
  21. data/app/views/devise/passwords/new.html.erb +9 -5
  22. data/app/views/devise/registrations/edit.html.erb +29 -15
  23. data/app/views/devise/registrations/new.html.erb +20 -9
  24. data/app/views/devise/sessions/new.html.erb +19 -10
  25. data/app/views/devise/shared/_error_messages.html.erb +15 -0
  26. data/app/views/devise/shared/{_links.erb → _links.html.erb} +10 -10
  27. data/app/views/devise/unlocks/new.html.erb +9 -5
  28. data/config/locales/en.yml +26 -20
  29. data/lib/devise/controllers/helpers.rb +122 -125
  30. data/lib/devise/controllers/rememberable.rb +14 -14
  31. data/lib/devise/controllers/scoped_views.rb +3 -1
  32. data/lib/devise/controllers/sign_in_out.rb +121 -0
  33. data/lib/devise/controllers/store_location.rb +76 -0
  34. data/lib/devise/controllers/url_helpers.rb +10 -8
  35. data/lib/devise/delegator.rb +2 -0
  36. data/lib/devise/encryptor.rb +24 -0
  37. data/lib/devise/failure_app.rb +132 -42
  38. data/lib/devise/hooks/activatable.rb +7 -6
  39. data/lib/devise/hooks/csrf_cleaner.rb +9 -0
  40. data/lib/devise/hooks/forgetable.rb +3 -1
  41. data/lib/devise/hooks/lockable.rb +5 -3
  42. data/lib/devise/hooks/proxy.rb +23 -0
  43. data/lib/devise/hooks/rememberable.rb +7 -4
  44. data/lib/devise/hooks/timeoutable.rb +18 -8
  45. data/lib/devise/hooks/trackable.rb +3 -1
  46. data/lib/devise/mailers/helpers.rb +15 -18
  47. data/lib/devise/mapping.rb +9 -3
  48. data/lib/devise/models/authenticatable.rb +102 -80
  49. data/lib/devise/models/confirmable.rb +154 -72
  50. data/lib/devise/models/database_authenticatable.rb +125 -25
  51. data/lib/devise/models/lockable.rb +50 -29
  52. data/lib/devise/models/omniauthable.rb +3 -1
  53. data/lib/devise/models/recoverable.rb +72 -50
  54. data/lib/devise/models/registerable.rb +4 -0
  55. data/lib/devise/models/rememberable.rb +65 -32
  56. data/lib/devise/models/timeoutable.rb +4 -8
  57. data/lib/devise/models/trackable.rb +20 -4
  58. data/lib/devise/models/validatable.rb +16 -9
  59. data/lib/devise/models.rb +6 -13
  60. data/lib/devise/modules.rb +12 -11
  61. data/lib/devise/omniauth/config.rb +2 -0
  62. data/lib/devise/omniauth/url_helpers.rb +14 -5
  63. data/lib/devise/omniauth.rb +4 -5
  64. data/lib/devise/orm/active_record.rb +5 -1
  65. data/lib/devise/orm/mongoid.rb +6 -2
  66. data/lib/devise/parameter_filter.rb +4 -0
  67. data/lib/devise/parameter_sanitizer.rb +144 -34
  68. data/lib/devise/rails/deprecated_constant_accessor.rb +39 -0
  69. data/lib/devise/rails/routes.rb +191 -127
  70. data/lib/devise/rails/warden_compat.rb +2 -1
  71. data/lib/devise/rails.rb +13 -20
  72. data/lib/devise/secret_key_finder.rb +27 -0
  73. data/lib/devise/strategies/authenticatable.rb +21 -22
  74. data/lib/devise/strategies/base.rb +3 -1
  75. data/lib/devise/strategies/database_authenticatable.rb +15 -4
  76. data/lib/devise/strategies/rememberable.rb +15 -3
  77. data/lib/devise/test/controller_helpers.rb +167 -0
  78. data/lib/devise/test/integration_helpers.rb +63 -0
  79. data/lib/devise/test_helpers.rb +7 -123
  80. data/lib/devise/time_inflector.rb +4 -2
  81. data/lib/devise/token_generator.rb +32 -0
  82. data/lib/devise/version.rb +3 -1
  83. data/lib/devise.rb +124 -78
  84. data/lib/generators/active_record/devise_generator.rb +64 -15
  85. data/lib/generators/active_record/templates/migration.rb +9 -8
  86. data/lib/generators/active_record/templates/migration_existing.rb +9 -8
  87. data/lib/generators/devise/controllers_generator.rb +46 -0
  88. data/lib/generators/devise/devise_generator.rb +10 -6
  89. data/lib/generators/devise/install_generator.rb +19 -1
  90. data/lib/generators/devise/orm_helpers.rb +17 -9
  91. data/lib/generators/devise/views_generator.rb +51 -28
  92. data/lib/generators/mongoid/devise_generator.rb +24 -24
  93. data/lib/generators/templates/README +13 -12
  94. data/lib/generators/templates/controllers/README +14 -0
  95. data/lib/generators/templates/controllers/confirmations_controller.rb +30 -0
  96. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +30 -0
  97. data/lib/generators/templates/controllers/passwords_controller.rb +34 -0
  98. data/lib/generators/templates/controllers/registrations_controller.rb +62 -0
  99. data/lib/generators/templates/controllers/sessions_controller.rb +27 -0
  100. data/lib/generators/templates/controllers/unlocks_controller.rb +30 -0
  101. data/lib/generators/templates/devise.rb +118 -53
  102. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  103. data/lib/generators/templates/markerb/email_changed.markerb +7 -0
  104. data/lib/generators/templates/markerb/password_change.markerb +3 -0
  105. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  106. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  107. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +6 -2
  108. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +12 -4
  109. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +5 -2
  110. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +14 -6
  111. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +12 -4
  112. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +11 -6
  113. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +5 -2
  114. metadata +73 -294
  115. data/.gitignore +0 -10
  116. data/.travis.yml +0 -20
  117. data/.yardopts +0 -9
  118. data/CHANGELOG.rdoc +0 -941
  119. data/CONTRIBUTING.md +0 -14
  120. data/Gemfile +0 -31
  121. data/Gemfile.lock +0 -159
  122. data/Rakefile +0 -35
  123. data/app/views/devise/_links.erb +0 -3
  124. data/devise.gemspec +0 -26
  125. data/devise.png +0 -0
  126. data/gemfiles/Gemfile.rails-3.2.x +0 -31
  127. data/gemfiles/Gemfile.rails-3.2.x.lock +0 -156
  128. data/lib/devise/models/token_authenticatable.rb +0 -89
  129. data/lib/devise/strategies/token_authenticatable.rb +0 -91
  130. data/test/controllers/custom_strategy_test.rb +0 -62
  131. data/test/controllers/helpers_test.rb +0 -253
  132. data/test/controllers/internal_helpers_test.rb +0 -120
  133. data/test/controllers/passwords_controller_test.rb +0 -32
  134. data/test/controllers/sessions_controller_test.rb +0 -99
  135. data/test/controllers/url_helpers_test.rb +0 -59
  136. data/test/delegator_test.rb +0 -19
  137. data/test/devise_test.rb +0 -83
  138. data/test/failure_app_test.rb +0 -221
  139. data/test/generators/active_record_generator_test.rb +0 -73
  140. data/test/generators/devise_generator_test.rb +0 -39
  141. data/test/generators/install_generator_test.rb +0 -13
  142. data/test/generators/mongoid_generator_test.rb +0 -23
  143. data/test/generators/views_generator_test.rb +0 -67
  144. data/test/helpers/devise_helper_test.rb +0 -51
  145. data/test/integration/authenticatable_test.rb +0 -699
  146. data/test/integration/confirmable_test.rb +0 -299
  147. data/test/integration/database_authenticatable_test.rb +0 -84
  148. data/test/integration/http_authenticatable_test.rb +0 -115
  149. data/test/integration/lockable_test.rb +0 -242
  150. data/test/integration/omniauthable_test.rb +0 -133
  151. data/test/integration/recoverable_test.rb +0 -335
  152. data/test/integration/registerable_test.rb +0 -349
  153. data/test/integration/rememberable_test.rb +0 -165
  154. data/test/integration/timeoutable_test.rb +0 -150
  155. data/test/integration/token_authenticatable_test.rb +0 -205
  156. data/test/integration/trackable_test.rb +0 -92
  157. data/test/mailers/confirmation_instructions_test.rb +0 -111
  158. data/test/mailers/reset_password_instructions_test.rb +0 -92
  159. data/test/mailers/unlock_instructions_test.rb +0 -87
  160. data/test/mapping_test.rb +0 -127
  161. data/test/models/authenticatable_test.rb +0 -13
  162. data/test/models/confirmable_test.rb +0 -452
  163. data/test/models/database_authenticatable_test.rb +0 -226
  164. data/test/models/lockable_test.rb +0 -282
  165. data/test/models/omniauthable_test.rb +0 -7
  166. data/test/models/recoverable_test.rb +0 -222
  167. data/test/models/registerable_test.rb +0 -7
  168. data/test/models/rememberable_test.rb +0 -175
  169. data/test/models/serializable_test.rb +0 -49
  170. data/test/models/timeoutable_test.rb +0 -46
  171. data/test/models/token_authenticatable_test.rb +0 -55
  172. data/test/models/trackable_test.rb +0 -13
  173. data/test/models/validatable_test.rb +0 -127
  174. data/test/models_test.rb +0 -163
  175. data/test/omniauth/config_test.rb +0 -57
  176. data/test/omniauth/url_helpers_test.rb +0 -54
  177. data/test/orm/active_record.rb +0 -10
  178. data/test/orm/mongoid.rb +0 -13
  179. data/test/parameter_sanitizer_test.rb +0 -58
  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 -6
  184. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  185. data/test/rails_app/app/controllers/admins_controller.rb +0 -11
  186. data/test/rails_app/app/controllers/application_controller.rb +0 -9
  187. data/test/rails_app/app/controllers/home_controller.rb +0 -25
  188. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  189. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  190. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  191. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  192. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  193. data/test/rails_app/app/mailers/users/mailer.rb +0 -12
  194. data/test/rails_app/app/mongoid/admin.rb +0 -29
  195. data/test/rails_app/app/mongoid/shim.rb +0 -23
  196. data/test/rails_app/app/mongoid/user.rb +0 -42
  197. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  198. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  199. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  200. data/test/rails_app/app/views/home/index.html.erb +0 -1
  201. data/test/rails_app/app/views/home/join.html.erb +0 -1
  202. data/test/rails_app/app/views/home/private.html.erb +0 -1
  203. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  204. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  205. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  206. data/test/rails_app/app/views/users/index.html.erb +0 -1
  207. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  208. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  209. data/test/rails_app/bin/bundle +0 -3
  210. data/test/rails_app/bin/rails +0 -4
  211. data/test/rails_app/bin/rake +0 -4
  212. data/test/rails_app/config/application.rb +0 -40
  213. data/test/rails_app/config/boot.rb +0 -8
  214. data/test/rails_app/config/database.yml +0 -18
  215. data/test/rails_app/config/environment.rb +0 -5
  216. data/test/rails_app/config/environments/development.rb +0 -34
  217. data/test/rails_app/config/environments/production.rb +0 -84
  218. data/test/rails_app/config/environments/test.rb +0 -36
  219. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  220. data/test/rails_app/config/initializers/devise.rb +0 -178
  221. data/test/rails_app/config/initializers/inflections.rb +0 -2
  222. data/test/rails_app/config/initializers/secret_token.rb +0 -8
  223. data/test/rails_app/config/initializers/session_store.rb +0 -1
  224. data/test/rails_app/config/routes.rb +0 -104
  225. data/test/rails_app/config.ru +0 -4
  226. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -74
  227. data/test/rails_app/db/schema.rb +0 -52
  228. data/test/rails_app/lib/shared_admin.rb +0 -14
  229. data/test/rails_app/lib/shared_user.rb +0 -25
  230. data/test/rails_app/public/404.html +0 -26
  231. data/test/rails_app/public/422.html +0 -26
  232. data/test/rails_app/public/500.html +0 -26
  233. data/test/rails_app/public/favicon.ico +0 -0
  234. data/test/routes_test.rb +0 -250
  235. data/test/support/assertions.rb +0 -40
  236. data/test/support/helpers.rb +0 -91
  237. data/test/support/integration.rb +0 -92
  238. data/test/support/locale/en.yml +0 -4
  239. data/test/support/webrat/integrations/rails.rb +0 -24
  240. data/test/test_helper.rb +0 -34
  241. data/test/test_helpers_test.rb +0 -151
  242. data/test/test_models.rb +0 -26
data/test/routes_test.rb DELETED
@@ -1,250 +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 cancel registration' do
161
- assert_recognizes({:controller => 'devise/registrations', :action => 'cancel', :locale => 'en'}, '/en/accounts/management/giveup')
162
- end
163
-
164
- test 'map deletes with :sign_out_via option' do
165
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/deletes/sign_out', :method => :delete})
166
- assert_raise ExpectedRoutingError do
167
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/deletes/sign_out', :method => :get})
168
- end
169
- end
170
-
171
- test 'map posts with :sign_out_via option' do
172
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/posts/sign_out', :method => :post})
173
- assert_raise ExpectedRoutingError do
174
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/posts/sign_out', :method => :get})
175
- end
176
- end
177
-
178
- test 'map delete_or_posts with :sign_out_via option' do
179
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/delete_or_posts/sign_out', :method => :post})
180
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/delete_or_posts/sign_out', :method => :delete})
181
- assert_raise ExpectedRoutingError do
182
- assert_recognizes({:controller => 'devise/sessions', :action => 'destroy'}, {:path => '/sign_out_via/delete_or_posts/sign_out', :method => :get})
183
- end
184
- end
185
-
186
- test 'map with constraints defined in hash' do
187
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => 'http://192.168.1.100/headquarters/sign_up', :method => :get})
188
- assert_raise ExpectedRoutingError do
189
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => 'http://10.0.0.100/headquarters/sign_up', :method => :get})
190
- end
191
- end
192
-
193
- test 'map with constraints defined in block' do
194
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => 'http://192.168.1.100/homebase/sign_up', :method => :get})
195
- assert_raise ExpectedRoutingError do
196
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => 'http://10.0.0.100//homebase/sign_up', :method => :get})
197
- end
198
- end
199
-
200
- test 'map with format false for sessions' do
201
- assert_recognizes({:controller => 'devise/sessions', :action => 'new'}, {:path => '/htmlonly_admin/sign_in', :method => :get})
202
- assert_raise ExpectedRoutingError do
203
- assert_recognizes({:controller => 'devise/sessions', :action => 'new'}, {:path => '/htmlonly_admin/sign_in.xml', :method => :get})
204
- end
205
- end
206
-
207
- test 'map with format false for passwords' do
208
- assert_recognizes({:controller => 'devise/passwords', :action => 'create'}, {:path => '/htmlonly_admin/password', :method => :post})
209
- assert_raise ExpectedRoutingError do
210
- assert_recognizes({:controller => 'devise/passwords', :action => 'create'}, {:path => '/htmlonly_admin/password.xml', :method => :post})
211
- end
212
- end
213
-
214
- test 'map with format false for registrations' do
215
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => '/htmlonly_admin/sign_up', :method => :get})
216
- assert_raise ExpectedRoutingError do
217
- assert_recognizes({:controller => 'devise/registrations', :action => 'new'}, {:path => '/htmlonly_admin/sign_up.xml', :method => :get})
218
- end
219
- end
220
-
221
- test 'map with format false for confirmations' do
222
- assert_recognizes({:controller => 'devise/confirmations', :action => 'show'}, {:path => '/htmlonly_users/confirmation', :method => :get})
223
- assert_raise ExpectedRoutingError do
224
- assert_recognizes({:controller => 'devise/confirmations', :action => 'show'}, {:path => '/htmlonly_users/confirmation.xml', :method => :get})
225
- end
226
- end
227
-
228
- test 'map with format false for unlocks' do
229
- assert_recognizes({:controller => 'devise/unlocks', :action => 'show'}, {:path => '/htmlonly_users/unlock', :method => :get})
230
- assert_raise ExpectedRoutingError do
231
- assert_recognizes({:controller => 'devise/unlocks', :action => 'show'}, {:path => '/htmlonly_users/unlock.xml', :method => :get})
232
- end
233
- end
234
-
235
- test 'map with format false is not permanent' do
236
- assert_equal "/set.xml", @routes.url_helpers.set_path(:xml)
237
- end
238
- end
239
-
240
- class ScopedRoutingTest < ActionController::TestCase
241
- test 'map publisher account' do
242
- assert_recognizes({:controller => 'publisher/registrations', :action => 'new'}, {:path => '/publisher/accounts/sign_up', :method => :get})
243
- assert_equal '/publisher/accounts/sign_up', @routes.url_helpers.new_publisher_account_registration_path
244
- end
245
-
246
- test 'map publisher account merges path names' do
247
- assert_recognizes({:controller => 'publisher/sessions', :action => 'new'}, {:path => '/publisher/accounts/get_in', :method => :get})
248
- assert_equal '/publisher/accounts/get_in', @routes.url_helpers.new_publisher_account_session_path
249
- end
250
- end
@@ -1,40 +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_not_blank(assertion)
13
- assert !assertion.blank?
14
- end
15
- alias :assert_present :assert_not_blank
16
-
17
- def assert_email_sent(address = nil, &block)
18
- assert_difference('ActionMailer::Base.deliveries.size', &block)
19
- if address.present?
20
- assert_equal address, ActionMailer::Base.deliveries.last['to'].to_s
21
- end
22
- end
23
-
24
- def assert_email_not_sent(&block)
25
- assert_no_difference('ActionMailer::Base.deliveries.size', &block)
26
- end
27
-
28
- def assert_same_content(result, expected)
29
- assert expected.size == result.size, "the arrays doesn't have the same size"
30
- expected.each do |element|
31
- assert result.include?(element), "The array doesn't include '#{element}'."
32
- end
33
- end
34
-
35
- def assert_raise_with_message(exception_klass, message, &block)
36
- exception = assert_raise exception_klass, &block
37
- assert_equal exception.message, message,
38
- "The expected message was #{message} but your exception throwed #{exception.message}"
39
- end
40
- end
@@ -1,91 +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
- begin
12
- I18n.backend.store_translations(locale, translations)
13
- yield
14
- ensure
15
- I18n.reload!
16
- end
17
- end
18
-
19
- def generate_unique_email
20
- @@email_count ||= 0
21
- @@email_count += 1
22
- "test#{@@email_count}@example.com"
23
- end
24
-
25
- def valid_attributes(attributes={})
26
- { :username => "usertest",
27
- :email => generate_unique_email,
28
- :password => '12345678',
29
- :password_confirmation => '12345678' }.update(attributes)
30
- end
31
-
32
- def new_user(attributes={})
33
- User.new(valid_attributes(attributes))
34
- end
35
-
36
- def create_user(attributes={})
37
- User.create!(valid_attributes(attributes))
38
- end
39
-
40
- def create_admin(attributes={})
41
- valid_attributes = valid_attributes(attributes)
42
- valid_attributes.delete(:username)
43
- Admin.create!(valid_attributes)
44
- end
45
-
46
- # Execute the block setting the given values and restoring old values after
47
- # the block is executed.
48
- def swap(object, new_values)
49
- old_values = {}
50
- new_values.each do |key, value|
51
- old_values[key] = object.send key
52
- object.send :"#{key}=", value
53
- end
54
- clear_cached_variables(new_values)
55
- yield
56
- ensure
57
- clear_cached_variables(new_values)
58
- old_values.each do |key, value|
59
- object.send :"#{key}=", value
60
- end
61
- end
62
-
63
- def clear_cached_variables(options)
64
- if options.key?(:case_insensitive_keys) || options.key?(:strip_whitespace_keys)
65
- Devise.mappings.each do |_, mapping|
66
- mapping.to.instance_variable_set(:@devise_parameter_filter, nil)
67
- end
68
- end
69
- end
70
-
71
- def swap_module_method_existence(klass, method)
72
- klass.module_eval %Q[
73
- class << self
74
- alias #{method}_referenced #{method}
75
- undef #{method}
76
- end
77
- ]
78
-
79
- begin
80
- yield if block_given?
81
- ensure
82
-
83
- klass.module_eval %Q[
84
- class << self
85
- alias #{method} #{method}_referenced
86
- undef #{method}_referenced
87
- end
88
- ]
89
- end
90
- end
91
- 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 'Sign 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 'Sign 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,4 +0,0 @@
1
- en:
2
- errors:
3
- messages:
4
- taken: "has already been taken"
@@ -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
- module Devise
8
- # Detection for minor differences between Rails 3.2 and 4 in tests.
9
- def self.rails4?
10
- Rails.version.start_with? '4'
11
- end
12
- end
13
-
14
- require "rails_app/config/environment"
15
- require "rails/test_help"
16
- require "orm/#{DEVISE_ORM}"
17
-
18
- I18n.load_path << File.expand_path("../support/locale/en.yml", __FILE__)
19
-
20
- require 'mocha/setup'
21
- require 'webrat'
22
- Webrat.configure do |config|
23
- config.mode = :rails
24
- config.open_error_files = false
25
- end
26
-
27
- # Add support to load paths so we can overwrite broken webrat setup
28
- $:.unshift File.expand_path('../support', __FILE__)
29
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
30
-
31
- # For generators
32
- require "rails/generators/test_case"
33
- require "generators/devise/install_generator"
34
- require "generators/devise/views_generator"