devise 3.2.2 → 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 (235) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +242 -978
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +371 -100
  5. data/app/controllers/devise/confirmations_controller.rb +11 -5
  6. data/app/controllers/devise/omniauth_callbacks_controller.rb +12 -6
  7. data/app/controllers/devise/passwords_controller.rb +21 -8
  8. data/app/controllers/devise/registrations_controller.rb +59 -26
  9. data/app/controllers/devise/sessions_controller.rb +47 -17
  10. data/app/controllers/devise/unlocks_controller.rb +9 -4
  11. data/app/controllers/devise_controller.rb +67 -31
  12. data/app/helpers/devise_helper.rb +12 -19
  13. data/app/mailers/devise/mailer.rb +10 -0
  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} +9 -9
  27. data/app/views/devise/unlocks/new.html.erb +9 -5
  28. data/config/locales/en.yml +23 -17
  29. data/lib/devise/controllers/helpers.rb +112 -32
  30. data/lib/devise/controllers/rememberable.rb +15 -6
  31. data/lib/devise/controllers/scoped_views.rb +3 -1
  32. data/lib/devise/controllers/sign_in_out.rb +42 -26
  33. data/lib/devise/controllers/store_location.rb +31 -5
  34. data/lib/devise/controllers/url_helpers.rb +9 -7
  35. data/lib/devise/delegator.rb +2 -0
  36. data/lib/devise/encryptor.rb +24 -0
  37. data/lib/devise/failure_app.rb +125 -39
  38. data/lib/devise/hooks/activatable.rb +7 -6
  39. data/lib/devise/hooks/csrf_cleaner.rb +5 -1
  40. data/lib/devise/hooks/forgetable.rb +2 -0
  41. data/lib/devise/hooks/lockable.rb +7 -2
  42. data/lib/devise/hooks/proxy.rb +4 -2
  43. data/lib/devise/hooks/rememberable.rb +4 -2
  44. data/lib/devise/hooks/timeoutable.rb +16 -9
  45. data/lib/devise/hooks/trackable.rb +3 -1
  46. data/lib/devise/mailers/helpers.rb +15 -12
  47. data/lib/devise/mapping.rb +8 -2
  48. data/lib/devise/models/authenticatable.rb +82 -56
  49. data/lib/devise/models/confirmable.rb +125 -42
  50. data/lib/devise/models/database_authenticatable.rb +110 -32
  51. data/lib/devise/models/lockable.rb +30 -17
  52. data/lib/devise/models/omniauthable.rb +3 -1
  53. data/lib/devise/models/recoverable.rb +62 -26
  54. data/lib/devise/models/registerable.rb +4 -0
  55. data/lib/devise/models/rememberable.rb +62 -33
  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 +3 -1
  60. data/lib/devise/modules.rb +12 -10
  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 +2 -0
  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 +139 -65
  68. data/lib/devise/rails/routes.rb +147 -116
  69. data/lib/devise/rails/warden_compat.rb +3 -10
  70. data/lib/devise/rails.rb +10 -13
  71. data/lib/devise/secret_key_finder.rb +27 -0
  72. data/lib/devise/strategies/authenticatable.rb +20 -9
  73. data/lib/devise/strategies/base.rb +3 -1
  74. data/lib/devise/strategies/database_authenticatable.rb +14 -6
  75. data/lib/devise/strategies/rememberable.rb +15 -3
  76. data/lib/devise/test/controller_helpers.rb +165 -0
  77. data/lib/devise/test/integration_helpers.rb +63 -0
  78. data/lib/devise/test_helpers.rb +7 -124
  79. data/lib/devise/time_inflector.rb +4 -2
  80. data/lib/devise/token_generator.rb +3 -41
  81. data/lib/devise/version.rb +3 -1
  82. data/lib/devise.rb +111 -84
  83. data/lib/generators/active_record/devise_generator.rb +49 -12
  84. data/lib/generators/active_record/templates/migration.rb +9 -7
  85. data/lib/generators/active_record/templates/migration_existing.rb +9 -7
  86. data/lib/generators/devise/controllers_generator.rb +46 -0
  87. data/lib/generators/devise/devise_generator.rb +7 -5
  88. data/lib/generators/devise/install_generator.rb +21 -0
  89. data/lib/generators/devise/orm_helpers.rb +10 -21
  90. data/lib/generators/devise/views_generator.rb +49 -28
  91. data/lib/generators/mongoid/devise_generator.rb +21 -19
  92. data/lib/generators/templates/README +5 -12
  93. data/lib/generators/templates/controllers/README +14 -0
  94. data/lib/generators/templates/controllers/confirmations_controller.rb +30 -0
  95. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +30 -0
  96. data/lib/generators/templates/controllers/passwords_controller.rb +34 -0
  97. data/lib/generators/templates/controllers/registrations_controller.rb +62 -0
  98. data/lib/generators/templates/controllers/sessions_controller.rb +27 -0
  99. data/lib/generators/templates/controllers/unlocks_controller.rb +30 -0
  100. data/lib/generators/templates/devise.rb +81 -36
  101. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  102. data/lib/generators/templates/markerb/email_changed.markerb +7 -0
  103. data/lib/generators/templates/markerb/password_change.markerb +3 -0
  104. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  105. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  106. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +6 -2
  107. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +9 -4
  108. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +5 -2
  109. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +14 -6
  110. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +12 -4
  111. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +11 -6
  112. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +5 -2
  113. metadata +52 -280
  114. data/.gitignore +0 -10
  115. data/.travis.yml +0 -20
  116. data/.yardopts +0 -9
  117. data/CONTRIBUTING.md +0 -14
  118. data/Gemfile +0 -31
  119. data/Gemfile.lock +0 -160
  120. data/Rakefile +0 -35
  121. data/devise.gemspec +0 -27
  122. data/devise.png +0 -0
  123. data/gemfiles/Gemfile.rails-3.2.x +0 -31
  124. data/gemfiles/Gemfile.rails-3.2.x.lock +0 -159
  125. data/test/controllers/custom_strategy_test.rb +0 -62
  126. data/test/controllers/helpers_test.rb +0 -276
  127. data/test/controllers/internal_helpers_test.rb +0 -120
  128. data/test/controllers/passwords_controller_test.rb +0 -31
  129. data/test/controllers/sessions_controller_test.rb +0 -99
  130. data/test/controllers/url_helpers_test.rb +0 -59
  131. data/test/delegator_test.rb +0 -19
  132. data/test/devise_test.rb +0 -94
  133. data/test/failure_app_test.rb +0 -232
  134. data/test/generators/active_record_generator_test.rb +0 -103
  135. data/test/generators/devise_generator_test.rb +0 -39
  136. data/test/generators/install_generator_test.rb +0 -13
  137. data/test/generators/mongoid_generator_test.rb +0 -23
  138. data/test/generators/views_generator_test.rb +0 -67
  139. data/test/helpers/devise_helper_test.rb +0 -51
  140. data/test/integration/authenticatable_test.rb +0 -713
  141. data/test/integration/confirmable_test.rb +0 -284
  142. data/test/integration/database_authenticatable_test.rb +0 -84
  143. data/test/integration/http_authenticatable_test.rb +0 -105
  144. data/test/integration/lockable_test.rb +0 -239
  145. data/test/integration/omniauthable_test.rb +0 -133
  146. data/test/integration/recoverable_test.rb +0 -334
  147. data/test/integration/registerable_test.rb +0 -349
  148. data/test/integration/rememberable_test.rb +0 -167
  149. data/test/integration/timeoutable_test.rb +0 -183
  150. data/test/integration/trackable_test.rb +0 -92
  151. data/test/mailers/confirmation_instructions_test.rb +0 -115
  152. data/test/mailers/reset_password_instructions_test.rb +0 -96
  153. data/test/mailers/unlock_instructions_test.rb +0 -91
  154. data/test/mapping_test.rb +0 -127
  155. data/test/models/authenticatable_test.rb +0 -13
  156. data/test/models/confirmable_test.rb +0 -454
  157. data/test/models/database_authenticatable_test.rb +0 -249
  158. data/test/models/lockable_test.rb +0 -298
  159. data/test/models/omniauthable_test.rb +0 -7
  160. data/test/models/recoverable_test.rb +0 -184
  161. data/test/models/registerable_test.rb +0 -7
  162. data/test/models/rememberable_test.rb +0 -183
  163. data/test/models/serializable_test.rb +0 -49
  164. data/test/models/timeoutable_test.rb +0 -51
  165. data/test/models/trackable_test.rb +0 -13
  166. data/test/models/validatable_test.rb +0 -127
  167. data/test/models_test.rb +0 -144
  168. data/test/omniauth/config_test.rb +0 -57
  169. data/test/omniauth/url_helpers_test.rb +0 -54
  170. data/test/orm/active_record.rb +0 -10
  171. data/test/orm/mongoid.rb +0 -13
  172. data/test/parameter_sanitizer_test.rb +0 -81
  173. data/test/rails_app/Rakefile +0 -6
  174. data/test/rails_app/app/active_record/admin.rb +0 -6
  175. data/test/rails_app/app/active_record/shim.rb +0 -2
  176. data/test/rails_app/app/active_record/user.rb +0 -6
  177. data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
  178. data/test/rails_app/app/controllers/admins_controller.rb +0 -11
  179. data/test/rails_app/app/controllers/application_controller.rb +0 -9
  180. data/test/rails_app/app/controllers/home_controller.rb +0 -25
  181. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
  182. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
  183. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
  184. data/test/rails_app/app/controllers/users_controller.rb +0 -31
  185. data/test/rails_app/app/helpers/application_helper.rb +0 -3
  186. data/test/rails_app/app/mailers/users/mailer.rb +0 -12
  187. data/test/rails_app/app/mongoid/admin.rb +0 -29
  188. data/test/rails_app/app/mongoid/shim.rb +0 -23
  189. data/test/rails_app/app/mongoid/user.rb +0 -39
  190. data/test/rails_app/app/views/admins/index.html.erb +0 -1
  191. data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
  192. data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
  193. data/test/rails_app/app/views/home/index.html.erb +0 -1
  194. data/test/rails_app/app/views/home/join.html.erb +0 -1
  195. data/test/rails_app/app/views/home/private.html.erb +0 -1
  196. data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
  197. data/test/rails_app/app/views/layouts/application.html.erb +0 -24
  198. data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
  199. data/test/rails_app/app/views/users/index.html.erb +0 -1
  200. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
  201. data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
  202. data/test/rails_app/bin/bundle +0 -3
  203. data/test/rails_app/bin/rails +0 -4
  204. data/test/rails_app/bin/rake +0 -4
  205. data/test/rails_app/config/application.rb +0 -40
  206. data/test/rails_app/config/boot.rb +0 -14
  207. data/test/rails_app/config/database.yml +0 -18
  208. data/test/rails_app/config/environment.rb +0 -5
  209. data/test/rails_app/config/environments/development.rb +0 -30
  210. data/test/rails_app/config/environments/production.rb +0 -80
  211. data/test/rails_app/config/environments/test.rb +0 -36
  212. data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  213. data/test/rails_app/config/initializers/devise.rb +0 -181
  214. data/test/rails_app/config/initializers/inflections.rb +0 -2
  215. data/test/rails_app/config/initializers/secret_token.rb +0 -8
  216. data/test/rails_app/config/initializers/session_store.rb +0 -1
  217. data/test/rails_app/config/routes.rb +0 -104
  218. data/test/rails_app/config.ru +0 -4
  219. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
  220. data/test/rails_app/db/schema.rb +0 -55
  221. data/test/rails_app/lib/shared_admin.rb +0 -17
  222. data/test/rails_app/lib/shared_user.rb +0 -29
  223. data/test/rails_app/public/404.html +0 -26
  224. data/test/rails_app/public/422.html +0 -26
  225. data/test/rails_app/public/500.html +0 -26
  226. data/test/rails_app/public/favicon.ico +0 -0
  227. data/test/routes_test.rb +0 -250
  228. data/test/support/assertions.rb +0 -40
  229. data/test/support/helpers.rb +0 -70
  230. data/test/support/integration.rb +0 -92
  231. data/test/support/locale/en.yml +0 -8
  232. data/test/support/webrat/integrations/rails.rb +0 -24
  233. data/test/test_helper.rb +0 -27
  234. data/test/test_helpers_test.rb +0 -173
  235. data/test/test_models.rb +0 -33
data/test/models_test.rb DELETED
@@ -1,144 +0,0 @@
1
- require 'test_helper'
2
- require 'test_models'
3
-
4
- class ActiveRecordTest < ActiveSupport::TestCase
5
- def include_module?(klass, mod)
6
- klass.devise_modules.include?(mod) &&
7
- klass.included_modules.include?(Devise::Models::const_get(mod.to_s.classify))
8
- end
9
-
10
- def assert_include_modules(klass, *modules)
11
- modules.each do |mod|
12
- assert include_module?(klass, mod)
13
- end
14
-
15
- (Devise::ALL - modules).each do |mod|
16
- assert_not include_module?(klass, mod)
17
- end
18
- end
19
-
20
- test 'can cherry pick modules' do
21
- assert_include_modules Admin, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :confirmable
22
- end
23
-
24
- test 'validations options are not applied too late' do
25
- validators = WithValidation.validators_on :password
26
- length = validators.find { |v| v.kind == :length }
27
- assert_equal 2, length.options[:minimum]
28
- assert_equal 6, length.options[:maximum]
29
- end
30
-
31
- test 'validations are applied just once' do
32
- validators = Several.validators_on :password
33
- assert_equal 1, validators.select{ |v| v.kind == :length }.length
34
- end
35
-
36
- test 'chosen modules are inheritable' do
37
- assert_include_modules Inheritable, :database_authenticatable, :registerable, :timeoutable, :recoverable, :lockable, :confirmable
38
- end
39
-
40
- test 'order of module inclusion' do
41
- correct_module_order = [:database_authenticatable, :recoverable, :registerable, :confirmable, :lockable, :timeoutable]
42
- incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable, :recoverable, :lockable, :confirmable]
43
-
44
- assert_include_modules Admin, *incorrect_module_order
45
-
46
- # get module constants from symbol list
47
- module_constants = correct_module_order.collect { |mod| Devise::Models::const_get(mod.to_s.classify) }
48
-
49
- # confirm that they adhere to the order in ALL
50
- # get included modules, filter out the noise, and reverse the order
51
- assert_equal module_constants, (Admin.included_modules & module_constants).reverse
52
- end
53
-
54
- test 'raise error on invalid module' do
55
- assert_raise NameError do
56
- # Mix valid an invalid modules.
57
- Configurable.class_eval { devise :database_authenticatable, :doesnotexit }
58
- end
59
- end
60
-
61
- test 'set a default value for stretches' do
62
- assert_equal 15, Configurable.stretches
63
- end
64
-
65
- test 'set a default value for pepper' do
66
- assert_equal 'abcdef', Configurable.pepper
67
- end
68
-
69
- test 'set a default value for allow_unconfirmed_access_for' do
70
- assert_equal 5.days, Configurable.allow_unconfirmed_access_for
71
- end
72
-
73
- test 'set a default value for remember_for' do
74
- assert_equal 7.days, Configurable.remember_for
75
- end
76
-
77
- test 'set a default value for timeout_in' do
78
- assert_equal 15.minutes, Configurable.timeout_in
79
- end
80
-
81
- test 'set a default value for unlock_in' do
82
- assert_equal 10.days, Configurable.unlock_in
83
- end
84
-
85
- test 'set null fields on migrations' do
86
- # Ignore email sending since no email exists.
87
- klass = Class.new(Admin) do
88
- def send_devise_notification(*); end
89
- end
90
-
91
- klass.create!
92
- end
93
- end
94
-
95
- class CheckFieldsTest < ActiveSupport::TestCase
96
- test 'checks if the class respond_to the required fields' do
97
- Player = Class.new do
98
- extend Devise::Models
99
-
100
- def self.before_validation(instance)
101
- end
102
-
103
- devise :database_authenticatable
104
-
105
- attr_accessor :encrypted_password, :email
106
- end
107
-
108
- assert_nothing_raised Devise::Models::MissingAttribute do
109
- Devise::Models.check_fields!(Player)
110
- end
111
- end
112
-
113
- test 'raises Devise::Models::MissingAtrribute and shows the missing attribute if the class doesn\'t respond_to one of the attributes' do
114
- Clown = Class.new do
115
- extend Devise::Models
116
-
117
- def self.before_validation(instance)
118
- end
119
-
120
- devise :database_authenticatable
121
-
122
- attr_accessor :encrypted_password
123
- end
124
-
125
- assert_raise_with_message Devise::Models::MissingAttribute, "The following attribute(s) is (are) missing on your model: email" do
126
- Devise::Models.check_fields!(Clown)
127
- end
128
- end
129
-
130
- test 'raises Devise::Models::MissingAtrribute with all the missing attributes if there is more than one' do
131
- Magician = Class.new do
132
- extend Devise::Models
133
-
134
- def self.before_validation(instance)
135
- end
136
-
137
- devise :database_authenticatable
138
- end
139
-
140
- assert_raise_with_message Devise::Models::MissingAttribute, "The following attribute(s) is (are) missing on your model: encrypted_password, email" do
141
- Devise::Models.check_fields!(Magician)
142
- end
143
- end
144
- end
@@ -1,57 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OmniAuthConfigTest < ActiveSupport::TestCase
4
- class MyStrategy
5
- include OmniAuth::Strategy
6
- end
7
-
8
- test 'strategy_name returns provider if no options given' do
9
- config = Devise::OmniAuth::Config.new :facebook, [{}]
10
- assert_equal :facebook, config.strategy_name
11
- end
12
-
13
- test 'strategy_name returns provider if no name option are given' do
14
- config = Devise::OmniAuth::Config.new :facebook, [{ :other => :option }]
15
- assert_equal :facebook, config.strategy_name
16
- end
17
-
18
- test 'returns name option when have a name' do
19
- config = Devise::OmniAuth::Config.new :facebook, [{ :name => :github }]
20
- assert_equal :github, config.strategy_name
21
- end
22
-
23
- test "finds contrib strategies" do
24
- config = Devise::OmniAuth::Config.new :facebook, [{}]
25
- assert_equal OmniAuth::Strategies::Facebook, config.strategy_class
26
- end
27
-
28
- test "finds the strategy in OmniAuth's list by name" do
29
- NamedTestStrategy = Class.new
30
- NamedTestStrategy.send :include, OmniAuth::Strategy
31
- NamedTestStrategy.option :name, :the_one
32
-
33
- config = Devise::OmniAuth::Config.new :the_one, [{}]
34
- assert_equal NamedTestStrategy, config.strategy_class
35
- end
36
-
37
- test "finds the strategy in OmniAuth's list by class name" do
38
- UnNamedTestStrategy = Class.new
39
- UnNamedTestStrategy.send :include, OmniAuth::Strategy
40
-
41
- config = Devise::OmniAuth::Config.new :un_named_test_strategy, [{}]
42
- assert_equal UnNamedTestStrategy, config.strategy_class
43
- end
44
-
45
- test 'raises an error if strategy cannot be found' do
46
- config = Devise::OmniAuth::Config.new :my_other_strategy, [{}]
47
- assert_raise Devise::OmniAuth::StrategyNotFound do
48
- config.strategy_class
49
- end
50
- end
51
-
52
- test 'allows the user to define a custom require path' do
53
- config = Devise::OmniAuth::Config.new :my_strategy, [{:strategy_class => MyStrategy}]
54
- config_class = config.strategy_class
55
- assert_equal MyStrategy, config_class
56
- end
57
- end
@@ -1,54 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OmniAuthRoutesTest < ActionController::TestCase
4
- ExpectedUrlGeneratiorError = Devise.rails4? ?
5
- ActionController::UrlGenerationError : ActionController::RoutingError
6
-
7
- tests ApplicationController
8
-
9
- def assert_path(action, provider, with_param=true)
10
- # Resource param
11
- assert_equal @controller.send(action, :user, provider),
12
- @controller.send("user_#{action}", provider)
13
-
14
- # With an object
15
- assert_equal @controller.send(action, User.new, provider),
16
- @controller.send("user_#{action}", provider)
17
-
18
- if with_param
19
- # Default url params
20
- assert_equal @controller.send(action, :user, provider, :param => 123),
21
- @controller.send("user_#{action}", provider, :param => 123)
22
- end
23
- end
24
-
25
- test 'should alias omniauth_callback to mapped user auth_callback' do
26
- assert_path :omniauth_callback_path, :facebook
27
- end
28
-
29
- test 'should alias omniauth_authorize to mapped user auth_authorize' do
30
- assert_path :omniauth_authorize_path, :facebook, false
31
- end
32
-
33
- test 'should generate authorization path' do
34
- assert_match "/users/auth/facebook", @controller.omniauth_authorize_path(:user, :facebook)
35
-
36
- assert_raise ExpectedUrlGeneratiorError do
37
- @controller.omniauth_authorize_path(:user, :github)
38
- end
39
- end
40
-
41
- test 'should generate authorization path for named open_id omniauth' do
42
- assert_match "/users/auth/google", @controller.omniauth_authorize_path(:user, :google)
43
- end
44
-
45
- test 'should generate authorization path with params' do
46
- assert_match "/users/auth/openid?openid_url=http%3A%2F%2Fyahoo.com",
47
- @controller.omniauth_authorize_path(:user, :openid, :openid_url => "http://yahoo.com")
48
- end
49
-
50
- test 'should not add a "?" if no param was sent' do
51
- assert_equal "/users/auth/openid",
52
- @controller.omniauth_authorize_path(:user, :openid)
53
- end
54
- end
@@ -1,10 +0,0 @@
1
- ActiveRecord::Migration.verbose = false
2
- ActiveRecord::Base.logger = Logger.new(nil)
3
- ActiveRecord::Base.include_root_in_json = true
4
-
5
- ActiveRecord::Migrator.migrate(File.expand_path("../../rails_app/db/migrate/", __FILE__))
6
-
7
- class ActiveSupport::TestCase
8
- self.use_transactional_fixtures = true
9
- self.use_instantiated_fixtures = false
10
- end
data/test/orm/mongoid.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'mongoid/version'
2
-
3
- Mongoid.configure do |config|
4
- config.connect_to("devise-test-suite")
5
- config.use_utc = true
6
- config.include_root_in_json = true
7
- end
8
-
9
- class ActiveSupport::TestCase
10
- setup do
11
- Mongoid.purge!
12
- end
13
- end
@@ -1,81 +0,0 @@
1
- require 'test_helper'
2
- require 'devise/parameter_sanitizer'
3
-
4
- class BaseSanitizerTest < ActiveSupport::TestCase
5
- def sanitizer(params)
6
- Devise::BaseSanitizer.new(User, :user, params)
7
- end
8
-
9
- test 'returns chosen params' do
10
- sanitizer = sanitizer(user: { "email" => "jose" })
11
- assert_equal({ "email" => "jose" }, sanitizer.sanitize(:sign_in))
12
- end
13
- end
14
-
15
- if defined?(ActionController::StrongParameters)
16
- require 'active_model/forbidden_attributes_protection'
17
-
18
- class ParameterSanitizerTest < ActiveSupport::TestCase
19
- def sanitizer(params)
20
- params = ActionController::Parameters.new(params)
21
- Devise::ParameterSanitizer.new(User, :user, params)
22
- end
23
-
24
- test 'filters some parameters on sign in by default' do
25
- sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid", "remember_me" => "1" })
26
- assert_equal({ "email" => "jose", "password" => "invalid", "remember_me" => "1" }, sanitizer.sanitize(:sign_in))
27
- end
28
-
29
- test 'handles auth keys as a hash' do
30
- swap Devise, :authentication_keys => {:email => true} do
31
- sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
32
- assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.sanitize(:sign_in))
33
- end
34
- end
35
-
36
- test 'filters some parameters on sign up by default' do
37
- sanitizer = sanitizer(user: { "email" => "jose", "role" => "invalid" })
38
- assert_equal({ "email" => "jose" }, sanitizer.sanitize(:sign_up))
39
- end
40
-
41
- test 'filters some parameters on account update by default' do
42
- sanitizer = sanitizer(user: { "email" => "jose", "role" => "invalid" })
43
- assert_equal({ "email" => "jose" }, sanitizer.sanitize(:account_update))
44
- end
45
-
46
- test 'allows custom hooks' do
47
- sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
48
- sanitizer.for(:sign_in) { |user| user.permit(:email, :password) }
49
- assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.sanitize(:sign_in))
50
- end
51
-
52
- test 'adding multiple permitted parameters' do
53
- sanitizer = sanitizer(user: { "email" => "jose", "username" => "jose1", "role" => "valid" })
54
- sanitizer.for(:sign_in).concat([:username, :role])
55
- assert_equal({ "email" => "jose", "username" => "jose1", "role" => "valid" }, sanitizer.sanitize(:sign_in))
56
- end
57
-
58
- test 'removing multiple default parameters' do
59
- sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid", "remember_me" => "1" })
60
- sanitizer.for(:sign_in).delete(:email)
61
- sanitizer.for(:sign_in).delete(:password)
62
- assert_equal({ "remember_me" => "1" }, sanitizer.sanitize(:sign_in))
63
- end
64
-
65
- test 'raises on unknown hooks' do
66
- sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
67
- assert_raise NotImplementedError do
68
- sanitizer.sanitize(:unknown)
69
- end
70
- end
71
-
72
- test 'passes parameters to filter as arguments to sanitizer' do
73
- params = {user: stub}
74
- sanitizer = Devise::ParameterSanitizer.new(User, :user, params)
75
-
76
- params[:user].expects(:permit).with(kind_of(Symbol), kind_of(Symbol), kind_of(Symbol))
77
-
78
- sanitizer.sanitize(:sign_in)
79
- end
80
- end
81
- end
@@ -1,6 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require File.expand_path('../config/application', __FILE__)
5
-
6
- Rails.application.load_tasks
@@ -1,6 +0,0 @@
1
- require 'shared_admin'
2
-
3
- class Admin < ActiveRecord::Base
4
- include Shim
5
- include SharedAdmin
6
- end
@@ -1,2 +0,0 @@
1
- module Shim
2
- end
@@ -1,6 +0,0 @@
1
- require 'shared_user'
2
-
3
- class User < ActiveRecord::Base
4
- include Shim
5
- include SharedUser
6
- end
@@ -1,6 +0,0 @@
1
- class Admins::SessionsController < Devise::SessionsController
2
- def new
3
- flash[:special] = "Welcome to #{controller_path.inspect} controller!"
4
- super
5
- end
6
- end
@@ -1,11 +0,0 @@
1
- class AdminsController < ApplicationController
2
- before_filter :authenticate_admin!
3
-
4
- def index
5
- end
6
-
7
- def expire
8
- admin_session['last_request_at'] = 31.minutes.ago.utc
9
- render :text => 'Admin will be expired on next request'
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- # Filters added to this controller apply to all controllers in the application.
2
- # Likewise, all the methods added will be available for all controllers.
3
-
4
- class ApplicationController < ActionController::Base
5
- protect_from_forgery
6
- before_filter :current_user, :unless => :devise_controller?
7
- before_filter :authenticate_user!, :if => :devise_controller?
8
- respond_to *Mime::SET.map(&:to_sym)
9
- end
@@ -1,25 +0,0 @@
1
- class HomeController < ApplicationController
2
- def index
3
- end
4
-
5
- def private
6
- end
7
-
8
- def user_dashboard
9
- end
10
-
11
- def admin_dashboard
12
- end
13
-
14
- def join
15
- end
16
-
17
- def set
18
- session["devise.foo_bar"] = "something"
19
- head :ok
20
- end
21
-
22
- def unauthenticated
23
- render :text => "unauthenticated", :status => :unauthorized
24
- end
25
- end
@@ -1,2 +0,0 @@
1
- class Publisher::RegistrationsController < ApplicationController
2
- end
@@ -1,2 +0,0 @@
1
- class Publisher::SessionsController < ApplicationController
2
- end
@@ -1,14 +0,0 @@
1
- class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
2
- def facebook
3
- data = env["omniauth.auth"]
4
- session["devise.facebook_data"] = data["extra"]["user_hash"]
5
- render :json => data
6
- end
7
-
8
- def sign_in_facebook
9
- user = User.find_by_email('user@test.com')
10
- user.remember_me = true
11
- sign_in user
12
- render :text => ""
13
- end
14
- end
@@ -1,31 +0,0 @@
1
- class UsersController < ApplicationController
2
- prepend_before_filter :current_user, :only => :exhibit
3
- before_filter :authenticate_user!, :except => [:accept, :exhibit]
4
- respond_to :html, :xml
5
-
6
- def index
7
- user_session[:cart] = "Cart"
8
- respond_with(current_user)
9
- end
10
-
11
- def edit_form
12
- user_session['last_request_at'] = 31.minutes.ago.utc
13
- end
14
-
15
- def update_form
16
- render :text => 'Update'
17
- end
18
-
19
- def accept
20
- @current_user = current_user
21
- end
22
-
23
- def exhibit
24
- render :text => current_user ? "User is authenticated" : "User is not authenticated"
25
- end
26
-
27
- def expire
28
- user_session['last_request_at'] = 31.minutes.ago.utc
29
- render :text => 'User will be expired on next request'
30
- end
31
- end
@@ -1,3 +0,0 @@
1
- # Methods added to this helper will be available to all templates in the application.
2
- module ApplicationHelper
3
- end
@@ -1,12 +0,0 @@
1
- class Users::Mailer < Devise::Mailer
2
- default :from => 'custom@example.com'
3
- end
4
-
5
- class Users::ReplyToMailer < Devise::Mailer
6
- default :from => 'custom@example.com'
7
- default :reply_to => 'custom_reply_to@example.com'
8
- end
9
-
10
- class Users::FromProcMailer < Devise::Mailer
11
- default :from => proc { 'custom@example.com' }
12
- end
@@ -1,29 +0,0 @@
1
- require 'shared_admin'
2
-
3
- class Admin
4
- include Mongoid::Document
5
- include Shim
6
- include SharedAdmin
7
-
8
- ## Database authenticatable
9
- field :email, :type => String
10
- field :encrypted_password, :type => String
11
-
12
- ## Recoverable
13
- field :reset_password_token, :type => String
14
- field :reset_password_sent_at, :type => Time
15
-
16
- ## Rememberable
17
- field :remember_created_at, :type => Time
18
-
19
- ## Confirmable
20
- field :confirmation_token, :type => String
21
- field :confirmed_at, :type => Time
22
- field :confirmation_sent_at, :type => Time
23
- field :unconfirmed_email, :type => String # Only if using reconfirmable
24
-
25
- ## Lockable
26
- field :locked_at, :type => Time
27
-
28
- field :active, :type => Boolean, :default => false
29
- end
@@ -1,23 +0,0 @@
1
- module Shim
2
- extend ::ActiveSupport::Concern
3
-
4
- included do
5
- include ::Mongoid::Timestamps
6
- field :created_at, :type => DateTime
7
- end
8
-
9
- module ClassMethods
10
- def order(attribute)
11
- asc(attribute)
12
- end
13
-
14
- def find_by_email(email)
15
- find_by(:email => email)
16
- end
17
- end
18
-
19
- # overwrite equality (because some devise tests use this for asserting model equality)
20
- def ==(other)
21
- other.is_a?(self.class) && _id == other._id
22
- end
23
- end
@@ -1,39 +0,0 @@
1
- require 'shared_user'
2
-
3
- class User
4
- include Mongoid::Document
5
- include Shim
6
- include SharedUser
7
-
8
- field :username, :type => String
9
- field :facebook_token, :type => String
10
-
11
- ## Database authenticatable
12
- field :email, :type => String, :default => ""
13
- field :encrypted_password, :type => String, :default => ""
14
-
15
- ## Recoverable
16
- field :reset_password_token, :type => String
17
- field :reset_password_sent_at, :type => Time
18
-
19
- ## Rememberable
20
- field :remember_created_at, :type => Time
21
-
22
- ## Trackable
23
- field :sign_in_count, :type => Integer, :default => 0
24
- field :current_sign_in_at, :type => Time
25
- field :last_sign_in_at, :type => Time
26
- field :current_sign_in_ip, :type => String
27
- field :last_sign_in_ip, :type => String
28
-
29
- ## Confirmable
30
- field :confirmation_token, :type => String
31
- field :confirmed_at, :type => Time
32
- field :confirmation_sent_at, :type => Time
33
- # field :unconfirmed_email, :type => String # Only if using reconfirmable
34
-
35
- ## Lockable
36
- field :failed_attempts, :type => Integer, :default => 0 # Only if lock strategy is :failed_attempts
37
- field :unlock_token, :type => String # Only if unlock strategy is :email or :both
38
- field :locked_at, :type => Time
39
- end
@@ -1 +0,0 @@
1
- Welcome Admin!
@@ -1,2 +0,0 @@
1
- Welcome to "sessions/new" view!
2
- <%= render :file => "devise/sessions/new" %>
@@ -1 +0,0 @@
1
- Admin dashboard
@@ -1 +0,0 @@
1
- Home!
@@ -1 +0,0 @@
1
- Join
@@ -1 +0,0 @@
1
- Private!
@@ -1 +0,0 @@
1
- User dashboard
@@ -1,24 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html>
4
- <head>
5
- <title>Devise Test App</title>
6
- </head>
7
- <body>
8
- <div id="container">
9
- <%- flash.each do |name, msg| -%>
10
- <%= content_tag :div, msg, :id => "flash_#{name}" %>
11
- <%- end -%>
12
-
13
- <% if user_signed_in? -%>
14
- <p>Hello User <%= current_user.email %>! You are signed in!</p>
15
- <% end -%>
16
-
17
- <% if admin_signed_in? -%>
18
- <p>Hello Admin <%= current_admin.email %>! You are signed in!</p>
19
- <% end -%>
20
-
21
- <%= yield %>
22
- </div>
23
- </body>
24
- </html>
@@ -1 +0,0 @@
1
- <%= button_to 'Update', update_form_user_path(current_user), method: 'put' %>
@@ -1 +0,0 @@
1
- Welcome User #<%= current_user.id %>!