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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +242 -978
- data/MIT-LICENSE +1 -1
- data/README.md +371 -100
- data/app/controllers/devise/confirmations_controller.rb +11 -5
- data/app/controllers/devise/omniauth_callbacks_controller.rb +12 -6
- data/app/controllers/devise/passwords_controller.rb +21 -8
- data/app/controllers/devise/registrations_controller.rb +59 -26
- data/app/controllers/devise/sessions_controller.rb +47 -17
- data/app/controllers/devise/unlocks_controller.rb +9 -4
- data/app/controllers/devise_controller.rb +67 -31
- data/app/helpers/devise_helper.rb +12 -19
- data/app/mailers/devise/mailer.rb +10 -0
- data/app/views/devise/confirmations/new.html.erb +9 -5
- data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
- data/app/views/devise/mailer/email_changed.html.erb +7 -0
- data/app/views/devise/mailer/password_change.html.erb +3 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/devise/mailer/unlock_instructions.html.erb +1 -1
- data/app/views/devise/passwords/edit.html.erb +16 -7
- data/app/views/devise/passwords/new.html.erb +9 -5
- data/app/views/devise/registrations/edit.html.erb +29 -15
- data/app/views/devise/registrations/new.html.erb +20 -9
- data/app/views/devise/sessions/new.html.erb +19 -10
- data/app/views/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/devise/shared/{_links.erb → _links.html.erb} +9 -9
- data/app/views/devise/unlocks/new.html.erb +9 -5
- data/config/locales/en.yml +23 -17
- data/lib/devise/controllers/helpers.rb +112 -32
- data/lib/devise/controllers/rememberable.rb +15 -6
- data/lib/devise/controllers/scoped_views.rb +3 -1
- data/lib/devise/controllers/sign_in_out.rb +42 -26
- data/lib/devise/controllers/store_location.rb +31 -5
- data/lib/devise/controllers/url_helpers.rb +9 -7
- data/lib/devise/delegator.rb +2 -0
- data/lib/devise/encryptor.rb +24 -0
- data/lib/devise/failure_app.rb +125 -39
- data/lib/devise/hooks/activatable.rb +7 -6
- data/lib/devise/hooks/csrf_cleaner.rb +5 -1
- data/lib/devise/hooks/forgetable.rb +2 -0
- data/lib/devise/hooks/lockable.rb +7 -2
- data/lib/devise/hooks/proxy.rb +4 -2
- data/lib/devise/hooks/rememberable.rb +4 -2
- data/lib/devise/hooks/timeoutable.rb +16 -9
- data/lib/devise/hooks/trackable.rb +3 -1
- data/lib/devise/mailers/helpers.rb +15 -12
- data/lib/devise/mapping.rb +8 -2
- data/lib/devise/models/authenticatable.rb +82 -56
- data/lib/devise/models/confirmable.rb +125 -42
- data/lib/devise/models/database_authenticatable.rb +110 -32
- data/lib/devise/models/lockable.rb +30 -17
- data/lib/devise/models/omniauthable.rb +3 -1
- data/lib/devise/models/recoverable.rb +62 -26
- data/lib/devise/models/registerable.rb +4 -0
- data/lib/devise/models/rememberable.rb +62 -33
- data/lib/devise/models/timeoutable.rb +4 -8
- data/lib/devise/models/trackable.rb +20 -4
- data/lib/devise/models/validatable.rb +16 -9
- data/lib/devise/models.rb +3 -1
- data/lib/devise/modules.rb +12 -10
- data/lib/devise/omniauth/config.rb +2 -0
- data/lib/devise/omniauth/url_helpers.rb +14 -5
- data/lib/devise/omniauth.rb +2 -0
- data/lib/devise/orm/active_record.rb +5 -1
- data/lib/devise/orm/mongoid.rb +6 -2
- data/lib/devise/parameter_filter.rb +4 -0
- data/lib/devise/parameter_sanitizer.rb +139 -65
- data/lib/devise/rails/routes.rb +147 -116
- data/lib/devise/rails/warden_compat.rb +3 -10
- data/lib/devise/rails.rb +10 -13
- data/lib/devise/secret_key_finder.rb +27 -0
- data/lib/devise/strategies/authenticatable.rb +20 -9
- data/lib/devise/strategies/base.rb +3 -1
- data/lib/devise/strategies/database_authenticatable.rb +14 -6
- data/lib/devise/strategies/rememberable.rb +15 -3
- data/lib/devise/test/controller_helpers.rb +165 -0
- data/lib/devise/test/integration_helpers.rb +63 -0
- data/lib/devise/test_helpers.rb +7 -124
- data/lib/devise/time_inflector.rb +4 -2
- data/lib/devise/token_generator.rb +3 -41
- data/lib/devise/version.rb +3 -1
- data/lib/devise.rb +111 -84
- data/lib/generators/active_record/devise_generator.rb +49 -12
- data/lib/generators/active_record/templates/migration.rb +9 -7
- data/lib/generators/active_record/templates/migration_existing.rb +9 -7
- data/lib/generators/devise/controllers_generator.rb +46 -0
- data/lib/generators/devise/devise_generator.rb +7 -5
- data/lib/generators/devise/install_generator.rb +21 -0
- data/lib/generators/devise/orm_helpers.rb +10 -21
- data/lib/generators/devise/views_generator.rb +49 -28
- data/lib/generators/mongoid/devise_generator.rb +21 -19
- data/lib/generators/templates/README +5 -12
- data/lib/generators/templates/controllers/README +14 -0
- data/lib/generators/templates/controllers/confirmations_controller.rb +30 -0
- data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +30 -0
- data/lib/generators/templates/controllers/passwords_controller.rb +34 -0
- data/lib/generators/templates/controllers/registrations_controller.rb +62 -0
- data/lib/generators/templates/controllers/sessions_controller.rb +27 -0
- data/lib/generators/templates/controllers/unlocks_controller.rb +30 -0
- data/lib/generators/templates/devise.rb +81 -36
- data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
- data/lib/generators/templates/markerb/email_changed.markerb +7 -0
- data/lib/generators/templates/markerb/password_change.markerb +3 -0
- data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
- data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
- data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +6 -2
- data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +9 -4
- data/lib/generators/templates/simple_form_for/passwords/new.html.erb +5 -2
- data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +14 -6
- data/lib/generators/templates/simple_form_for/registrations/new.html.erb +12 -4
- data/lib/generators/templates/simple_form_for/sessions/new.html.erb +11 -6
- data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +5 -2
- metadata +52 -280
- data/.gitignore +0 -10
- data/.travis.yml +0 -20
- data/.yardopts +0 -9
- data/CONTRIBUTING.md +0 -14
- data/Gemfile +0 -31
- data/Gemfile.lock +0 -160
- data/Rakefile +0 -35
- data/devise.gemspec +0 -27
- data/devise.png +0 -0
- data/gemfiles/Gemfile.rails-3.2.x +0 -31
- data/gemfiles/Gemfile.rails-3.2.x.lock +0 -159
- data/test/controllers/custom_strategy_test.rb +0 -62
- data/test/controllers/helpers_test.rb +0 -276
- data/test/controllers/internal_helpers_test.rb +0 -120
- data/test/controllers/passwords_controller_test.rb +0 -31
- data/test/controllers/sessions_controller_test.rb +0 -99
- data/test/controllers/url_helpers_test.rb +0 -59
- data/test/delegator_test.rb +0 -19
- data/test/devise_test.rb +0 -94
- data/test/failure_app_test.rb +0 -232
- data/test/generators/active_record_generator_test.rb +0 -103
- data/test/generators/devise_generator_test.rb +0 -39
- data/test/generators/install_generator_test.rb +0 -13
- data/test/generators/mongoid_generator_test.rb +0 -23
- data/test/generators/views_generator_test.rb +0 -67
- data/test/helpers/devise_helper_test.rb +0 -51
- data/test/integration/authenticatable_test.rb +0 -713
- data/test/integration/confirmable_test.rb +0 -284
- data/test/integration/database_authenticatable_test.rb +0 -84
- data/test/integration/http_authenticatable_test.rb +0 -105
- data/test/integration/lockable_test.rb +0 -239
- data/test/integration/omniauthable_test.rb +0 -133
- data/test/integration/recoverable_test.rb +0 -334
- data/test/integration/registerable_test.rb +0 -349
- data/test/integration/rememberable_test.rb +0 -167
- data/test/integration/timeoutable_test.rb +0 -183
- data/test/integration/trackable_test.rb +0 -92
- data/test/mailers/confirmation_instructions_test.rb +0 -115
- data/test/mailers/reset_password_instructions_test.rb +0 -96
- data/test/mailers/unlock_instructions_test.rb +0 -91
- data/test/mapping_test.rb +0 -127
- data/test/models/authenticatable_test.rb +0 -13
- data/test/models/confirmable_test.rb +0 -454
- data/test/models/database_authenticatable_test.rb +0 -249
- data/test/models/lockable_test.rb +0 -298
- data/test/models/omniauthable_test.rb +0 -7
- data/test/models/recoverable_test.rb +0 -184
- data/test/models/registerable_test.rb +0 -7
- data/test/models/rememberable_test.rb +0 -183
- data/test/models/serializable_test.rb +0 -49
- data/test/models/timeoutable_test.rb +0 -51
- data/test/models/trackable_test.rb +0 -13
- data/test/models/validatable_test.rb +0 -127
- data/test/models_test.rb +0 -144
- data/test/omniauth/config_test.rb +0 -57
- data/test/omniauth/url_helpers_test.rb +0 -54
- data/test/orm/active_record.rb +0 -10
- data/test/orm/mongoid.rb +0 -13
- data/test/parameter_sanitizer_test.rb +0 -81
- data/test/rails_app/Rakefile +0 -6
- data/test/rails_app/app/active_record/admin.rb +0 -6
- data/test/rails_app/app/active_record/shim.rb +0 -2
- data/test/rails_app/app/active_record/user.rb +0 -6
- data/test/rails_app/app/controllers/admins/sessions_controller.rb +0 -6
- data/test/rails_app/app/controllers/admins_controller.rb +0 -11
- data/test/rails_app/app/controllers/application_controller.rb +0 -9
- data/test/rails_app/app/controllers/home_controller.rb +0 -25
- data/test/rails_app/app/controllers/publisher/registrations_controller.rb +0 -2
- data/test/rails_app/app/controllers/publisher/sessions_controller.rb +0 -2
- data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +0 -14
- data/test/rails_app/app/controllers/users_controller.rb +0 -31
- data/test/rails_app/app/helpers/application_helper.rb +0 -3
- data/test/rails_app/app/mailers/users/mailer.rb +0 -12
- data/test/rails_app/app/mongoid/admin.rb +0 -29
- data/test/rails_app/app/mongoid/shim.rb +0 -23
- data/test/rails_app/app/mongoid/user.rb +0 -39
- data/test/rails_app/app/views/admins/index.html.erb +0 -1
- data/test/rails_app/app/views/admins/sessions/new.html.erb +0 -2
- data/test/rails_app/app/views/home/admin_dashboard.html.erb +0 -1
- data/test/rails_app/app/views/home/index.html.erb +0 -1
- data/test/rails_app/app/views/home/join.html.erb +0 -1
- data/test/rails_app/app/views/home/private.html.erb +0 -1
- data/test/rails_app/app/views/home/user_dashboard.html.erb +0 -1
- data/test/rails_app/app/views/layouts/application.html.erb +0 -24
- data/test/rails_app/app/views/users/edit_form.html.erb +0 -1
- data/test/rails_app/app/views/users/index.html.erb +0 -1
- data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +0 -1
- data/test/rails_app/app/views/users/sessions/new.html.erb +0 -1
- data/test/rails_app/bin/bundle +0 -3
- data/test/rails_app/bin/rails +0 -4
- data/test/rails_app/bin/rake +0 -4
- data/test/rails_app/config/application.rb +0 -40
- data/test/rails_app/config/boot.rb +0 -14
- data/test/rails_app/config/database.yml +0 -18
- data/test/rails_app/config/environment.rb +0 -5
- data/test/rails_app/config/environments/development.rb +0 -30
- data/test/rails_app/config/environments/production.rb +0 -80
- data/test/rails_app/config/environments/test.rb +0 -36
- data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails_app/config/initializers/devise.rb +0 -181
- data/test/rails_app/config/initializers/inflections.rb +0 -2
- data/test/rails_app/config/initializers/secret_token.rb +0 -8
- data/test/rails_app/config/initializers/session_store.rb +0 -1
- data/test/rails_app/config/routes.rb +0 -104
- data/test/rails_app/config.ru +0 -4
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -71
- data/test/rails_app/db/schema.rb +0 -55
- data/test/rails_app/lib/shared_admin.rb +0 -17
- data/test/rails_app/lib/shared_user.rb +0 -29
- data/test/rails_app/public/404.html +0 -26
- data/test/rails_app/public/422.html +0 -26
- data/test/rails_app/public/500.html +0 -26
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/routes_test.rb +0 -250
- data/test/support/assertions.rb +0 -40
- data/test/support/helpers.rb +0 -70
- data/test/support/integration.rb +0 -92
- data/test/support/locale/en.yml +0 -8
- data/test/support/webrat/integrations/rails.rb +0 -24
- data/test/test_helper.rb +0 -27
- data/test/test_helpers_test.rb +0 -173
- data/test/test_models.rb +0 -33
@@ -1,276 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
class ControllerAuthenticatableTest < ActionController::TestCase
|
5
|
-
tests ApplicationController
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@mock_warden = OpenStruct.new
|
9
|
-
@controller.request.env['warden'] = @mock_warden
|
10
|
-
end
|
11
|
-
|
12
|
-
test 'provide access to warden instance' do
|
13
|
-
assert_equal @mock_warden, @controller.warden
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'proxy signed_in?(scope) to authenticate?' do
|
17
|
-
@mock_warden.expects(:authenticate?).with(:scope => :my_scope)
|
18
|
-
@controller.signed_in?(:my_scope)
|
19
|
-
end
|
20
|
-
|
21
|
-
test 'proxy signed_in?(nil) to authenticate?' do
|
22
|
-
Devise.mappings.keys.each do |scope| # :user, :admin, :manager
|
23
|
-
@mock_warden.expects(:authenticate?).with(:scope => scope)
|
24
|
-
end
|
25
|
-
@controller.signed_in?
|
26
|
-
end
|
27
|
-
|
28
|
-
test 'proxy current_user to authenticate with user scope' do
|
29
|
-
@mock_warden.expects(:authenticate).with(:scope => :user)
|
30
|
-
@controller.current_user
|
31
|
-
end
|
32
|
-
|
33
|
-
test 'proxy current_admin to authenticate with admin scope' do
|
34
|
-
@mock_warden.expects(:authenticate).with(:scope => :admin)
|
35
|
-
@controller.current_admin
|
36
|
-
end
|
37
|
-
|
38
|
-
test 'proxy current_publisher_account to authenticate with namespaced publisher account scope' do
|
39
|
-
@mock_warden.expects(:authenticate).with(:scope => :publisher_account)
|
40
|
-
@controller.current_publisher_account
|
41
|
-
end
|
42
|
-
|
43
|
-
test 'proxy authenticate_user! to authenticate with user scope' do
|
44
|
-
@mock_warden.expects(:authenticate!).with(:scope => :user)
|
45
|
-
@controller.authenticate_user!
|
46
|
-
end
|
47
|
-
|
48
|
-
test 'proxy authenticate_user! options to authenticate with user scope' do
|
49
|
-
@mock_warden.expects(:authenticate!).with(:scope => :user, :recall => "foo")
|
50
|
-
@controller.authenticate_user!(:recall => "foo")
|
51
|
-
end
|
52
|
-
|
53
|
-
test 'proxy authenticate_admin! to authenticate with admin scope' do
|
54
|
-
@mock_warden.expects(:authenticate!).with(:scope => :admin)
|
55
|
-
@controller.authenticate_admin!
|
56
|
-
end
|
57
|
-
|
58
|
-
test 'proxy authenticate_publisher_account! to authenticate with namespaced publisher account scope' do
|
59
|
-
@mock_warden.expects(:authenticate!).with(:scope => :publisher_account)
|
60
|
-
@controller.authenticate_publisher_account!
|
61
|
-
end
|
62
|
-
|
63
|
-
test 'proxy user_signed_in? to authenticate with user scope' do
|
64
|
-
@mock_warden.expects(:authenticate).with(:scope => :user).returns("user")
|
65
|
-
assert @controller.user_signed_in?
|
66
|
-
end
|
67
|
-
|
68
|
-
test 'proxy admin_signed_in? to authenticatewith admin scope' do
|
69
|
-
@mock_warden.expects(:authenticate).with(:scope => :admin)
|
70
|
-
assert_not @controller.admin_signed_in?
|
71
|
-
end
|
72
|
-
|
73
|
-
test 'proxy publisher_account_signed_in? to authenticate with namespaced publisher account scope' do
|
74
|
-
@mock_warden.expects(:authenticate).with(:scope => :publisher_account)
|
75
|
-
@controller.publisher_account_signed_in?
|
76
|
-
end
|
77
|
-
|
78
|
-
test 'proxy user_session to session scope in warden' do
|
79
|
-
@mock_warden.expects(:authenticate).with(:scope => :user).returns(true)
|
80
|
-
@mock_warden.expects(:session).with(:user).returns({})
|
81
|
-
@controller.user_session
|
82
|
-
end
|
83
|
-
|
84
|
-
test 'proxy admin_session to session scope in warden' do
|
85
|
-
@mock_warden.expects(:authenticate).with(:scope => :admin).returns(true)
|
86
|
-
@mock_warden.expects(:session).with(:admin).returns({})
|
87
|
-
@controller.admin_session
|
88
|
-
end
|
89
|
-
|
90
|
-
test 'proxy publisher_account_session from namespaced scope to session scope in warden' do
|
91
|
-
@mock_warden.expects(:authenticate).with(:scope => :publisher_account).returns(true)
|
92
|
-
@mock_warden.expects(:session).with(:publisher_account).returns({})
|
93
|
-
@controller.publisher_account_session
|
94
|
-
end
|
95
|
-
|
96
|
-
test 'sign in proxy to set_user on warden' do
|
97
|
-
user = User.new
|
98
|
-
@mock_warden.expects(:user).returns(nil)
|
99
|
-
@mock_warden.expects(:set_user).with(user, :scope => :user).returns(true)
|
100
|
-
@controller.sign_in(:user, user)
|
101
|
-
end
|
102
|
-
|
103
|
-
test 'sign in accepts a resource as argument' do
|
104
|
-
user = User.new
|
105
|
-
@mock_warden.expects(:user).returns(nil)
|
106
|
-
@mock_warden.expects(:set_user).with(user, :scope => :user).returns(true)
|
107
|
-
@controller.sign_in(user)
|
108
|
-
end
|
109
|
-
|
110
|
-
test 'does not sign in again if the user is already in' do
|
111
|
-
user = User.new
|
112
|
-
@mock_warden.expects(:user).returns(user)
|
113
|
-
@mock_warden.expects(:set_user).never
|
114
|
-
assert @controller.sign_in(user)
|
115
|
-
end
|
116
|
-
|
117
|
-
test 'sign in again when the user is already in only if force is given' do
|
118
|
-
user = User.new
|
119
|
-
@mock_warden.expects(:user).returns(user)
|
120
|
-
@mock_warden.expects(:set_user).with(user, :scope => :user).returns(true)
|
121
|
-
@controller.sign_in(user, :force => true)
|
122
|
-
end
|
123
|
-
|
124
|
-
test 'sign in accepts bypass as option' do
|
125
|
-
user = User.new
|
126
|
-
@mock_warden.expects(:session_serializer).returns(serializer = mock())
|
127
|
-
serializer.expects(:store).with(user, :user)
|
128
|
-
@controller.sign_in(user, :bypass => true)
|
129
|
-
end
|
130
|
-
|
131
|
-
test 'sign out clears up any signed in user from all scopes' do
|
132
|
-
user = User.new
|
133
|
-
@mock_warden.expects(:user).times(Devise.mappings.size)
|
134
|
-
@mock_warden.expects(:logout).with().returns(true)
|
135
|
-
@controller.instance_variable_set(:@current_user, user)
|
136
|
-
@controller.instance_variable_set(:@current_admin, user)
|
137
|
-
@controller.sign_out
|
138
|
-
assert_equal nil, @controller.instance_variable_get(:@current_user)
|
139
|
-
assert_equal nil, @controller.instance_variable_get(:@current_admin)
|
140
|
-
end
|
141
|
-
|
142
|
-
test 'sign out logs out and clears up any signed in user by scope' do
|
143
|
-
user = User.new
|
144
|
-
@mock_warden.expects(:user).with(:scope => :user, :run_callbacks => false).returns(user)
|
145
|
-
@mock_warden.expects(:logout).with(:user).returns(true)
|
146
|
-
@mock_warden.expects(:clear_strategies_cache!).with(:scope => :user).returns(true)
|
147
|
-
@controller.instance_variable_set(:@current_user, user)
|
148
|
-
@controller.sign_out(:user)
|
149
|
-
assert_equal nil, @controller.instance_variable_get(:@current_user)
|
150
|
-
end
|
151
|
-
|
152
|
-
test 'sign out accepts a resource as argument' do
|
153
|
-
@mock_warden.expects(:user).with(:scope => :user, :run_callbacks => false).returns(true)
|
154
|
-
@mock_warden.expects(:logout).with(:user).returns(true)
|
155
|
-
@mock_warden.expects(:clear_strategies_cache!).with(:scope => :user).returns(true)
|
156
|
-
@controller.sign_out(User.new)
|
157
|
-
end
|
158
|
-
|
159
|
-
test 'sign out without args proxy to sign out all scopes' do
|
160
|
-
@mock_warden.expects(:user).times(Devise.mappings.size)
|
161
|
-
@mock_warden.expects(:logout).with().returns(true)
|
162
|
-
@mock_warden.expects(:clear_strategies_cache!).with().returns(true)
|
163
|
-
@controller.sign_out
|
164
|
-
end
|
165
|
-
|
166
|
-
test 'sign out everybody proxy to logout on warden' do
|
167
|
-
@mock_warden.expects(:user).times(Devise.mappings.size)
|
168
|
-
@mock_warden.expects(:logout).with().returns(true)
|
169
|
-
@controller.sign_out_all_scopes
|
170
|
-
end
|
171
|
-
|
172
|
-
test 'stored location for returns the location for a given scope' do
|
173
|
-
assert_nil @controller.stored_location_for(:user)
|
174
|
-
@controller.session[:"user_return_to"] = "/foo.bar"
|
175
|
-
assert_equal "/foo.bar", @controller.stored_location_for(:user)
|
176
|
-
end
|
177
|
-
|
178
|
-
test 'stored location for accepts a resource as argument' do
|
179
|
-
assert_nil @controller.stored_location_for(:user)
|
180
|
-
@controller.session[:"user_return_to"] = "/foo.bar"
|
181
|
-
assert_equal "/foo.bar", @controller.stored_location_for(User.new)
|
182
|
-
end
|
183
|
-
|
184
|
-
test 'stored location cleans information after reading' do
|
185
|
-
@controller.session[:"user_return_to"] = "/foo.bar"
|
186
|
-
assert_equal "/foo.bar", @controller.stored_location_for(:user)
|
187
|
-
assert_nil @controller.session[:"user_return_to"]
|
188
|
-
end
|
189
|
-
|
190
|
-
test 'store location for stores a location to redirect back to' do
|
191
|
-
assert_nil @controller.stored_location_for(:user)
|
192
|
-
@controller.store_location_for(:user, "/foo.bar")
|
193
|
-
assert_equal "/foo.bar", @controller.stored_location_for(:user)
|
194
|
-
end
|
195
|
-
|
196
|
-
test 'store location for accepts a resource as argument' do
|
197
|
-
@controller.store_location_for(User.new, "/foo.bar")
|
198
|
-
assert_equal "/foo.bar", @controller.stored_location_for(User.new)
|
199
|
-
end
|
200
|
-
|
201
|
-
test 'store location for stores paths' do
|
202
|
-
@controller.store_location_for(:user, "//host/foo.bar")
|
203
|
-
assert_equal "/foo.bar", @controller.stored_location_for(:user)
|
204
|
-
@controller.store_location_for(:user, "///foo.bar")
|
205
|
-
assert_equal "/foo.bar", @controller.stored_location_for(:user)
|
206
|
-
end
|
207
|
-
|
208
|
-
test 'store location for stores query string' do
|
209
|
-
@controller.store_location_for(:user, "/foo?bar=baz")
|
210
|
-
assert_equal "/foo?bar=baz", @controller.stored_location_for(:user)
|
211
|
-
end
|
212
|
-
|
213
|
-
test 'after sign in path defaults to root path if none by was specified for the given scope' do
|
214
|
-
assert_equal root_path, @controller.after_sign_in_path_for(:user)
|
215
|
-
end
|
216
|
-
|
217
|
-
test 'after sign in path defaults to the scoped root path' do
|
218
|
-
assert_equal admin_root_path, @controller.after_sign_in_path_for(:admin)
|
219
|
-
end
|
220
|
-
|
221
|
-
test 'after sign out path defaults to the root path' do
|
222
|
-
assert_equal root_path, @controller.after_sign_out_path_for(:admin)
|
223
|
-
assert_equal root_path, @controller.after_sign_out_path_for(:user)
|
224
|
-
end
|
225
|
-
|
226
|
-
test 'sign in and redirect uses the stored location' do
|
227
|
-
user = User.new
|
228
|
-
@controller.session[:user_return_to] = "/foo.bar"
|
229
|
-
@mock_warden.expects(:user).with(:user).returns(nil)
|
230
|
-
@mock_warden.expects(:set_user).with(user, :scope => :user).returns(true)
|
231
|
-
@controller.expects(:redirect_to).with("/foo.bar")
|
232
|
-
@controller.sign_in_and_redirect(user)
|
233
|
-
end
|
234
|
-
|
235
|
-
test 'sign in and redirect uses the configured after sign in path' do
|
236
|
-
admin = Admin.new
|
237
|
-
@mock_warden.expects(:user).with(:admin).returns(nil)
|
238
|
-
@mock_warden.expects(:set_user).with(admin, :scope => :admin).returns(true)
|
239
|
-
@controller.expects(:redirect_to).with(admin_root_path)
|
240
|
-
@controller.sign_in_and_redirect(admin)
|
241
|
-
end
|
242
|
-
|
243
|
-
test 'sign in and redirect does not sign in again if user is already signed' do
|
244
|
-
admin = Admin.new
|
245
|
-
@mock_warden.expects(:user).with(:admin).returns(admin)
|
246
|
-
@mock_warden.expects(:set_user).never
|
247
|
-
@controller.expects(:redirect_to).with(admin_root_path)
|
248
|
-
@controller.sign_in_and_redirect(admin)
|
249
|
-
end
|
250
|
-
|
251
|
-
test 'sign out and redirect uses the configured after sign out path when signing out only the current scope' do
|
252
|
-
swap Devise, :sign_out_all_scopes => false do
|
253
|
-
@mock_warden.expects(:user).with(:scope => :admin, :run_callbacks => false).returns(true)
|
254
|
-
@mock_warden.expects(:logout).with(:admin).returns(true)
|
255
|
-
@mock_warden.expects(:clear_strategies_cache!).with(:scope => :admin).returns(true)
|
256
|
-
@controller.expects(:redirect_to).with(admin_root_path)
|
257
|
-
@controller.instance_eval "def after_sign_out_path_for(resource); admin_root_path; end"
|
258
|
-
@controller.sign_out_and_redirect(:admin)
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
test 'sign out and redirect uses the configured after sign out path when signing out all scopes' do
|
263
|
-
swap Devise, :sign_out_all_scopes => true do
|
264
|
-
@mock_warden.expects(:user).times(Devise.mappings.size)
|
265
|
-
@mock_warden.expects(:logout).with().returns(true)
|
266
|
-
@mock_warden.expects(:clear_strategies_cache!).with().returns(true)
|
267
|
-
@controller.expects(:redirect_to).with(admin_root_path)
|
268
|
-
@controller.instance_eval "def after_sign_out_path_for(resource); admin_root_path; end"
|
269
|
-
@controller.sign_out_and_redirect(:admin)
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
test 'is not a devise controller' do
|
274
|
-
assert_not @controller.devise_controller?
|
275
|
-
end
|
276
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class MyController < DeviseController
|
4
|
-
end
|
5
|
-
|
6
|
-
class HelpersTest < ActionController::TestCase
|
7
|
-
tests MyController
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@mock_warden = OpenStruct.new
|
11
|
-
@controller.request.env['warden'] = @mock_warden
|
12
|
-
@controller.request.env['devise.mapping'] = Devise.mappings[:user]
|
13
|
-
end
|
14
|
-
|
15
|
-
test 'get resource name from env' do
|
16
|
-
assert_equal :user, @controller.resource_name
|
17
|
-
end
|
18
|
-
|
19
|
-
test 'get resource class from env' do
|
20
|
-
assert_equal User, @controller.resource_class
|
21
|
-
end
|
22
|
-
|
23
|
-
test 'get resource instance variable from env' do
|
24
|
-
@controller.instance_variable_set(:@user, user = User.new)
|
25
|
-
assert_equal user, @controller.resource
|
26
|
-
end
|
27
|
-
|
28
|
-
test 'set resource instance variable from env' do
|
29
|
-
user = @controller.send(:resource_class).new
|
30
|
-
@controller.send(:resource=, user)
|
31
|
-
|
32
|
-
assert_equal user, @controller.send(:resource)
|
33
|
-
assert_equal user, @controller.instance_variable_get(:@user)
|
34
|
-
end
|
35
|
-
|
36
|
-
test 'get resource params from request params using resource name as key' do
|
37
|
-
user_params = {'email' => 'shirley@templar.com'}
|
38
|
-
|
39
|
-
params = if Devise.rails4?
|
40
|
-
# Stub controller name so strong parameters can filter properly.
|
41
|
-
# DeviseController does not allow any parameters by default.
|
42
|
-
@controller.stubs(:controller_name).returns(:sessions_controller)
|
43
|
-
|
44
|
-
ActionController::Parameters.new({'user' => user_params})
|
45
|
-
else
|
46
|
-
HashWithIndifferentAccess.new({'user' => user_params})
|
47
|
-
end
|
48
|
-
@controller.stubs(:params).returns(params)
|
49
|
-
|
50
|
-
assert_equal user_params, @controller.send(:resource_params)
|
51
|
-
end
|
52
|
-
|
53
|
-
test 'resources methods are not controller actions' do
|
54
|
-
assert @controller.class.action_methods.empty?
|
55
|
-
end
|
56
|
-
|
57
|
-
test 'require no authentication tests current mapping' do
|
58
|
-
@mock_warden.expects(:authenticate?).with(:rememberable, :scope => :user).returns(true)
|
59
|
-
@mock_warden.expects(:user).with(:user).returns(User.new)
|
60
|
-
@controller.expects(:redirect_to).with(root_path)
|
61
|
-
@controller.send :require_no_authentication
|
62
|
-
end
|
63
|
-
|
64
|
-
test 'require no authentication only checks if already authenticated if no inputs strategies are available' do
|
65
|
-
Devise.mappings[:user].expects(:no_input_strategies).returns([])
|
66
|
-
@mock_warden.expects(:authenticate?).never
|
67
|
-
@mock_warden.expects(:authenticated?).with(:user).once.returns(true)
|
68
|
-
@mock_warden.expects(:user).with(:user).returns(User.new)
|
69
|
-
@controller.expects(:redirect_to).with(root_path)
|
70
|
-
@controller.send :require_no_authentication
|
71
|
-
end
|
72
|
-
|
73
|
-
test 'require no authentication sets a flash message' do
|
74
|
-
@mock_warden.expects(:authenticate?).with(:rememberable, :scope => :user).returns(true)
|
75
|
-
@mock_warden.expects(:user).with(:user).returns(User.new)
|
76
|
-
@controller.expects(:redirect_to).with(root_path)
|
77
|
-
@controller.send :require_no_authentication
|
78
|
-
assert flash[:alert] == I18n.t("devise.failure.already_authenticated")
|
79
|
-
end
|
80
|
-
|
81
|
-
test 'signed in resource returns signed in resource for current scope' do
|
82
|
-
@mock_warden.expects(:authenticate).with(:scope => :user).returns(User.new)
|
83
|
-
assert_kind_of User, @controller.signed_in_resource
|
84
|
-
end
|
85
|
-
|
86
|
-
test 'is a devise controller' do
|
87
|
-
assert @controller.devise_controller?
|
88
|
-
end
|
89
|
-
|
90
|
-
test 'does not issue blank flash messages' do
|
91
|
-
I18n.stubs(:t).returns(' ')
|
92
|
-
@controller.send :set_flash_message, :notice, :send_instructions
|
93
|
-
assert flash[:notice].nil?
|
94
|
-
end
|
95
|
-
|
96
|
-
test 'issues non-blank flash messages normally' do
|
97
|
-
I18n.stubs(:t).returns('non-blank')
|
98
|
-
@controller.send :set_flash_message, :notice, :send_instructions
|
99
|
-
assert_equal 'non-blank', flash[:notice]
|
100
|
-
end
|
101
|
-
|
102
|
-
test 'uses custom i18n options' do
|
103
|
-
@controller.stubs(:devise_i18n_options).returns(:default => "devise custom options")
|
104
|
-
@controller.send :set_flash_message, :notice, :invalid_i18n_messagesend_instructions
|
105
|
-
assert_equal 'devise custom options', flash[:notice]
|
106
|
-
end
|
107
|
-
|
108
|
-
test 'allows custom i18n options to override resource_name' do
|
109
|
-
I18n.expects(:t).with("custom_resource_name.confirmed", anything)
|
110
|
-
@controller.stubs(:devise_i18n_options).returns(:resource_name => "custom_resource_name")
|
111
|
-
@controller.send :set_flash_message, :notice, :confirmed
|
112
|
-
end
|
113
|
-
|
114
|
-
test 'navigational_formats not returning a wild card' do
|
115
|
-
MyController.send(:public, :navigational_formats)
|
116
|
-
Devise.navigational_formats = [:"*/*", :html]
|
117
|
-
assert_not @controller.navigational_formats.include?(:"*/*")
|
118
|
-
MyController.send(:protected, :navigational_formats)
|
119
|
-
end
|
120
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class PasswordsControllerTest < ActionController::TestCase
|
4
|
-
tests Devise::PasswordsController
|
5
|
-
include Devise::TestHelpers
|
6
|
-
|
7
|
-
setup do
|
8
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
9
|
-
@user = create_user.tap(&:confirm!)
|
10
|
-
@raw = @user.send_reset_password_instructions
|
11
|
-
end
|
12
|
-
|
13
|
-
def put_update_with_params
|
14
|
-
put :update, "user" => {
|
15
|
-
"reset_password_token" => @raw, "password" => "123456", "password_confirmation" => "123456"
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
test 'redirect to after_sign_in_path_for if after_resetting_password_path_for is not overridden' do
|
20
|
-
put_update_with_params
|
21
|
-
assert_redirected_to "http://test.host/"
|
22
|
-
end
|
23
|
-
|
24
|
-
test 'redirect accordingly if after_resetting_password_path_for is overridden' do
|
25
|
-
custom_path = "http://custom.path/"
|
26
|
-
Devise::PasswordsController.any_instance.stubs(:after_resetting_password_path_for).with(@user).returns(custom_path)
|
27
|
-
|
28
|
-
put_update_with_params
|
29
|
-
assert_redirected_to custom_path
|
30
|
-
end
|
31
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class SessionsControllerTest < ActionController::TestCase
|
4
|
-
tests Devise::SessionsController
|
5
|
-
include Devise::TestHelpers
|
6
|
-
|
7
|
-
test "#create doesn't raise unpermitted params when sign in fails" do
|
8
|
-
ActiveSupport::Notifications.subscribe /unpermitted_parameters/ do |name, start, finish, id, payload|
|
9
|
-
flunk "Unpermitted params: #{payload}"
|
10
|
-
end
|
11
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
12
|
-
request.session["user_return_to"] = 'foo.bar'
|
13
|
-
create_user
|
14
|
-
post :create, :user => {
|
15
|
-
:email => "wrong@email.com",
|
16
|
-
:password => "wrongpassword"
|
17
|
-
}
|
18
|
-
assert_equal 200, @response.status
|
19
|
-
end
|
20
|
-
|
21
|
-
test "#create works even with scoped views" do
|
22
|
-
swap Devise, :scoped_views => true do
|
23
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
24
|
-
post :create
|
25
|
-
assert_equal 200, @response.status
|
26
|
-
assert_template "users/sessions/new"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
test "#create delete the url stored in the session if the requested format is navigational" do
|
31
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
32
|
-
request.session["user_return_to"] = 'foo.bar'
|
33
|
-
|
34
|
-
user = create_user
|
35
|
-
user.confirm!
|
36
|
-
post :create, :user => {
|
37
|
-
:email => user.email,
|
38
|
-
:password => user.password
|
39
|
-
}
|
40
|
-
|
41
|
-
assert_nil request.session["user_return_to"]
|
42
|
-
end
|
43
|
-
|
44
|
-
test "#create doesn't delete the url stored in the session if the requested format is not navigational" do
|
45
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
46
|
-
request.session["user_return_to"] = 'foo.bar'
|
47
|
-
|
48
|
-
user = create_user
|
49
|
-
user.confirm!
|
50
|
-
post :create, :format => 'json', :user => {
|
51
|
-
:email => user.email,
|
52
|
-
:password => user.password
|
53
|
-
}
|
54
|
-
|
55
|
-
assert_equal 'foo.bar', request.session["user_return_to"]
|
56
|
-
end
|
57
|
-
|
58
|
-
test "#create doesn't raise exception after Warden authentication fails when TestHelpers included" do
|
59
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
60
|
-
post :create, :user => {
|
61
|
-
:email => "nosuchuser@example.com",
|
62
|
-
:password => "wevdude"
|
63
|
-
}
|
64
|
-
assert_equal 200, @response.status
|
65
|
-
assert_template "devise/sessions/new"
|
66
|
-
end
|
67
|
-
|
68
|
-
test "#destroy doesn't set the flash if the requested format is not navigational" do
|
69
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
70
|
-
user = create_user
|
71
|
-
user.confirm!
|
72
|
-
post :create, :format => 'json', :user => {
|
73
|
-
:email => user.email,
|
74
|
-
:password => user.password
|
75
|
-
}
|
76
|
-
|
77
|
-
delete :destroy, :format => 'json'
|
78
|
-
assert flash[:notice].blank?, "flash[:notice] should be blank, not #{flash[:notice].inspect}"
|
79
|
-
assert_equal 204, @response.status
|
80
|
-
end
|
81
|
-
|
82
|
-
if defined?(ActiveRecord) && ActiveRecord::Base.respond_to?(:mass_assignment_sanitizer)
|
83
|
-
test "#new doesn't raise mass-assignment exception even if sign-in key is attr_protected" do
|
84
|
-
request.env["devise.mapping"] = Devise.mappings[:user]
|
85
|
-
|
86
|
-
ActiveRecord::Base.mass_assignment_sanitizer = :strict
|
87
|
-
User.class_eval { attr_protected :email }
|
88
|
-
|
89
|
-
begin
|
90
|
-
assert_nothing_raised ActiveModel::MassAssignmentSecurity::Error do
|
91
|
-
get :new, :user => { :email => "allez viens!" }
|
92
|
-
end
|
93
|
-
ensure
|
94
|
-
ActiveRecord::Base.mass_assignment_sanitizer = :logger
|
95
|
-
User.class_eval { attr_accessible :email }
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RoutesTest < ActionController::TestCase
|
4
|
-
tests ApplicationController
|
5
|
-
|
6
|
-
def assert_path_and_url(name, prepend_path=nil)
|
7
|
-
@request.path = '/users/session'
|
8
|
-
prepend_path = "#{prepend_path}_" if prepend_path
|
9
|
-
|
10
|
-
# Resource param
|
11
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_path", :user),
|
12
|
-
send(:"#{prepend_path}user_#{name}_path")
|
13
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_url", :user),
|
14
|
-
send(:"#{prepend_path}user_#{name}_url")
|
15
|
-
|
16
|
-
# Default url params
|
17
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_path", :user, :param => 123),
|
18
|
-
send(:"#{prepend_path}user_#{name}_path", :param => 123)
|
19
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_url", :user, :param => 123),
|
20
|
-
send(:"#{prepend_path}user_#{name}_url", :param => 123)
|
21
|
-
|
22
|
-
@request.path = nil
|
23
|
-
# With an object
|
24
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_path", User.new),
|
25
|
-
send(:"#{prepend_path}user_#{name}_path")
|
26
|
-
assert_equal @controller.send(:"#{prepend_path}#{name}_url", User.new),
|
27
|
-
send(:"#{prepend_path}user_#{name}_url")
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
test 'should alias session to mapped user session' do
|
32
|
-
assert_path_and_url :session
|
33
|
-
assert_path_and_url :session, :new
|
34
|
-
assert_path_and_url :session, :destroy
|
35
|
-
end
|
36
|
-
|
37
|
-
test 'should alias password to mapped user password' do
|
38
|
-
assert_path_and_url :password
|
39
|
-
assert_path_and_url :password, :new
|
40
|
-
assert_path_and_url :password, :edit
|
41
|
-
end
|
42
|
-
|
43
|
-
test 'should alias confirmation to mapped user confirmation' do
|
44
|
-
assert_path_and_url :confirmation
|
45
|
-
assert_path_and_url :confirmation, :new
|
46
|
-
end
|
47
|
-
|
48
|
-
test 'should alias unlock to mapped user unlock' do
|
49
|
-
assert_path_and_url :unlock
|
50
|
-
assert_path_and_url :unlock, :new
|
51
|
-
end
|
52
|
-
|
53
|
-
test 'should alias registration to mapped user registration' do
|
54
|
-
assert_path_and_url :registration
|
55
|
-
assert_path_and_url :registration, :new
|
56
|
-
assert_path_and_url :registration, :edit
|
57
|
-
assert_path_and_url :registration, :cancel
|
58
|
-
end
|
59
|
-
end
|
data/test/delegator_test.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class DelegatorTest < ActiveSupport::TestCase
|
4
|
-
def delegator
|
5
|
-
Devise::Delegator.new
|
6
|
-
end
|
7
|
-
|
8
|
-
test 'failure_app returns default failure app if no warden options in env' do
|
9
|
-
assert_equal Devise::FailureApp, delegator.failure_app({})
|
10
|
-
end
|
11
|
-
|
12
|
-
test 'failure_app returns default failure app if no scope in warden options' do
|
13
|
-
assert_equal Devise::FailureApp, delegator.failure_app({"warden.options" => {}})
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'failure_app returns associated failure app by scope in the given environment' do
|
17
|
-
assert_kind_of Proc, delegator.failure_app({"warden.options" => {:scope => "manager"}})
|
18
|
-
end
|
19
|
-
end
|