devise 4.1.1 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +68 -111
  3. data/MIT-LICENSE +2 -1
  4. data/README.md +315 -98
  5. data/app/controllers/devise/confirmations_controller.rb +3 -0
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +7 -5
  7. data/app/controllers/devise/passwords_controller.rb +10 -2
  8. data/app/controllers/devise/registrations_controller.rb +42 -20
  9. data/app/controllers/devise/sessions_controller.rb +9 -7
  10. data/app/controllers/devise/unlocks_controller.rb +3 -0
  11. data/app/controllers/devise_controller.rb +19 -3
  12. data/app/helpers/devise_helper.rb +3 -23
  13. data/app/mailers/devise/mailer.rb +10 -4
  14. data/app/views/devise/confirmations/new.html.erb +3 -3
  15. data/app/views/devise/mailer/email_changed.html.erb +7 -0
  16. data/app/views/devise/passwords/edit.html.erb +6 -6
  17. data/app/views/devise/passwords/new.html.erb +4 -4
  18. data/app/views/devise/registrations/edit.html.erb +13 -10
  19. data/app/views/devise/registrations/new.html.erb +9 -9
  20. data/app/views/devise/sessions/new.html.erb +8 -8
  21. data/app/views/devise/shared/_error_messages.html.erb +15 -0
  22. data/app/views/devise/shared/_links.html.erb +13 -13
  23. data/app/views/devise/unlocks/new.html.erb +3 -3
  24. data/config/locales/en.yml +5 -2
  25. data/lib/devise/controllers/helpers.rb +24 -9
  26. data/lib/devise/controllers/rememberable.rb +3 -1
  27. data/lib/devise/controllers/responder.rb +35 -0
  28. data/lib/devise/controllers/scoped_views.rb +2 -0
  29. data/lib/devise/controllers/sign_in_out.rb +31 -21
  30. data/lib/devise/controllers/store_location.rb +25 -7
  31. data/lib/devise/controllers/url_helpers.rb +3 -1
  32. data/lib/devise/delegator.rb +2 -0
  33. data/lib/devise/encryptor.rb +2 -0
  34. data/lib/devise/failure_app.rb +71 -38
  35. data/lib/devise/hooks/activatable.rb +3 -1
  36. data/lib/devise/hooks/csrf_cleaner.rb +8 -1
  37. data/lib/devise/hooks/forgetable.rb +2 -0
  38. data/lib/devise/hooks/lockable.rb +4 -2
  39. data/lib/devise/hooks/proxy.rb +3 -1
  40. data/lib/devise/hooks/rememberable.rb +2 -0
  41. data/lib/devise/hooks/timeoutable.rb +5 -3
  42. data/lib/devise/hooks/trackable.rb +2 -0
  43. data/lib/devise/mailers/helpers.rb +15 -18
  44. data/lib/devise/mapping.rb +4 -2
  45. data/lib/devise/models/authenticatable.rb +58 -44
  46. data/lib/devise/models/confirmable.rb +52 -14
  47. data/lib/devise/models/database_authenticatable.rb +52 -20
  48. data/lib/devise/models/lockable.rb +19 -5
  49. data/lib/devise/models/omniauthable.rb +4 -2
  50. data/lib/devise/models/recoverable.rb +22 -21
  51. data/lib/devise/models/registerable.rb +4 -0
  52. data/lib/devise/models/rememberable.rb +6 -4
  53. data/lib/devise/models/timeoutable.rb +3 -1
  54. data/lib/devise/models/trackable.rb +15 -1
  55. data/lib/devise/models/validatable.rb +10 -6
  56. data/lib/devise/models.rb +4 -1
  57. data/lib/devise/modules.rb +2 -0
  58. data/lib/devise/omniauth/config.rb +2 -0
  59. data/lib/devise/omniauth/url_helpers.rb +2 -51
  60. data/lib/devise/omniauth.rb +4 -5
  61. data/lib/devise/orm/active_record.rb +5 -1
  62. data/lib/devise/orm/mongoid.rb +6 -2
  63. data/lib/devise/orm.rb +80 -0
  64. data/lib/devise/parameter_filter.rb +4 -0
  65. data/lib/devise/parameter_sanitizer.rb +16 -58
  66. data/lib/devise/rails/routes.rb +12 -11
  67. data/lib/devise/rails/warden_compat.rb +2 -0
  68. data/lib/devise/rails.rb +16 -6
  69. data/lib/devise/strategies/authenticatable.rb +3 -1
  70. data/lib/devise/strategies/base.rb +2 -0
  71. data/lib/devise/strategies/database_authenticatable.rb +8 -1
  72. data/lib/devise/strategies/rememberable.rb +2 -0
  73. data/lib/devise/test/controller_helpers.rb +156 -0
  74. data/lib/devise/test/integration_helpers.rb +63 -0
  75. data/lib/devise/time_inflector.rb +2 -0
  76. data/lib/devise/token_generator.rb +2 -0
  77. data/lib/devise/version.rb +3 -1
  78. data/lib/devise.rb +69 -28
  79. data/lib/generators/active_record/devise_generator.rb +38 -16
  80. data/lib/generators/active_record/templates/migration.rb +3 -1
  81. data/lib/generators/active_record/templates/migration_existing.rb +2 -0
  82. data/lib/generators/devise/controllers_generator.rb +4 -2
  83. data/lib/generators/devise/devise_generator.rb +5 -3
  84. data/lib/generators/devise/install_generator.rb +3 -5
  85. data/lib/generators/devise/orm_helpers.rb +5 -3
  86. data/lib/generators/devise/views_generator.rb +8 -9
  87. data/lib/generators/mongoid/devise_generator.rb +7 -5
  88. data/lib/generators/templates/README +9 -8
  89. data/lib/generators/templates/controllers/confirmations_controller.rb +2 -0
  90. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +3 -1
  91. data/lib/generators/templates/controllers/passwords_controller.rb +2 -0
  92. data/lib/generators/templates/controllers/registrations_controller.rb +4 -2
  93. data/lib/generators/templates/controllers/sessions_controller.rb +3 -1
  94. data/lib/generators/templates/controllers/unlocks_controller.rb +2 -0
  95. data/lib/generators/templates/devise.rb +59 -11
  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 +10 -2
  100. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +5 -2
  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 +23 -302
  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 -182
  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 -170
  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-beta +0 -37
  122. data/gemfiles/Gemfile.rails-5.0-beta.lock +0 -199
  123. data/lib/devise/test_helpers.rb +0 -137
  124. data/test/controllers/custom_registrations_controller_test.rb +0 -40
  125. data/test/controllers/custom_strategy_test.rb +0 -64
  126. data/test/controllers/helper_methods_test.rb +0 -22
  127. data/test/controllers/helpers_test.rb +0 -316
  128. data/test/controllers/inherited_controller_i18n_messages_test.rb +0 -51
  129. data/test/controllers/internal_helpers_test.rb +0 -127
  130. data/test/controllers/load_hooks_controller_test.rb +0 -19
  131. data/test/controllers/passwords_controller_test.rb +0 -32
  132. data/test/controllers/sessions_controller_test.rb +0 -106
  133. data/test/controllers/url_helpers_test.rb +0 -65
  134. data/test/delegator_test.rb +0 -19
  135. data/test/devise_test.rb +0 -107
  136. data/test/failure_app_test.rb +0 -320
  137. data/test/generators/active_record_generator_test.rb +0 -83
  138. data/test/generators/controllers_generator_test.rb +0 -48
  139. data/test/generators/devise_generator_test.rb +0 -39
  140. data/test/generators/install_generator_test.rb +0 -24
  141. data/test/generators/mongoid_generator_test.rb +0 -23
  142. data/test/generators/views_generator_test.rb +0 -103
  143. data/test/helpers/devise_helper_test.rb +0 -49
  144. data/test/integration/authenticatable_test.rb +0 -698
  145. data/test/integration/confirmable_test.rb +0 -324
  146. data/test/integration/database_authenticatable_test.rb +0 -95
  147. data/test/integration/http_authenticatable_test.rb +0 -106
  148. data/test/integration/lockable_test.rb +0 -240
  149. data/test/integration/omniauthable_test.rb +0 -135
  150. data/test/integration/recoverable_test.rb +0 -347
  151. data/test/integration/registerable_test.rb +0 -357
  152. data/test/integration/rememberable_test.rb +0 -211
  153. data/test/integration/timeoutable_test.rb +0 -184
  154. data/test/integration/trackable_test.rb +0 -92
  155. data/test/mailers/confirmation_instructions_test.rb +0 -115
  156. data/test/mailers/reset_password_instructions_test.rb +0 -96
  157. data/test/mailers/unlock_instructions_test.rb +0 -91
  158. data/test/mapping_test.rb +0 -134
  159. data/test/models/authenticatable_test.rb +0 -23
  160. data/test/models/confirmable_test.rb +0 -511
  161. data/test/models/database_authenticatable_test.rb +0 -269
  162. data/test/models/lockable_test.rb +0 -350
  163. data/test/models/omniauthable_test.rb +0 -7
  164. data/test/models/recoverable_test.rb +0 -251
  165. data/test/models/registerable_test.rb +0 -7
  166. data/test/models/rememberable_test.rb +0 -169
  167. data/test/models/serializable_test.rb +0 -49
  168. data/test/models/timeoutable_test.rb +0 -51
  169. data/test/models/trackable_test.rb +0 -41
  170. data/test/models/validatable_test.rb +0 -119
  171. data/test/models_test.rb +0 -153
  172. data/test/omniauth/config_test.rb +0 -57
  173. data/test/omniauth/url_helpers_test.rb +0 -51
  174. data/test/orm/active_record.rb +0 -17
  175. data/test/orm/mongoid.rb +0 -13
  176. data/test/parameter_sanitizer_test.rb +0 -131
  177. data/test/rails_app/Rakefile +0 -6
  178. data/test/rails_app/app/active_record/admin.rb +0 -6
  179. data/test/rails_app/app/active_record/shim.rb +0 -2
  180. data/test/rails_app/app/active_record/user.rb +0 -7
  181. data/test/rails_app/app/active_record/user_on_engine.rb +0 -7
  182. data/test/rails_app/app/active_record/user_on_main_app.rb +0 -7
  183. data/test/rails_app/app/active_record/user_without_email.rb +0 -8
  184. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  185. data/test/rails_app/app/controllers/admins_controller.rb +0 -6
  186. data/test/rails_app/app/controllers/application_controller.rb +0 -11
  187. data/test/rails_app/app/controllers/application_with_fake_engine.rb +0 -30
  188. data/test/rails_app/app/controllers/custom/registrations_controller.rb +0 -31
  189. data/test/rails_app/app/controllers/home_controller.rb +0 -29
  190. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  191. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  192. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  193. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  194. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  195. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +0 -3
  196. data/test/rails_app/app/mailers/users/mailer.rb +0 -3
  197. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +0 -4
  198. data/test/rails_app/app/mongoid/admin.rb +0 -29
  199. data/test/rails_app/app/mongoid/shim.rb +0 -23
  200. data/test/rails_app/app/mongoid/user.rb +0 -39
  201. data/test/rails_app/app/mongoid/user_on_engine.rb +0 -39
  202. data/test/rails_app/app/mongoid/user_on_main_app.rb +0 -39
  203. data/test/rails_app/app/mongoid/user_without_email.rb +0 -33
  204. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  205. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  206. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  207. data/test/rails_app/app/views/home/index.html.erb +0 -1
  208. data/test/rails_app/app/views/home/join.html.erb +0 -1
  209. data/test/rails_app/app/views/home/private.html.erb +0 -1
  210. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  211. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  212. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  213. data/test/rails_app/app/views/users/index.html.erb +0 -1
  214. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  215. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  216. data/test/rails_app/bin/bundle +0 -3
  217. data/test/rails_app/bin/rails +0 -4
  218. data/test/rails_app/bin/rake +0 -4
  219. data/test/rails_app/config/application.rb +0 -44
  220. data/test/rails_app/config/boot.rb +0 -14
  221. data/test/rails_app/config/database.yml +0 -18
  222. data/test/rails_app/config/environment.rb +0 -5
  223. data/test/rails_app/config/environments/development.rb +0 -30
  224. data/test/rails_app/config/environments/production.rb +0 -84
  225. data/test/rails_app/config/environments/test.rb +0 -46
  226. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  227. data/test/rails_app/config/initializers/devise.rb +0 -180
  228. data/test/rails_app/config/initializers/inflections.rb +0 -2
  229. data/test/rails_app/config/initializers/secret_token.rb +0 -3
  230. data/test/rails_app/config/initializers/session_store.rb +0 -1
  231. data/test/rails_app/config/routes.rb +0 -126
  232. data/test/rails_app/config.ru +0 -4
  233. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
  234. data/test/rails_app/db/schema.rb +0 -55
  235. data/test/rails_app/lib/shared_admin.rb +0 -17
  236. data/test/rails_app/lib/shared_user.rb +0 -30
  237. data/test/rails_app/lib/shared_user_without_email.rb +0 -26
  238. data/test/rails_app/lib/shared_user_without_omniauth.rb +0 -13
  239. data/test/rails_app/public/404.html +0 -26
  240. data/test/rails_app/public/422.html +0 -26
  241. data/test/rails_app/public/500.html +0 -26
  242. data/test/rails_app/public/favicon.ico +0 -0
  243. data/test/rails_test.rb +0 -9
  244. data/test/routes_test.rb +0 -279
  245. data/test/support/action_controller/record_identifier.rb +0 -10
  246. data/test/support/assertions.rb +0 -39
  247. data/test/support/helpers.rb +0 -77
  248. data/test/support/http_method_compatibility.rb +0 -51
  249. data/test/support/integration.rb +0 -92
  250. data/test/support/locale/en.yml +0 -8
  251. data/test/support/mongoid.yml +0 -6
  252. data/test/support/webrat/integrations/rails.rb +0 -33
  253. data/test/test_helper.rb +0 -34
  254. data/test/test_helpers_test.rb +0 -178
  255. data/test/test_models.rb +0 -33
@@ -1,37 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec path: ".."
4
-
5
- gem "rails", "5.0.0.beta3"
6
- gem "omniauth", " ~>1.3"
7
- gem "oauth2"
8
- gem "omniauth-oauth2", ">= 1.2.0", "< 1.5.0"
9
- gem "rdoc"
10
-
11
- gem "activemodel-serializers-xml", github: "rails/activemodel-serializers-xml"
12
-
13
- gem "rails-controller-testing"
14
-
15
- gem "responders", "~> 2.1.1"
16
-
17
- group :test do
18
- gem "omniauth-facebook"
19
- gem "omniauth-openid", "~> 1.0.1"
20
- gem "webrat", "0.7.3", require: false
21
- gem "mocha", "~> 1.1", require: false
22
- end
23
-
24
- platforms :jruby do
25
- gem "activerecord-jdbc-adapter"
26
- gem "activerecord-jdbcsqlite3-adapter"
27
- gem "jruby-openssl"
28
- end
29
-
30
- platforms :ruby do
31
- gem "sqlite3"
32
- end
33
-
34
- # TODO:
35
- # group :mongoid do
36
- # gem "mongoid", "~> 4.0.0"
37
- # end
@@ -1,199 +0,0 @@
1
- GIT
2
- remote: git://github.com/rails/activemodel-serializers-xml.git
3
- revision: f380ea5ddefcb9a37f4fbc47606ed6fbecdb2b2a
4
- specs:
5
- activemodel-serializers-xml (1.0.0)
6
- activemodel (> 5.x)
7
- activerecord (> 5.x)
8
- activesupport (> 5.x)
9
- builder (~> 3.1)
10
-
11
- PATH
12
- remote: ..
13
- specs:
14
- devise (4.0.0.rc2)
15
- bcrypt (~> 3.0)
16
- orm_adapter (~> 0.1)
17
- railties (>= 4.1.0, < 5.1)
18
- responders
19
- warden (~> 1.2.3)
20
-
21
- GEM
22
- remote: https://rubygems.org/
23
- specs:
24
- actioncable (5.0.0.beta3)
25
- actionpack (= 5.0.0.beta3)
26
- nio4r (~> 1.2)
27
- websocket-driver (~> 0.6.1)
28
- actionmailer (5.0.0.beta3)
29
- actionpack (= 5.0.0.beta3)
30
- actionview (= 5.0.0.beta3)
31
- activejob (= 5.0.0.beta3)
32
- mail (~> 2.5, >= 2.5.4)
33
- rails-dom-testing (~> 1.0, >= 1.0.5)
34
- actionpack (5.0.0.beta3)
35
- actionview (= 5.0.0.beta3)
36
- activesupport (= 5.0.0.beta3)
37
- rack (~> 2.x)
38
- rack-test (~> 0.6.3)
39
- rails-dom-testing (~> 1.0, >= 1.0.5)
40
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
41
- actionview (5.0.0.beta3)
42
- activesupport (= 5.0.0.beta3)
43
- builder (~> 3.1)
44
- erubis (~> 2.7.0)
45
- rails-dom-testing (~> 1.0, >= 1.0.5)
46
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
47
- activejob (5.0.0.beta3)
48
- activesupport (= 5.0.0.beta3)
49
- globalid (>= 0.3.6)
50
- activemodel (5.0.0.beta3)
51
- activesupport (= 5.0.0.beta3)
52
- activerecord (5.0.0.beta3)
53
- activemodel (= 5.0.0.beta3)
54
- activesupport (= 5.0.0.beta3)
55
- arel (~> 7.0)
56
- activesupport (5.0.0.beta3)
57
- concurrent-ruby (~> 1.0)
58
- i18n (~> 0.7)
59
- minitest (~> 5.1)
60
- tzinfo (~> 1.1)
61
- arel (7.0.0)
62
- bcrypt (3.1.11)
63
- builder (3.2.2)
64
- concurrent-ruby (1.0.1)
65
- erubis (2.7.0)
66
- faraday (0.9.2)
67
- multipart-post (>= 1.2, < 3)
68
- globalid (0.3.6)
69
- activesupport (>= 4.1.0)
70
- hashie (3.4.3)
71
- i18n (0.7.0)
72
- json (1.8.3)
73
- jwt (1.5.1)
74
- loofah (2.0.3)
75
- nokogiri (>= 1.5.9)
76
- mail (2.6.4)
77
- mime-types (>= 1.16, < 4)
78
- metaclass (0.0.4)
79
- method_source (0.8.2)
80
- mime-types (3.0)
81
- mime-types-data (~> 3.2015)
82
- mime-types-data (3.2016.0221)
83
- mini_portile2 (2.0.0)
84
- minitest (5.8.4)
85
- mocha (1.1.0)
86
- metaclass (~> 0.0.1)
87
- multi_json (1.11.2)
88
- multi_xml (0.5.5)
89
- multipart-post (2.0.0)
90
- nio4r (1.2.1)
91
- nokogiri (1.6.7.2)
92
- mini_portile2 (~> 2.0.0.rc2)
93
- oauth2 (1.1.0)
94
- faraday (>= 0.8, < 0.10)
95
- jwt (~> 1.0, < 1.5.2)
96
- multi_json (~> 1.3)
97
- multi_xml (~> 0.5)
98
- rack (>= 1.2, < 3)
99
- omniauth (1.3.1)
100
- hashie (>= 1.2, < 4)
101
- rack (>= 1.0, < 3)
102
- omniauth-facebook (3.0.0)
103
- omniauth-oauth2 (~> 1.2)
104
- omniauth-oauth2 (1.4.0)
105
- oauth2 (~> 1.0)
106
- omniauth (~> 1.2)
107
- omniauth-openid (1.0.1)
108
- omniauth (~> 1.0)
109
- rack-openid (~> 1.3.1)
110
- orm_adapter (0.5.0)
111
- rack (2.0.0.alpha)
112
- json
113
- rack-openid (1.3.1)
114
- rack (>= 1.1.0)
115
- ruby-openid (>= 2.1.8)
116
- rack-test (0.6.3)
117
- rack (>= 1.0)
118
- rails (5.0.0.beta3)
119
- actioncable (= 5.0.0.beta3)
120
- actionmailer (= 5.0.0.beta3)
121
- actionpack (= 5.0.0.beta3)
122
- actionview (= 5.0.0.beta3)
123
- activejob (= 5.0.0.beta3)
124
- activemodel (= 5.0.0.beta3)
125
- activerecord (= 5.0.0.beta3)
126
- activesupport (= 5.0.0.beta3)
127
- bundler (>= 1.3.0, < 2.0)
128
- railties (= 5.0.0.beta3)
129
- sprockets-rails (>= 2.0.0)
130
- rails-controller-testing (0.1.1)
131
- actionpack (~> 5.x)
132
- actionview (~> 5.x)
133
- activesupport (~> 5.x)
134
- rails-deprecated_sanitizer (1.0.3)
135
- activesupport (>= 4.2.0.alpha)
136
- rails-dom-testing (1.0.7)
137
- activesupport (>= 4.2.0.beta, < 5.0)
138
- nokogiri (~> 1.6.0)
139
- rails-deprecated_sanitizer (>= 1.0.1)
140
- rails-html-sanitizer (1.0.3)
141
- loofah (~> 2.0)
142
- railties (5.0.0.beta3)
143
- actionpack (= 5.0.0.beta3)
144
- activesupport (= 5.0.0.beta3)
145
- method_source
146
- rake (>= 0.8.7)
147
- thor (>= 0.18.1, < 2.0)
148
- rake (11.1.2)
149
- rdoc (4.2.2)
150
- json (~> 1.4)
151
- responders (2.1.2)
152
- railties (>= 4.2.0, < 5.1)
153
- ruby-openid (2.7.0)
154
- sprockets (3.6.0)
155
- concurrent-ruby (~> 1.0)
156
- rack (> 1, < 3)
157
- sprockets-rails (3.0.4)
158
- actionpack (>= 4.0)
159
- activesupport (>= 4.0)
160
- sprockets (>= 3.0.0)
161
- sqlite3 (1.3.11)
162
- thor (0.19.1)
163
- thread_safe (0.3.5)
164
- tzinfo (1.2.2)
165
- thread_safe (~> 0.1)
166
- warden (1.2.6)
167
- rack (>= 1.0)
168
- webrat (0.7.3)
169
- nokogiri (>= 1.2.0)
170
- rack (>= 1.0)
171
- rack-test (>= 0.5.3)
172
- websocket-driver (0.6.3)
173
- websocket-extensions (>= 0.1.0)
174
- websocket-extensions (0.1.2)
175
-
176
- PLATFORMS
177
- ruby
178
-
179
- DEPENDENCIES
180
- activemodel-serializers-xml!
181
- activerecord-jdbc-adapter
182
- activerecord-jdbcsqlite3-adapter
183
- devise!
184
- jruby-openssl
185
- mocha (~> 1.1)
186
- oauth2
187
- omniauth (~> 1.3)
188
- omniauth-facebook
189
- omniauth-oauth2 (>= 1.2.0, < 1.5.0)
190
- omniauth-openid (~> 1.0.1)
191
- rails (= 5.0.0.beta3)
192
- rails-controller-testing
193
- rdoc
194
- responders (~> 2.1.1)
195
- sqlite3
196
- webrat (= 0.7.3)
197
-
198
- BUNDLED WITH
199
- 1.11.2
@@ -1,137 +0,0 @@
1
- module Devise
2
- # Devise::TestHelpers provides a facility to test controllers in isolation
3
- # when using ActionController::TestCase allowing you to quickly sign_in or
4
- # sign_out a user. Do not use Devise::TestHelpers in integration tests.
5
- #
6
- # Notice you should not test Warden specific behavior (like Warden callbacks)
7
- # using Devise::TestHelpers since it is a stub of the actual behavior. Such
8
- # callbacks should be tested in your integration suite instead.
9
- module TestHelpers
10
- def self.included(base)
11
- base.class_eval do
12
- setup :setup_controller_for_warden, :warden if respond_to?(:setup)
13
- end
14
- end
15
-
16
- # Override process to consider warden.
17
- def process(*)
18
- # Make sure we always return @response, a la ActionController::TestCase::Behaviour#process, even if warden interrupts
19
- _catch_warden { super } # || @response # _catch_warden will setup the @response object
20
-
21
- # process needs to return the ActionDispath::TestResponse object
22
- @response
23
- end
24
-
25
- # We need to set up the environment variables and the response in the controller.
26
- def setup_controller_for_warden #:nodoc:
27
- @request.env['action_controller.instance'] = @controller
28
- end
29
-
30
- # Quick access to Warden::Proxy.
31
- def warden #:nodoc:
32
- @request.env['warden'] ||= begin
33
- manager = Warden::Manager.new(nil) do |config|
34
- config.merge! Devise.warden_config
35
- end
36
- Warden::Proxy.new(@request.env, manager)
37
- end
38
- end
39
-
40
- # sign_in a given resource by storing its keys in the session.
41
- # This method bypass any warden authentication callback.
42
- #
43
- # Examples:
44
- #
45
- # sign_in :user, @user # sign_in(scope, resource)
46
- # sign_in @user # sign_in(resource)
47
- #
48
- def sign_in(resource_or_scope, resource=nil)
49
- scope ||= Devise::Mapping.find_scope!(resource_or_scope)
50
- resource ||= resource_or_scope
51
- warden.instance_variable_get(:@users).delete(scope)
52
- warden.session_serializer.store(resource, scope)
53
- end
54
-
55
- # Sign out a given resource or scope by calling logout on Warden.
56
- # This method bypass any warden logout callback.
57
- #
58
- # Examples:
59
- #
60
- # sign_out :user # sign_out(scope)
61
- # sign_out @user # sign_out(resource)
62
- #
63
- def sign_out(resource_or_scope)
64
- scope = Devise::Mapping.find_scope!(resource_or_scope)
65
- @controller.instance_variable_set(:"@current_#{scope}", nil)
66
- user = warden.instance_variable_get(:@users).delete(scope)
67
- warden.session_serializer.delete(scope, user)
68
- end
69
-
70
- protected
71
-
72
- # Catch warden continuations and handle like the middleware would.
73
- # Returns nil when interrupted, otherwise the normal result of the block.
74
- def _catch_warden(&block)
75
- result = catch(:warden, &block)
76
-
77
- env = @controller.request.env
78
-
79
- result ||= {}
80
-
81
- # Set the response. In production, the rack result is returned
82
- # from Warden::Manager#call, which the following is modelled on.
83
- case result
84
- when Array
85
- if result.first == 401 && intercept_401?(env) # does this happen during testing?
86
- _process_unauthenticated(env)
87
- else
88
- result
89
- end
90
- when Hash
91
- _process_unauthenticated(env, result)
92
- else
93
- result
94
- end
95
- end
96
-
97
- def _process_unauthenticated(env, options = {})
98
- options[:action] ||= :unauthenticated
99
- proxy = env['warden']
100
- result = options[:result] || proxy.result
101
-
102
- ret = case result
103
- when :redirect
104
- body = proxy.message || "You are being redirected to #{proxy.headers['Location']}"
105
- [proxy.status, proxy.headers, [body]]
106
- when :custom
107
- proxy.custom_response
108
- else
109
- env["PATH_INFO"] = "/#{options[:action]}"
110
- env["warden.options"] = options
111
- Warden::Manager._run_callbacks(:before_failure, env, options)
112
-
113
- status, headers, response = Devise.warden_config[:failure_app].call(env).to_a
114
- @controller.response.headers.merge!(headers)
115
- r_opts = { status: status, content_type: headers["Content-Type"], location: headers["Location"] }
116
- r_opts[Rails.version.start_with?('5') ? :body : :text] = response.body
117
- @controller.send :render, r_opts
118
- nil # causes process return @response
119
- end
120
-
121
- # ensure that the controller response is set up. In production, this is
122
- # not necessary since warden returns the results to rack. However, at
123
- # testing time, we want the response to be available to the testing
124
- # framework to verify what would be returned to rack.
125
- if ret.is_a?(Array)
126
- # ensure the controller response is set to our response.
127
- @controller.response ||= @response
128
- @response.status = ret.first
129
- @response.headers.clear
130
- ret.second.each { |k,v| @response[k] = v }
131
- @response.body = ret.third
132
- end
133
-
134
- ret
135
- end
136
- end
137
- end
@@ -1,40 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CustomRegistrationsControllerTest < Devise::ControllerTestCase
4
- tests Custom::RegistrationsController
5
-
6
- include Devise::TestHelpers
7
-
8
- setup do
9
- request.env["devise.mapping"] = Devise.mappings[:user]
10
- @password = 'password'
11
- @user = create_user(password: @password, password_confirmation: @password).tap(&:confirm)
12
- end
13
-
14
- test "yield resource to block on create success" do
15
- post :create, params: { user: { email: "user@example.org", password: "password", password_confirmation: "password" } }
16
- assert @controller.create_block_called?, "create failed to yield resource to provided block"
17
- end
18
-
19
- test "yield resource to block on create failure" do
20
- post :create, params: { user: { } }
21
- assert @controller.create_block_called?, "create failed to yield resource to provided block"
22
- end
23
-
24
- test "yield resource to block on update success" do
25
- sign_in @user
26
- put :update, params: { user: { current_password: @password } }
27
- assert @controller.update_block_called?, "update failed to yield resource to provided block"
28
- end
29
-
30
- test "yield resource to block on update failure" do
31
- sign_in @user
32
- put :update, params: { user: { } }
33
- assert @controller.update_block_called?, "update failed to yield resource to provided block"
34
- end
35
-
36
- test "yield resource to block on new" do
37
- get :new
38
- assert @controller.new_block_called?, "new failed to yield resource to provided block"
39
- end
40
- end
@@ -1,64 +0,0 @@
1
- require 'test_helper'
2
- require 'ostruct'
3
- require 'warden/strategies/base'
4
- require 'devise/test_helpers'
5
-
6
- class CustomStrategyController < ActionController::Base
7
- def new
8
- warden.authenticate!(:custom_strategy)
9
- end
10
- end
11
-
12
- # These tests are to prove that a warden strategy can successfully
13
- # return a custom response, including a specific status code and
14
- # custom http response headers. This does work in production,
15
- # however, at the time of writing this, the Devise test helpers do
16
- # not recognise the custom response and proceed to calling the
17
- # Failure App. This makes it impossible to write tests for a
18
- # strategy that return a custom response with Devise.
19
- class CustomStrategy < Warden::Strategies::Base
20
- def authenticate!
21
- custom_headers = { "X-FOO" => "BAR" }
22
- response = Rack::Response.new("BAD REQUEST", 400, custom_headers)
23
- custom! response.finish
24
- end
25
- end
26
-
27
- class CustomStrategyTest < Devise::ControllerTestCase
28
- tests CustomStrategyController
29
-
30
- include Devise::TestHelpers
31
-
32
- setup do
33
- Warden::Strategies.add(:custom_strategy, CustomStrategy)
34
- end
35
-
36
- teardown do
37
- Warden::Strategies._strategies.delete(:custom_strategy)
38
- end
39
-
40
- test "custom strategy can return its own status code" do
41
- ret = get :new
42
-
43
- # check the returned rack array
44
- # assert ret.is_a?(Array)
45
- # assert_equal 400, ret.first
46
- assert ret.is_a?(ActionDispatch::TestResponse)
47
-
48
- # check the saved response as well. This is purely so that the response is available to the testing framework
49
- # for verification. In production, the above array would be delivered directly to Rack.
50
- assert_response 400
51
- end
52
-
53
- test "custom strategy can return custom headers" do
54
- ret = get :new
55
-
56
- # check the returned rack array
57
- # assert ret.is_a?(Array)
58
- # assert_equal ret.third['X-FOO'], 'BAR'
59
- assert ret.is_a?(ActionDispatch::TestResponse)
60
-
61
- # check the saved response headers as well.
62
- assert_equal response.headers['X-FOO'], 'BAR'
63
- end
64
- end
@@ -1,22 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ApiController < ActionController::Metal
4
- include Devise::Controllers::Helpers
5
- end
6
-
7
- class HelperMethodsTest < Devise::ControllerTestCase
8
- tests ApiController
9
-
10
- test 'includes Devise::Controllers::Helpers' do
11
- assert_includes @controller.class.ancestors, Devise::Controllers::Helpers
12
- end
13
-
14
- test 'does not respond_to helper or helper_method' do
15
- refute_respond_to @controller.class, :helper
16
- refute_respond_to @controller.class, :helper_method
17
- end
18
-
19
- test 'defines methods like current_user' do
20
- assert_respond_to @controller, :current_user
21
- end
22
- end