loyal_devise 2.1.2 → 2.1.3
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.
- data/.gitignore +2 -0
- data/.travis.yml +14 -9
- data/.yardopts +9 -0
- data/CHANGELOG.rdoc +60 -5
- data/CONTRIBUTING.md +4 -2
- data/Gemfile +7 -7
- data/Gemfile.lock +107 -101
- data/MIT-LICENSE +1 -1
- data/README.md +110 -48
- data/Rakefile +1 -0
- data/app/controllers/devise/confirmations_controller.rb +2 -4
- data/app/controllers/devise/omniauth_callbacks_controller.rb +0 -1
- data/app/controllers/devise/passwords_controller.rb +16 -5
- data/app/controllers/devise/registrations_controller.rb +13 -7
- data/app/controllers/devise/sessions_controller.rb +6 -6
- data/app/controllers/devise/unlocks_controller.rb +3 -4
- data/app/controllers/devise_controller.rb +12 -33
- data/app/helpers/devise_helper.rb +0 -1
- data/app/mailers/devise/mailer.rb +7 -8
- data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
- data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/devise/registrations/edit.html.erb +5 -1
- data/config/locales/en.yml +48 -48
- data/devise.gemspec +6 -6
- data/devise.png +0 -0
- data/gemfiles/{Gemfile.rails-3.1.x → Gemfile.rails-3.2.x} +8 -12
- data/gemfiles/Gemfile.rails-3.2.x.lock +156 -0
- data/lib/devise.rb +34 -11
- data/lib/devise/controllers/helpers.rb +33 -7
- data/lib/devise/controllers/rememberable.rb +6 -3
- data/lib/devise/controllers/scoped_views.rb +1 -2
- data/lib/devise/controllers/url_helpers.rb +0 -1
- data/lib/devise/delegator.rb +0 -1
- data/lib/devise/failure_app.rb +8 -2
- data/lib/devise/hooks/activatable.rb +1 -2
- data/lib/devise/hooks/forgetable.rb +0 -1
- data/lib/devise/hooks/lockable.rb +1 -2
- data/lib/devise/hooks/rememberable.rb +1 -2
- data/lib/devise/hooks/timeoutable.rb +0 -1
- data/lib/devise/hooks/trackable.rb +0 -1
- data/lib/devise/mailers/helpers.rb +18 -14
- data/lib/devise/mapping.rb +6 -7
- data/lib/devise/models.rb +0 -1
- data/lib/devise/models/authenticatable.rb +50 -27
- data/lib/devise/models/confirmable.rb +37 -16
- data/lib/devise/models/database_authenticatable.rb +17 -3
- data/lib/devise/models/lockable.rb +1 -2
- data/lib/devise/models/omniauthable.rb +1 -2
- data/lib/devise/models/recoverable.rb +10 -6
- data/lib/devise/models/registerable.rb +0 -1
- data/lib/devise/models/rememberable.rb +1 -2
- data/lib/devise/models/timeoutable.rb +1 -2
- data/lib/devise/models/token_authenticatable.rb +0 -1
- data/lib/devise/models/trackable.rb +0 -1
- data/lib/devise/models/validatable.rb +0 -1
- data/lib/devise/modules.rb +1 -2
- data/lib/devise/omniauth.rb +0 -1
- data/lib/devise/omniauth/config.rb +0 -1
- data/lib/devise/omniauth/url_helpers.rb +0 -1
- data/lib/devise/orm/active_record.rb +1 -2
- data/lib/devise/orm/mongoid.rb +1 -2
- data/lib/devise/{param_filter.rb → parameter_filter.rb} +10 -12
- data/lib/devise/parameter_sanitizer.rb +59 -0
- data/lib/devise/rails.rb +0 -1
- data/lib/devise/rails/routes.rb +22 -18
- data/lib/devise/rails/warden_compat.rb +0 -30
- data/lib/devise/strategies/authenticatable.rb +8 -6
- data/lib/devise/strategies/base.rb +1 -2
- data/lib/devise/strategies/database_authenticatable.rb +1 -2
- data/lib/devise/strategies/rememberable.rb +1 -2
- data/lib/devise/strategies/token_authenticatable.rb +38 -4
- data/lib/devise/test_helpers.rb +0 -1
- data/lib/devise/time_inflector.rb +1 -2
- data/lib/devise/version.rb +1 -2
- data/lib/generators/active_record/devise_generator.rb +1 -5
- data/lib/generators/active_record/templates/migration.rb +0 -1
- data/lib/generators/active_record/templates/migration_existing.rb +0 -1
- data/lib/generators/devise/devise_generator.rb +0 -1
- data/lib/generators/devise/install_generator.rb +0 -1
- data/lib/generators/devise/orm_helpers.rb +1 -2
- data/lib/generators/devise/views_generator.rb +8 -3
- data/lib/generators/mongoid/devise_generator.rb +1 -2
- data/lib/generators/templates/README +1 -1
- data/lib/generators/templates/devise.rb +10 -5
- data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
- data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +1 -0
- data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +6 -1
- data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +1 -0
- data/loyal_devise.gemspec +27 -0
- data/test/controllers/custom_strategy_test.rb +0 -1
- data/test/controllers/helpers_test.rb +0 -1
- data/test/controllers/internal_helpers_test.rb +13 -4
- data/test/controllers/passwords_controller_test.rb +32 -0
- data/test/controllers/sessions_controller_test.rb +28 -1
- data/test/controllers/url_helpers_test.rb +0 -1
- data/test/delegator_test.rb +0 -1
- data/test/devise_test.rb +12 -2
- data/test/failure_app_test.rb +3 -4
- data/test/generators/active_record_generator_test.rb +1 -4
- data/test/generators/devise_generator_test.rb +0 -1
- data/test/generators/install_generator_test.rb +0 -1
- data/test/generators/mongoid_generator_test.rb +0 -1
- data/test/generators/views_generator_test.rb +16 -2
- data/test/helpers/devise_helper_test.rb +1 -2
- data/test/integration/authenticatable_test.rb +92 -27
- data/test/integration/confirmable_test.rb +7 -7
- data/test/integration/database_authenticatable_test.rb +8 -7
- data/test/integration/http_authenticatable_test.rb +19 -2
- data/test/integration/lockable_test.rb +1 -2
- data/test/integration/omniauthable_test.rb +2 -3
- data/test/integration/recoverable_test.rb +40 -12
- data/test/integration/registerable_test.rb +17 -14
- data/test/integration/rememberable_test.rb +16 -10
- data/test/integration/timeoutable_test.rb +11 -2
- data/test/integration/token_authenticatable_test.rb +45 -2
- data/test/integration/trackable_test.rb +1 -2
- data/test/mailers/confirmation_instructions_test.rb +11 -3
- data/test/mailers/reset_password_instructions_test.rb +11 -3
- data/test/mailers/unlock_instructions_test.rb +11 -2
- data/test/mapping_test.rb +0 -1
- data/test/models/authenticatable_test.rb +6 -1
- data/test/models/confirmable_test.rb +53 -2
- data/test/models/database_authenticatable_test.rb +57 -21
- data/test/models/lockable_test.rb +1 -2
- data/test/models/omniauthable_test.rb +0 -1
- data/test/models/recoverable_test.rb +21 -5
- data/test/models/registerable_test.rb +0 -1
- data/test/models/rememberable_test.rb +4 -4
- data/test/models/serializable_test.rb +8 -8
- data/test/models/timeoutable_test.rb +0 -1
- data/test/models/token_authenticatable_test.rb +0 -1
- data/test/models/trackable_test.rb +0 -1
- data/test/models/validatable_test.rb +16 -6
- data/test/models_test.rb +7 -24
- data/test/omniauth/config_test.rb +1 -2
- data/test/omniauth/url_helpers_test.rb +4 -2
- data/test/orm/active_record.rb +1 -1
- data/test/orm/mongoid.rb +2 -4
- data/test/parameter_sanitizer_test.rb +51 -0
- data/test/rails_app/Rakefile +0 -4
- data/test/rails_app/app/active_record/admin.rb +0 -1
- data/test/rails_app/app/active_record/shim.rb +1 -2
- data/test/rails_app/app/active_record/user.rb +0 -1
- data/test/rails_app/app/controllers/admins/sessions_controller.rb +1 -2
- data/test/rails_app/app/controllers/admins_controller.rb +0 -1
- data/test/rails_app/app/controllers/application_controller.rb +1 -1
- data/test/rails_app/app/controllers/home_controller.rb +0 -1
- data/test/rails_app/app/controllers/publisher/registrations_controller.rb +1 -2
- data/test/rails_app/app/controllers/publisher/sessions_controller.rb +1 -2
- data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +1 -2
- data/test/rails_app/app/controllers/users_controller.rb +8 -1
- data/test/rails_app/app/helpers/application_helper.rb +0 -1
- data/test/rails_app/app/mailers/users/mailer.rb +4 -1
- data/test/rails_app/app/mongoid/admin.rb +4 -3
- data/test/rails_app/app/mongoid/shim.rb +3 -5
- data/test/rails_app/app/mongoid/user.rb +2 -3
- data/test/rails_app/app/views/users/edit_form.html.erb +1 -0
- data/test/rails_app/bin/bundle +3 -0
- data/test/rails_app/bin/rails +4 -0
- data/test/rails_app/bin/rake +4 -0
- data/test/rails_app/config/application.rb +1 -3
- data/test/rails_app/config/boot.rb +3 -4
- data/test/rails_app/config/environment.rb +2 -3
- data/test/rails_app/config/environments/development.rb +23 -8
- data/test/rails_app/config/environments/production.rb +68 -18
- data/test/rails_app/config/environments/test.rb +18 -16
- data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -1
- data/test/rails_app/config/initializers/devise.rb +0 -1
- data/test/rails_app/config/initializers/inflections.rb +0 -1
- data/test/rails_app/config/initializers/secret_token.rb +8 -3
- data/test/rails_app/config/initializers/session_store.rb +1 -0
- data/test/rails_app/config/routes.rb +20 -17
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -1
- data/test/rails_app/db/schema.rb +0 -1
- data/test/rails_app/lib/shared_admin.rb +0 -1
- data/test/rails_app/lib/shared_user.rb +0 -2
- data/test/routes_test.rb +22 -21
- data/test/support/assertions.rb +0 -1
- data/test/support/helpers.rb +1 -2
- data/test/support/integration.rb +0 -1
- data/test/support/webrat/integrations/rails.rb +0 -1
- data/test/test_helper.rb +8 -2
- data/test/test_helpers_test.rb +0 -1
- data/test/test_models.rb +26 -0
- metadata +65 -27
- data/gemfiles/Gemfile.rails-3.1.x.lock +0 -167
- data/test/indifferent_hash.rb +0 -34
- data/test/rails_app/script/rails +0 -10
data/test/delegator_test.rb
CHANGED
data/test/devise_test.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'test_helper'
|
|
3
2
|
|
|
4
3
|
module Devise
|
|
@@ -69,5 +68,16 @@ class DeviseTest < ActiveSupport::TestCase
|
|
|
69
68
|
end
|
|
70
69
|
assert_not Devise.secure_compare("size_1", "size_four")
|
|
71
70
|
end
|
|
72
|
-
|
|
71
|
+
|
|
72
|
+
test 'Devise.email_regexp should match valid email addresses' do
|
|
73
|
+
valid_emails = ["test@example.com", "jo@jo.co", "f4$_m@you.com", "testing.example@example.com.ua"]
|
|
74
|
+
non_valid_emails = ["rex", "test@go,com", "test user@example.com", "test_user@example server.com"]
|
|
75
|
+
|
|
76
|
+
valid_emails.each do |email|
|
|
77
|
+
assert_match Devise.email_regexp, email
|
|
78
|
+
end
|
|
79
|
+
non_valid_emails.each do |email|
|
|
80
|
+
assert_no_match Devise.email_regexp, email
|
|
81
|
+
end
|
|
82
|
+
end
|
|
73
83
|
end
|
data/test/failure_app_test.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'test_helper'
|
|
3
2
|
require 'ostruct'
|
|
4
3
|
|
|
@@ -81,9 +80,9 @@ class FailureTest < ActiveSupport::TestCase
|
|
|
81
80
|
|
|
82
81
|
test 'setup a default message' do
|
|
83
82
|
call_failure
|
|
84
|
-
assert_match
|
|
85
|
-
assert_match
|
|
86
|
-
assert_match
|
|
83
|
+
assert_match(/You are being/, @response.last.body)
|
|
84
|
+
assert_match(/redirected/, @response.last.body)
|
|
85
|
+
assert_match(/users\/sign_in/, @response.last.body)
|
|
87
86
|
end
|
|
88
87
|
|
|
89
88
|
test 'works for any navigational format' do
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require "test_helper"
|
|
3
2
|
|
|
4
3
|
if DEVISE_ORM == :active_record
|
|
@@ -11,13 +10,11 @@ if DEVISE_ORM == :active_record
|
|
|
11
10
|
|
|
12
11
|
test "all files are properly created with rails31 migration syntax" do
|
|
13
12
|
run_generator %w(monster)
|
|
14
|
-
assert_file "app/models/monster.rb", /devise/, /attr_accessible (:[a-z_]+(, )?)+/
|
|
15
13
|
assert_migration "db/migrate/devise_create_monsters.rb", /def change/
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
test "all files for namespaced model are properly created" do
|
|
19
17
|
run_generator %w(admin/monster)
|
|
20
|
-
assert_file "app/models/admin/monster.rb", /devise/, /attr_accessible (:[a-z_]+(, )?)+/
|
|
21
18
|
assert_migration "db/migrate/devise_create_admin_monsters.rb", /def change/
|
|
22
19
|
end
|
|
23
20
|
|
|
@@ -69,7 +66,7 @@ if DEVISE_ORM == :active_record
|
|
|
69
66
|
simulate_inside_engine(RailsEngine::Engine, RailsEngine) do
|
|
70
67
|
run_generator ["monster"]
|
|
71
68
|
|
|
72
|
-
assert_file "app/models/rails_engine/monster.rb", /devise
|
|
69
|
+
assert_file "app/models/rails_engine/monster.rb", /devise/
|
|
73
70
|
end
|
|
74
71
|
end
|
|
75
72
|
end
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class ViewsGeneratorTest < Rails::Generators::TestCase
|
|
@@ -9,14 +8,17 @@ class ViewsGeneratorTest < Rails::Generators::TestCase
|
|
|
9
8
|
test "Assert all views are properly created with no params" do
|
|
10
9
|
run_generator
|
|
11
10
|
assert_files
|
|
11
|
+
assert_shared_links
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
test "Assert all views are properly created with scope param
|
|
14
|
+
test "Assert all views are properly created with scope param" do
|
|
15
15
|
run_generator %w(users)
|
|
16
16
|
assert_files "users"
|
|
17
|
+
assert_shared_links "users"
|
|
17
18
|
|
|
18
19
|
run_generator %w(admins)
|
|
19
20
|
assert_files "admins"
|
|
21
|
+
assert_shared_links "admins"
|
|
20
22
|
end
|
|
21
23
|
|
|
22
24
|
test "Assert views with simple form" do
|
|
@@ -50,4 +52,16 @@ class ViewsGeneratorTest < Rails::Generators::TestCase
|
|
|
50
52
|
assert_file "app/views/#{scope}/shared/_links.erb"
|
|
51
53
|
assert_file "app/views/#{scope}/unlocks/new.html.erb"
|
|
52
54
|
end
|
|
55
|
+
|
|
56
|
+
def assert_shared_links(scope = nil)
|
|
57
|
+
scope = "devise" if scope.nil?
|
|
58
|
+
link = /<%= render \"#{scope}\/shared\/links\" %>/
|
|
59
|
+
|
|
60
|
+
assert_file "app/views/#{scope}/passwords/edit.html.erb", link
|
|
61
|
+
assert_file "app/views/#{scope}/passwords/new.html.erb", link
|
|
62
|
+
assert_file "app/views/#{scope}/confirmations/new.html.erb", link
|
|
63
|
+
assert_file "app/views/#{scope}/registrations/new.html.erb", link
|
|
64
|
+
assert_file "app/views/#{scope}/sessions/new.html.erb", link
|
|
65
|
+
assert_file "app/views/#{scope}/unlocks/new.html.erb", link
|
|
66
|
+
end
|
|
53
67
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'test_helper'
|
|
3
2
|
|
|
4
|
-
class AuthenticationSanityTest <
|
|
3
|
+
class AuthenticationSanityTest < ActionDispatch::IntegrationTest
|
|
5
4
|
test 'home should be accessible without sign in' do
|
|
6
5
|
visit '/'
|
|
7
6
|
assert_response :success
|
|
@@ -135,7 +134,7 @@ class AuthenticationSanityTest < ActionController::IntegrationTest
|
|
|
135
134
|
end
|
|
136
135
|
end
|
|
137
136
|
|
|
138
|
-
class AuthenticationRoutesRestrictions <
|
|
137
|
+
class AuthenticationRoutesRestrictions < ActionDispatch::IntegrationTest
|
|
139
138
|
test 'not signed in should not be able to access private route (authenticate denied)' do
|
|
140
139
|
get private_path
|
|
141
140
|
assert_redirected_to new_admin_session_path
|
|
@@ -192,7 +191,7 @@ class AuthenticationRoutesRestrictions < ActionController::IntegrationTest
|
|
|
192
191
|
get dashboard_path
|
|
193
192
|
|
|
194
193
|
assert_response :success
|
|
195
|
-
assert_template 'home/
|
|
194
|
+
assert_template 'home/admin_dashboard'
|
|
196
195
|
assert_contain 'Admin dashboard'
|
|
197
196
|
end
|
|
198
197
|
|
|
@@ -204,7 +203,7 @@ class AuthenticationRoutesRestrictions < ActionController::IntegrationTest
|
|
|
204
203
|
get dashboard_path
|
|
205
204
|
|
|
206
205
|
assert_response :success
|
|
207
|
-
assert_template 'home/
|
|
206
|
+
assert_template 'home/user_dashboard'
|
|
208
207
|
assert_contain 'User dashboard'
|
|
209
208
|
end
|
|
210
209
|
|
|
@@ -255,7 +254,7 @@ class AuthenticationRoutesRestrictions < ActionController::IntegrationTest
|
|
|
255
254
|
end
|
|
256
255
|
end
|
|
257
256
|
|
|
258
|
-
class AuthenticationRedirectTest <
|
|
257
|
+
class AuthenticationRedirectTest < ActionDispatch::IntegrationTest
|
|
259
258
|
test 'redirect from warden shows sign in or sign up message' do
|
|
260
259
|
get admins_path
|
|
261
260
|
|
|
@@ -318,7 +317,7 @@ class AuthenticationRedirectTest < ActionController::IntegrationTest
|
|
|
318
317
|
end
|
|
319
318
|
end
|
|
320
319
|
|
|
321
|
-
class AuthenticationSessionTest <
|
|
320
|
+
class AuthenticationSessionTest < ActionDispatch::IntegrationTest
|
|
322
321
|
test 'destroyed account is signed out' do
|
|
323
322
|
sign_in_as_user
|
|
324
323
|
get '/users'
|
|
@@ -334,22 +333,34 @@ class AuthenticationSessionTest < ActionController::IntegrationTest
|
|
|
334
333
|
assert_equal "Cart", @controller.user_session[:cart]
|
|
335
334
|
end
|
|
336
335
|
|
|
337
|
-
test 'does not explode when
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
336
|
+
test 'does not explode when class name is still stored in session' do
|
|
337
|
+
# In order to test that old sessions do not break with the new scoped
|
|
338
|
+
# deserialization, we need to serialize the session the old way. This is
|
|
339
|
+
# done by removing the newly used scoped serialization method
|
|
340
|
+
# (#user_serialize) and bringing back the old uncsoped #serialize method
|
|
341
|
+
# that includes the record's class name in the serialization.
|
|
341
342
|
begin
|
|
343
|
+
Warden::SessionSerializer.class_eval do
|
|
344
|
+
alias_method :original_serialize, :serialize
|
|
345
|
+
alias_method :original_user_serialize, :user_serialize
|
|
346
|
+
remove_method :user_serialize
|
|
347
|
+
|
|
348
|
+
def serialize(record)
|
|
349
|
+
klass = record.class
|
|
350
|
+
array = klass.serialize_into_session(record)
|
|
351
|
+
array.unshift(klass.name)
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
|
|
342
355
|
sign_in_as_user
|
|
343
356
|
assert warden.authenticated?(:user)
|
|
344
|
-
|
|
345
|
-
Object.send :remove_const, :User
|
|
346
|
-
ActiveSupport::Dependencies.autoload_paths.clear
|
|
347
|
-
|
|
348
|
-
visit "/users"
|
|
349
|
-
assert_not warden.authenticated?(:user)
|
|
350
357
|
ensure
|
|
351
|
-
|
|
352
|
-
|
|
358
|
+
Warden::SessionSerializer.class_eval do
|
|
359
|
+
alias_method :serialize, :original_serialize
|
|
360
|
+
remove_method :original_serialize
|
|
361
|
+
alias_method :user_serialize, :original_user_serialize
|
|
362
|
+
remove_method :original_user_serialize
|
|
363
|
+
end
|
|
353
364
|
end
|
|
354
365
|
end
|
|
355
366
|
|
|
@@ -365,7 +376,7 @@ class AuthenticationSessionTest < ActionController::IntegrationTest
|
|
|
365
376
|
end
|
|
366
377
|
end
|
|
367
378
|
|
|
368
|
-
class AuthenticationWithScopedViewsTest <
|
|
379
|
+
class AuthenticationWithScopedViewsTest < ActionDispatch::IntegrationTest
|
|
369
380
|
test 'renders the scoped view if turned on and view is available' do
|
|
370
381
|
swap Devise, :scoped_views => true do
|
|
371
382
|
assert_raise Webrat::NotFoundError do
|
|
@@ -406,7 +417,7 @@ class AuthenticationWithScopedViewsTest < ActionController::IntegrationTest
|
|
|
406
417
|
end
|
|
407
418
|
end
|
|
408
419
|
|
|
409
|
-
class AuthenticationOthersTest <
|
|
420
|
+
class AuthenticationOthersTest < ActionDispatch::IntegrationTest
|
|
410
421
|
test 'handles unverified requests gets rid of caches' do
|
|
411
422
|
swap UsersController, :allow_forgery_protection => true do
|
|
412
423
|
post exhibit_user_url(1)
|
|
@@ -457,7 +468,7 @@ class AuthenticationOthersTest < ActionController::IntegrationTest
|
|
|
457
468
|
assert_match '<?xml version="1.0" encoding="UTF-8"?>', response.body
|
|
458
469
|
assert_match /<user>.*<\/user>/m, response.body
|
|
459
470
|
assert_match '<email></email>', response.body
|
|
460
|
-
assert_match '<password nil="true"
|
|
471
|
+
assert_match '<password nil="true"', response.body
|
|
461
472
|
end
|
|
462
473
|
|
|
463
474
|
test 'sign in stub in json format' do
|
|
@@ -505,22 +516,53 @@ class AuthenticationOthersTest < ActionController::IntegrationTest
|
|
|
505
516
|
assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>)
|
|
506
517
|
end
|
|
507
518
|
|
|
508
|
-
test 'sign out with
|
|
519
|
+
test 'sign out with html redirects' do
|
|
520
|
+
sign_in_as_user
|
|
521
|
+
get destroy_user_session_path
|
|
522
|
+
assert_response :redirect
|
|
523
|
+
assert_current_url '/'
|
|
524
|
+
|
|
525
|
+
sign_in_as_user
|
|
526
|
+
get destroy_user_session_path(:format => 'html')
|
|
527
|
+
assert_response :redirect
|
|
528
|
+
assert_current_url '/'
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
test 'sign out with xml format returns no content' do
|
|
509
532
|
sign_in_as_user
|
|
510
533
|
get destroy_user_session_path(:format => 'xml')
|
|
511
534
|
assert_response :no_content
|
|
512
535
|
assert_not warden.authenticated?(:user)
|
|
513
536
|
end
|
|
514
537
|
|
|
515
|
-
test 'sign out with json format returns
|
|
538
|
+
test 'sign out with json format returns no content' do
|
|
516
539
|
sign_in_as_user
|
|
517
540
|
get destroy_user_session_path(:format => 'json')
|
|
518
541
|
assert_response :no_content
|
|
519
542
|
assert_not warden.authenticated?(:user)
|
|
520
543
|
end
|
|
544
|
+
|
|
545
|
+
test 'sign out with non-navigational format via XHR does not redirect' do
|
|
546
|
+
swap Devise, :navigational_formats => ['*/*', :html] do
|
|
547
|
+
sign_in_as_user
|
|
548
|
+
xml_http_request :get, destroy_user_session_path, {}, { "HTTP_ACCEPT" => "application/json,text/javascript,*/*" } # NOTE: Bug is triggered by combination of XHR and */*.
|
|
549
|
+
assert_response :no_content
|
|
550
|
+
assert_not warden.authenticated?(:user)
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
# Belt and braces ... Perhaps this test is not necessary?
|
|
555
|
+
test 'sign out with navigational format via XHR does redirect' do
|
|
556
|
+
swap Devise, :navigational_formats => ['*/*', :html] do
|
|
557
|
+
sign_in_as_user
|
|
558
|
+
xml_http_request :get, destroy_user_session_path, {}, { "HTTP_ACCEPT" => "text/html,*/*" }
|
|
559
|
+
assert_response :redirect
|
|
560
|
+
assert_not warden.authenticated?(:user)
|
|
561
|
+
end
|
|
562
|
+
end
|
|
521
563
|
end
|
|
522
564
|
|
|
523
|
-
class AuthenticationKeysTest <
|
|
565
|
+
class AuthenticationKeysTest < ActionDispatch::IntegrationTest
|
|
524
566
|
test 'missing authentication keys cause authentication to abort' do
|
|
525
567
|
swap Devise, :authentication_keys => [:subdomain] do
|
|
526
568
|
sign_in_as_user
|
|
@@ -537,7 +579,7 @@ class AuthenticationKeysTest < ActionController::IntegrationTest
|
|
|
537
579
|
end
|
|
538
580
|
end
|
|
539
581
|
|
|
540
|
-
class AuthenticationRequestKeysTest <
|
|
582
|
+
class AuthenticationRequestKeysTest < ActionDispatch::IntegrationTest
|
|
541
583
|
test 'request keys are used on authentication' do
|
|
542
584
|
host! 'foo.bar.baz'
|
|
543
585
|
|
|
@@ -578,7 +620,7 @@ class AuthenticationRequestKeysTest < ActionController::IntegrationTest
|
|
|
578
620
|
end
|
|
579
621
|
end
|
|
580
622
|
|
|
581
|
-
class AuthenticationSignOutViaTest <
|
|
623
|
+
class AuthenticationSignOutViaTest < ActionDispatch::IntegrationTest
|
|
582
624
|
def sign_in!(scope)
|
|
583
625
|
sign_in_as_admin(:visit => send("new_#{scope}_session_path"))
|
|
584
626
|
assert warden.authenticated?(scope)
|
|
@@ -632,3 +674,26 @@ class AuthenticationSignOutViaTest < ActionController::IntegrationTest
|
|
|
632
674
|
assert warden.authenticated?(:sign_out_via_delete_or_post)
|
|
633
675
|
end
|
|
634
676
|
end
|
|
677
|
+
|
|
678
|
+
class DoubleAuthenticationRedirectTest < ActionDispatch::IntegrationTest
|
|
679
|
+
test 'signed in as user redirects when visiting user sign in page' do
|
|
680
|
+
sign_in_as_user
|
|
681
|
+
get new_user_session_path(:format => :html)
|
|
682
|
+
assert_redirected_to '/'
|
|
683
|
+
end
|
|
684
|
+
|
|
685
|
+
test 'signed in as admin redirects when visiting admin sign in page' do
|
|
686
|
+
sign_in_as_admin
|
|
687
|
+
get new_admin_session_path(:format => :html)
|
|
688
|
+
assert_redirected_to '/admin_area/home'
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
test 'signed in as both user and admin redirects when visiting admin sign in page' do
|
|
692
|
+
sign_in_as_user
|
|
693
|
+
sign_in_as_admin
|
|
694
|
+
get new_user_session_path(:format => :html)
|
|
695
|
+
assert_redirected_to '/'
|
|
696
|
+
get new_admin_session_path(:format => :html)
|
|
697
|
+
assert_redirected_to '/admin_area/home'
|
|
698
|
+
end
|
|
699
|
+
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'test_helper'
|
|
3
2
|
|
|
4
|
-
class ConfirmationTest <
|
|
3
|
+
class ConfirmationTest < ActionDispatch::IntegrationTest
|
|
5
4
|
|
|
6
5
|
def visit_user_confirmation_with_token(confirmation_token)
|
|
7
6
|
visit user_confirmation_path(:confirmation_token => confirmation_token)
|
|
@@ -168,7 +167,7 @@ class ConfirmationTest < ActionController::IntegrationTest
|
|
|
168
167
|
end
|
|
169
168
|
|
|
170
169
|
test 'resent confirmation token with invalid E-Mail in XML format should return invalid response' do
|
|
171
|
-
|
|
170
|
+
create_user(:confirm => false)
|
|
172
171
|
post user_confirmation_path(:format => 'xml'), :user => { :email => 'invalid.test@test.com' }
|
|
173
172
|
assert_response :unprocessable_entity
|
|
174
173
|
assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<errors>)
|
|
@@ -182,7 +181,7 @@ class ConfirmationTest < ActionController::IntegrationTest
|
|
|
182
181
|
end
|
|
183
182
|
|
|
184
183
|
test 'confirm account with invalid confirmation token in XML format should return invalid response' do
|
|
185
|
-
|
|
184
|
+
create_user(:confirm => false)
|
|
186
185
|
get user_confirmation_path(:confirmation_token => 'invalid_confirmation', :format => 'xml')
|
|
187
186
|
assert_response :unprocessable_entity
|
|
188
187
|
assert response.body.include? %(<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<errors>)
|
|
@@ -227,7 +226,7 @@ class ConfirmationTest < ActionController::IntegrationTest
|
|
|
227
226
|
end
|
|
228
227
|
end
|
|
229
228
|
|
|
230
|
-
class ConfirmationOnChangeTest <
|
|
229
|
+
class ConfirmationOnChangeTest < ActionDispatch::IntegrationTest
|
|
231
230
|
def create_second_admin(options={})
|
|
232
231
|
@admin = nil
|
|
233
232
|
create_admin(options)
|
|
@@ -269,13 +268,14 @@ class ConfirmationOnChangeTest < ActionController::IntegrationTest
|
|
|
269
268
|
admin = create_admin
|
|
270
269
|
admin.update_attributes(:email => 'first_test@example.com')
|
|
271
270
|
assert_equal 'first_test@example.com', admin.unconfirmed_email
|
|
271
|
+
|
|
272
272
|
confirmation_token = admin.confirmation_token
|
|
273
273
|
admin.update_attributes(:email => 'second_test@example.com')
|
|
274
274
|
assert_equal 'second_test@example.com', admin.unconfirmed_email
|
|
275
275
|
|
|
276
276
|
visit_admin_confirmation_with_token(confirmation_token)
|
|
277
277
|
assert_have_selector '#error_explanation'
|
|
278
|
-
assert_contain
|
|
278
|
+
assert_contain(/Confirmation token(.*)invalid/)
|
|
279
279
|
|
|
280
280
|
visit_admin_confirmation_with_token(admin.confirmation_token)
|
|
281
281
|
assert_contain 'Your account was successfully confirmed.'
|
|
@@ -293,7 +293,7 @@ class ConfirmationOnChangeTest < ActionController::IntegrationTest
|
|
|
293
293
|
|
|
294
294
|
visit_admin_confirmation_with_token(admin.confirmation_token)
|
|
295
295
|
assert_have_selector '#error_explanation'
|
|
296
|
-
assert_contain
|
|
296
|
+
assert_contain(/Email.*already.*taken/)
|
|
297
297
|
assert admin.reload.pending_reconfirmation?
|
|
298
298
|
end
|
|
299
299
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'test_helper'
|
|
3
2
|
|
|
4
|
-
class DatabaseAuthenticationTest <
|
|
3
|
+
class DatabaseAuthenticationTest < ActionDispatch::IntegrationTest
|
|
5
4
|
test 'sign in with email of different case should succeed when email is in the list of case insensitive keys' do
|
|
6
5
|
create_user(:email => 'Foo@Bar.com')
|
|
7
6
|
|
|
@@ -54,12 +53,14 @@ class DatabaseAuthenticationTest < ActionController::IntegrationTest
|
|
|
54
53
|
end
|
|
55
54
|
|
|
56
55
|
test 'sign in with invalid email should return to sign in form with error message' do
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
store_translations :en, :devise => { :failure => { :admin => { :not_found_in_database => 'Invalid email address' } } } do
|
|
57
|
+
sign_in_as_admin do
|
|
58
|
+
fill_in 'email', :with => 'wrongemail@test.com'
|
|
59
|
+
end
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
assert_contain 'Invalid email address'
|
|
62
|
+
assert_not warden.authenticated?(:admin)
|
|
63
|
+
end
|
|
63
64
|
end
|
|
64
65
|
|
|
65
66
|
test 'sign in with invalid pasword should return to sign in form with error message' do
|