devise_token_auth 0.1.43 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +42 -895
- data/Rakefile +11 -4
- data/app/controllers/devise_token_auth/application_controller.rb +19 -8
- data/app/controllers/devise_token_auth/concerns/resource_finder.rb +26 -12
- data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +106 -85
- data/app/controllers/devise_token_auth/confirmations_controller.rb +73 -17
- data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +95 -51
- data/app/controllers/devise_token_auth/passwords_controller.rb +65 -57
- data/app/controllers/devise_token_auth/registrations_controller.rb +61 -61
- data/app/controllers/devise_token_auth/sessions_controller.rb +22 -18
- data/app/controllers/devise_token_auth/token_validations_controller.rb +5 -3
- data/app/controllers/devise_token_auth/unlocks_controller.rb +20 -16
- data/app/models/devise_token_auth/concerns/active_record_support.rb +14 -0
- data/app/models/devise_token_auth/concerns/confirmable_support.rb +28 -0
- data/app/models/devise_token_auth/concerns/mongoid_support.rb +19 -0
- data/app/models/devise_token_auth/concerns/tokens_serialization.rb +31 -0
- data/app/models/devise_token_auth/concerns/user.rb +92 -100
- data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +8 -3
- data/app/validators/{email_validator.rb → devise_token_auth_email_validator.rb} +5 -3
- data/app/views/devise_token_auth/omniauth_external_window.html.erb +1 -1
- data/config/locales/da-DK.yml +11 -9
- data/config/locales/de.yml +2 -0
- data/config/locales/en.yml +10 -0
- data/config/locales/es.yml +2 -0
- data/config/locales/fr.yml +2 -0
- data/config/locales/he.yml +52 -0
- data/config/locales/it.yml +2 -0
- data/config/locales/ja.yml +4 -2
- data/config/locales/ko.yml +51 -0
- data/config/locales/nl.yml +2 -0
- data/config/locales/pl.yml +6 -3
- data/config/locales/pt-BR.yml +2 -0
- data/config/locales/pt.yml +6 -3
- data/config/locales/ro.yml +2 -0
- data/config/locales/ru.yml +2 -0
- data/config/locales/sq.yml +2 -0
- data/config/locales/sv.yml +52 -0
- data/config/locales/uk.yml +2 -0
- data/config/locales/vi.yml +2 -0
- data/config/locales/zh-CN.yml +2 -0
- data/config/locales/zh-HK.yml +2 -0
- data/config/locales/zh-TW.yml +2 -0
- data/lib/devise_token_auth/blacklist.rb +6 -0
- data/lib/devise_token_auth/controllers/helpers.rb +21 -13
- data/lib/devise_token_auth/controllers/url_helpers.rb +2 -0
- data/lib/devise_token_auth/engine.rb +26 -14
- data/lib/devise_token_auth/errors.rb +8 -0
- data/lib/devise_token_auth/rails/routes.rb +37 -30
- data/lib/devise_token_auth/token_factory.rb +126 -0
- data/lib/devise_token_auth/url.rb +11 -4
- data/lib/devise_token_auth/version.rb +3 -1
- data/lib/devise_token_auth.rb +11 -5
- data/lib/generators/devise_token_auth/USAGE +2 -2
- data/lib/generators/devise_token_auth/install_generator.rb +36 -105
- data/lib/generators/devise_token_auth/install_generator_helpers.rb +98 -0
- data/lib/generators/devise_token_auth/install_mongoid_generator.rb +46 -0
- data/lib/generators/devise_token_auth/install_views_generator.rb +7 -5
- data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +12 -0
- data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +8 -14
- data/lib/generators/devise_token_auth/templates/user.rb.erb +9 -0
- data/lib/generators/devise_token_auth/templates/user_mongoid.rb.erb +56 -0
- data/lib/tasks/devise_token_auth_tasks.rake +2 -0
- data/test/controllers/custom/custom_confirmations_controller_test.rb +5 -1
- data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +4 -0
- data/test/controllers/custom/custom_passwords_controller_test.rb +6 -2
- data/test/controllers/custom/custom_registrations_controller_test.rb +17 -8
- data/test/controllers/custom/custom_sessions_controller_test.rb +7 -5
- data/test/controllers/custom/custom_token_validations_controller_test.rb +5 -3
- data/test/controllers/demo_group_controller_test.rb +4 -6
- data/test/controllers/demo_mang_controller_test.rb +3 -3
- data/test/controllers/demo_user_controller_test.rb +53 -25
- data/test/controllers/devise_token_auth/confirmations_controller_test.rb +159 -25
- data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +117 -47
- data/test/controllers/devise_token_auth/passwords_controller_test.rb +309 -126
- data/test/controllers/devise_token_auth/registrations_controller_test.rb +65 -23
- data/test/controllers/devise_token_auth/sessions_controller_test.rb +93 -61
- data/test/controllers/devise_token_auth/token_validations_controller_test.rb +18 -6
- data/test/controllers/devise_token_auth/unlocks_controller_test.rb +24 -5
- data/test/controllers/overrides/confirmations_controller_test.rb +6 -2
- data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +5 -1
- data/test/controllers/overrides/passwords_controller_test.rb +27 -29
- data/test/controllers/overrides/registrations_controller_test.rb +33 -27
- data/test/controllers/overrides/sessions_controller_test.rb +6 -4
- data/test/controllers/overrides/token_validations_controller_test.rb +5 -3
- data/test/dummy/app/active_record/confirmable_user.rb +11 -0
- data/test/dummy/app/{models → active_record}/lockable_user.rb +2 -0
- data/test/dummy/app/{models → active_record}/mang.rb +2 -0
- data/test/dummy/app/{models → active_record}/only_email_user.rb +2 -0
- data/test/dummy/app/{models → active_record}/scoped_user.rb +4 -2
- data/test/dummy/app/{models → active_record}/unconfirmable_user.rb +3 -2
- data/test/dummy/app/active_record/unregisterable_user.rb +9 -0
- data/test/dummy/app/active_record/user.rb +6 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/auth_origin_controller.rb +2 -0
- data/test/dummy/app/controllers/custom/confirmations_controller.rb +2 -2
- data/test/dummy/app/controllers/custom/omniauth_callbacks_controller.rb +2 -0
- data/test/dummy/app/controllers/custom/passwords_controller.rb +3 -4
- data/test/dummy/app/controllers/custom/registrations_controller.rb +3 -3
- data/test/dummy/app/controllers/custom/sessions_controller.rb +3 -3
- data/test/dummy/app/controllers/custom/token_validations_controller.rb +3 -3
- data/test/dummy/app/controllers/demo_group_controller.rb +2 -0
- data/test/dummy/app/controllers/demo_mang_controller.rb +2 -0
- data/test/dummy/app/controllers/demo_user_controller.rb +2 -0
- data/test/dummy/app/controllers/overrides/confirmations_controller.rb +8 -6
- data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +5 -3
- data/test/dummy/app/controllers/overrides/passwords_controller.rb +10 -8
- data/test/dummy/app/controllers/overrides/registrations_controller.rb +5 -3
- data/test/dummy/app/controllers/overrides/sessions_controller.rb +12 -12
- data/test/dummy/app/controllers/overrides/token_validations_controller.rb +5 -5
- data/test/dummy/app/helpers/application_helper.rb +1029 -1036
- data/test/dummy/app/models/{user.rb → concerns/favorite_color.rb} +8 -7
- data/test/dummy/app/mongoid/confirmable_user.rb +52 -0
- data/test/dummy/app/mongoid/lockable_user.rb +38 -0
- data/test/dummy/app/mongoid/mang.rb +46 -0
- data/test/dummy/app/mongoid/only_email_user.rb +33 -0
- data/test/dummy/app/mongoid/scoped_user.rb +50 -0
- data/test/dummy/app/mongoid/unconfirmable_user.rb +44 -0
- data/test/dummy/app/mongoid/unregisterable_user.rb +47 -0
- data/test/dummy/app/mongoid/user.rb +49 -0
- data/test/dummy/app/views/layouts/application.html.erb +0 -2
- data/test/dummy/config/application.rb +26 -3
- data/test/dummy/config/boot.rb +8 -2
- data/test/dummy/config/environment.rb +3 -1
- data/test/dummy/config/environments/development.rb +5 -13
- data/test/dummy/config/environments/production.rb +2 -16
- data/test/dummy/config/environments/test.rb +3 -1
- data/test/dummy/config/initializers/backtrace_silencers.rb +2 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -1
- data/test/dummy/config/initializers/devise.rb +287 -0
- data/test/dummy/config/initializers/devise_token_auth.rb +37 -4
- data/test/dummy/config/initializers/figaro.rb +3 -1
- data/test/dummy/config/initializers/filter_parameter_logging.rb +2 -0
- data/test/dummy/config/initializers/inflections.rb +2 -0
- data/test/dummy/config/initializers/mime_types.rb +2 -0
- data/test/dummy/config/initializers/omniauth.rb +5 -2
- data/test/dummy/config/initializers/session_store.rb +2 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +2 -0
- data/test/dummy/config/routes.rb +14 -29
- data/test/dummy/config/spring.rb +2 -0
- data/test/dummy/config.ru +5 -3
- data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +9 -14
- data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +8 -13
- data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +2 -0
- data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +2 -0
- data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +6 -11
- data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +8 -13
- data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +8 -13
- data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +8 -13
- data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +8 -13
- data/test/dummy/{tmp/generators/db/migrate/20171014052631_devise_token_auth_create_users.rb → db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb} +8 -14
- data/test/dummy/db/schema.rb +11 -71
- data/test/dummy/lib/migration_database_helper.rb +15 -1
- data/test/dummy/tmp/generators/app/controllers/application_controller.rb +6 -0
- data/test/dummy/tmp/generators/app/models/azpire/v1/human_resource/user.rb +56 -0
- data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +12 -0
- data/test/factories/users.rb +41 -0
- data/test/lib/devise_token_auth/blacklist_test.rb +19 -0
- data/test/lib/devise_token_auth/rails/custom_routes_test.rb +29 -0
- data/test/lib/devise_token_auth/rails/routes_test.rb +87 -0
- data/test/lib/devise_token_auth/token_factory_test.rb +191 -0
- data/test/lib/devise_token_auth/url_test.rb +9 -7
- data/test/lib/generators/devise_token_auth/install_generator_test.rb +67 -37
- data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +222 -0
- data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +3 -1
- data/test/models/concerns/mongoid_support_test.rb +31 -0
- data/test/models/concerns/tokens_serialization_test.rb +104 -0
- data/test/models/confirmable_user_test.rb +35 -0
- data/test/models/only_email_user_test.rb +2 -8
- data/test/models/user_test.rb +18 -79
- data/test/support/controllers/routes.rb +43 -0
- data/test/test_helper.rb +83 -26
- metadata +153 -44
- data/config/initializers/devise.rb +0 -196
- data/lib/generators/devise_token_auth/templates/user.rb +0 -7
- data/test/dummy/app/models/evil_user.rb +0 -3
- data/test/dummy/app/models/nice_user.rb +0 -7
- data/test/dummy/app/models/unregisterable_user.rb +0 -7
- data/test/dummy/config/initializers/assets.rb +0 -8
- data/test/dummy/db/migrate/20140928231203_devise_token_auth_create_evil_users.rb +0 -64
- data/test/dummy/db/migrate/20150409095712_devise_token_auth_create_nice_users.rb +0 -61
- data/test/dummy/tmp/generators/app/models/user.rb +0 -11
- data/test/integration/navigation_test.rb +0 -10
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -8,6 +10,17 @@ require 'test_helper'
|
|
8
10
|
|
9
11
|
class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::IntegrationTest
|
10
12
|
describe DeviseTokenAuth::RegistrationsController do
|
13
|
+
|
14
|
+
def mock_registration_params
|
15
|
+
{
|
16
|
+
email: Faker::Internet.email,
|
17
|
+
password: 'secret123',
|
18
|
+
password_confirmation: 'secret123',
|
19
|
+
confirm_success_url: Faker::Internet.url,
|
20
|
+
unpermitted_param: '(x_x)'
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
11
24
|
describe 'Validate non-empty body' do
|
12
25
|
before do
|
13
26
|
# need to post empty data
|
@@ -39,13 +52,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
39
52
|
@mails_sent = ActionMailer::Base.deliveries.count
|
40
53
|
|
41
54
|
post '/auth',
|
42
|
-
params:
|
43
|
-
email: Faker::Internet.email,
|
44
|
-
password: 'secret123',
|
45
|
-
password_confirmation: 'secret123',
|
46
|
-
confirm_success_url: Faker::Internet.url,
|
47
|
-
unpermitted_param: '(x_x)'
|
48
|
-
}
|
55
|
+
params: mock_registration_params
|
49
56
|
|
50
57
|
@resource = assigns(:resource)
|
51
58
|
@data = JSON.parse(response.body)
|
@@ -81,6 +88,41 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
81
88
|
end
|
82
89
|
end
|
83
90
|
|
91
|
+
describe 'using allow_unconfirmed_access_for' do
|
92
|
+
before do
|
93
|
+
@original_duration = Devise.allow_unconfirmed_access_for
|
94
|
+
Devise.allow_unconfirmed_access_for = nil
|
95
|
+
end
|
96
|
+
|
97
|
+
test 'auth headers were returned in response' do
|
98
|
+
post '/auth', params: mock_registration_params
|
99
|
+
assert response.headers['access-token']
|
100
|
+
assert response.headers['token-type']
|
101
|
+
assert response.headers['client']
|
102
|
+
assert response.headers['expiry']
|
103
|
+
assert response.headers['uid']
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'using auth cookie' do
|
107
|
+
before do
|
108
|
+
DeviseTokenAuth.cookie_enabled = true
|
109
|
+
end
|
110
|
+
|
111
|
+
test 'auth cookie was returned in response' do
|
112
|
+
post '/auth', params: mock_registration_params
|
113
|
+
assert response.cookies[DeviseTokenAuth.cookie_name]
|
114
|
+
end
|
115
|
+
|
116
|
+
after do
|
117
|
+
DeviseTokenAuth.cookie_enabled = false
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
after do
|
122
|
+
Devise.allow_unconfirmed_access_for = @original_duration
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
84
126
|
describe 'using "+" in email' do
|
85
127
|
test 'can use + sign in email addresses' do
|
86
128
|
@plus_email = 'ak+testing@gmail.com'
|
@@ -177,7 +219,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
177
219
|
@resource = assigns(:resource)
|
178
220
|
@data = JSON.parse(response.body)
|
179
221
|
@mail = ActionMailer::Base.deliveries.last
|
180
|
-
@sent_redirect_url =
|
222
|
+
@sent_redirect_url = CGI.unescape(@mail.body.match(/redirect_url=([^&]*)(&|\")/)[1])
|
181
223
|
end
|
182
224
|
|
183
225
|
teardown do
|
@@ -303,7 +345,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
303
345
|
end
|
304
346
|
|
305
347
|
test 'user should not have been created' do
|
306
|
-
|
348
|
+
refute @resource.persisted?
|
307
349
|
end
|
308
350
|
|
309
351
|
test 'error should be returned in the response' do
|
@@ -331,7 +373,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
331
373
|
end
|
332
374
|
|
333
375
|
test 'user should not have been created' do
|
334
|
-
|
376
|
+
refute @resource.persisted?
|
335
377
|
end
|
336
378
|
|
337
379
|
test 'error should be returned in the response' do
|
@@ -360,7 +402,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
360
402
|
end
|
361
403
|
|
362
404
|
test 'user should have been created' do
|
363
|
-
|
405
|
+
refute @resource.persisted?
|
364
406
|
end
|
365
407
|
|
366
408
|
test 'error should be returned in the response' do
|
@@ -374,7 +416,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
374
416
|
|
375
417
|
describe 'Existing users' do
|
376
418
|
before do
|
377
|
-
@existing_user =
|
419
|
+
@existing_user = create(:user, :confirmed)
|
378
420
|
|
379
421
|
post '/auth',
|
380
422
|
params: { email: @existing_user.email,
|
@@ -391,7 +433,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
391
433
|
end
|
392
434
|
|
393
435
|
test 'user should have been created' do
|
394
|
-
|
436
|
+
refute @resource.persisted?
|
395
437
|
end
|
396
438
|
|
397
439
|
test 'error should be returned in the response' do
|
@@ -402,7 +444,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
402
444
|
describe 'Destroy user account' do
|
403
445
|
describe 'success' do
|
404
446
|
before do
|
405
|
-
@existing_user =
|
447
|
+
@existing_user = create(:user, :confirmed)
|
406
448
|
@auth_headers = @existing_user.create_new_auth_token
|
407
449
|
@client_id = @auth_headers['client']
|
408
450
|
|
@@ -449,7 +491,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
449
491
|
describe 'Update user account' do
|
450
492
|
describe 'existing user' do
|
451
493
|
before do
|
452
|
-
@existing_user =
|
494
|
+
@existing_user = create(:user, :confirmed)
|
453
495
|
@auth_headers = @existing_user.create_new_auth_token
|
454
496
|
@client_id = @auth_headers['client']
|
455
497
|
|
@@ -463,7 +505,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
463
505
|
# test valid update param
|
464
506
|
@resource_class = User
|
465
507
|
@new_operating_thetan = 1_000_000
|
466
|
-
@email =
|
508
|
+
@email = Faker::Internet.safe_email
|
467
509
|
@request_params = {
|
468
510
|
operating_thetan: @new_operating_thetan,
|
469
511
|
email: @email
|
@@ -497,13 +539,13 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
497
539
|
end
|
498
540
|
|
499
541
|
test 'Supply current password' do
|
500
|
-
@request_params[:current_password] =
|
501
|
-
@request_params[:email] =
|
542
|
+
@request_params[:current_password] = @existing_user.password
|
543
|
+
@request_params[:email] = @existing_user.email
|
502
544
|
|
503
545
|
put '/auth', params: @request_params, headers: @auth_headers
|
504
546
|
@data = JSON.parse(response.body)
|
505
547
|
@existing_user.reload
|
506
|
-
assert_equal @existing_user.email,
|
548
|
+
assert_equal @existing_user.email, @request_params[:email]
|
507
549
|
end
|
508
550
|
end
|
509
551
|
|
@@ -570,7 +612,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
570
612
|
# test valid update param
|
571
613
|
@resource_class = User
|
572
614
|
@new_operating_thetan = 1_000_000
|
573
|
-
@email =
|
615
|
+
@email = Faker::Internet.safe_email
|
574
616
|
@request_params = {
|
575
617
|
operating_thetan: @new_operating_thetan,
|
576
618
|
email: @email
|
@@ -621,7 +663,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
621
663
|
before do
|
622
664
|
DeviseTokenAuth.check_current_password_before_update = :password
|
623
665
|
@new_operating_thetan = 1_000_000
|
624
|
-
@email =
|
666
|
+
@email = Faker::Internet.safe_email
|
625
667
|
end
|
626
668
|
|
627
669
|
after do
|
@@ -666,7 +708,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
666
708
|
|
667
709
|
describe 'invalid user' do
|
668
710
|
before do
|
669
|
-
@existing_user =
|
711
|
+
@existing_user = create(:user, :confirmed)
|
670
712
|
@auth_headers = @existing_user.create_new_auth_token
|
671
713
|
@client_id = @auth_headers['client']
|
672
714
|
|
@@ -703,7 +745,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
|
|
703
745
|
|
704
746
|
describe 'Ouath user has existing email' do
|
705
747
|
before do
|
706
|
-
@existing_user =
|
748
|
+
@existing_user = create(:user, :facebook, :confirmed)
|
707
749
|
|
708
750
|
post '/auth',
|
709
751
|
params: { email: @existing_user.email,
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -10,33 +12,20 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
10
12
|
describe DeviseTokenAuth::SessionsController do
|
11
13
|
describe 'Confirmed user' do
|
12
14
|
before do
|
13
|
-
@existing_user =
|
14
|
-
@existing_user.skip_confirmation!
|
15
|
-
@existing_user.save!
|
15
|
+
@existing_user = create(:user, :with_nickname, :confirmed)
|
16
16
|
end
|
17
17
|
|
18
18
|
describe 'success' do
|
19
19
|
before do
|
20
|
-
@
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
@old_last_sign_in_ip = @existing_user.last_sign_in_ip
|
20
|
+
@user_session_params = {
|
21
|
+
email: @existing_user.email,
|
22
|
+
password: @existing_user.password
|
23
|
+
}
|
25
24
|
|
26
|
-
post :create,
|
27
|
-
params: {
|
28
|
-
email: @existing_user.email,
|
29
|
-
password: 'secret123'
|
30
|
-
}
|
25
|
+
post :create, params: @user_session_params
|
31
26
|
|
32
27
|
@resource = assigns(:resource)
|
33
28
|
@data = JSON.parse(response.body)
|
34
|
-
|
35
|
-
@new_sign_in_count = @resource.sign_in_count
|
36
|
-
@new_current_sign_in_at = @resource.current_sign_in_at
|
37
|
-
@new_last_sign_in_at = @resource.last_sign_in_at
|
38
|
-
@new_sign_in_ip = @resource.current_sign_in_ip
|
39
|
-
@new_last_sign_in_ip = @resource.last_sign_in_ip
|
40
29
|
end
|
41
30
|
|
42
31
|
test 'request should succeed' do
|
@@ -47,29 +36,63 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
47
36
|
assert_equal @existing_user.email, @data['data']['email']
|
48
37
|
end
|
49
38
|
|
50
|
-
describe '
|
51
|
-
|
52
|
-
|
39
|
+
describe 'using auth cookie' do
|
40
|
+
before do
|
41
|
+
DeviseTokenAuth.cookie_enabled = true
|
53
42
|
end
|
54
43
|
|
55
|
-
test '
|
56
|
-
|
57
|
-
assert
|
44
|
+
test 'request should return auth cookie' do
|
45
|
+
post :create, params: @user_session_params
|
46
|
+
assert response.cookies[DeviseTokenAuth.cookie_name]
|
58
47
|
end
|
59
48
|
|
60
|
-
|
61
|
-
|
62
|
-
assert @new_last_sign_in_at
|
49
|
+
after do
|
50
|
+
DeviseTokenAuth.cookie_enabled = false
|
63
51
|
end
|
52
|
+
end
|
64
53
|
|
65
|
-
|
66
|
-
|
67
|
-
|
54
|
+
describe "with multiple clients and headers don't change in each request" do
|
55
|
+
before do
|
56
|
+
# Set the max_number_of_devices to a lower number
|
57
|
+
# to expedite tests! (Default is 10)
|
58
|
+
DeviseTokenAuth.max_number_of_devices = 2
|
59
|
+
DeviseTokenAuth.change_headers_on_each_request = false
|
68
60
|
end
|
69
61
|
|
70
|
-
test '
|
71
|
-
|
72
|
-
|
62
|
+
test 'should limit the maximum number of concurrent devices' do
|
63
|
+
# increment the number of devices until the maximum is exceeded
|
64
|
+
1.upto(DeviseTokenAuth.max_number_of_devices + 1).each do |n|
|
65
|
+
initial_tokens = @existing_user.reload.tokens
|
66
|
+
|
67
|
+
assert_equal(
|
68
|
+
[n, DeviseTokenAuth.max_number_of_devices].min,
|
69
|
+
@existing_user.reload.tokens.length
|
70
|
+
)
|
71
|
+
|
72
|
+
# Already have the max number of devices
|
73
|
+
post :create, params: @user_session_params
|
74
|
+
|
75
|
+
# A session for a new device maintains the max number of concurrent devices
|
76
|
+
refute_equal initial_tokens, @existing_user.reload.tokens
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
test 'should drop old tokens when max number of devices is exceeded' do
|
81
|
+
1.upto(DeviseTokenAuth.max_number_of_devices).each do |n|
|
82
|
+
post :create, params: @user_session_params
|
83
|
+
end
|
84
|
+
|
85
|
+
oldest_token, _ = @existing_user.reload.tokens \
|
86
|
+
.min_by { |cid, v| v[:expiry] || v['expiry'] }
|
87
|
+
|
88
|
+
post :create, params: @user_session_params
|
89
|
+
|
90
|
+
assert_not_includes @existing_user.reload.tokens.keys, oldest_token
|
91
|
+
end
|
92
|
+
|
93
|
+
after do
|
94
|
+
DeviseTokenAuth.max_number_of_devices = 10
|
95
|
+
DeviseTokenAuth.change_headers_on_each_request = true
|
73
96
|
end
|
74
97
|
end
|
75
98
|
end
|
@@ -78,7 +101,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
78
101
|
before do
|
79
102
|
get :new,
|
80
103
|
params: { nickname: @existing_user.nickname,
|
81
|
-
password:
|
104
|
+
password: @existing_user.password }
|
82
105
|
@data = JSON.parse(response.body)
|
83
106
|
end
|
84
107
|
|
@@ -95,7 +118,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
95
118
|
before do
|
96
119
|
request.headers.merge!(
|
97
120
|
'email' => @existing_user.email,
|
98
|
-
'password' =>
|
121
|
+
'password' => @existing_user.password
|
99
122
|
)
|
100
123
|
|
101
124
|
head :create
|
@@ -111,7 +134,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
111
134
|
before do
|
112
135
|
post :create,
|
113
136
|
params: { nickname: @existing_user.nickname,
|
114
|
-
password:
|
137
|
+
password: @existing_user.password }
|
115
138
|
@data = JSON.parse(response.body)
|
116
139
|
end
|
117
140
|
|
@@ -147,6 +170,24 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
147
170
|
test 'session was destroyed' do
|
148
171
|
assert_equal true, @controller.reset_session_called
|
149
172
|
end
|
173
|
+
|
174
|
+
describe 'using auth cookie' do
|
175
|
+
before do
|
176
|
+
DeviseTokenAuth.cookie_enabled = true
|
177
|
+
@auth_token = @existing_user.create_new_auth_token
|
178
|
+
@controller.send(:cookies)[DeviseTokenAuth.cookie_name] = { value: @auth_token.to_json }
|
179
|
+
end
|
180
|
+
|
181
|
+
test 'auth cookie was destroyed' do
|
182
|
+
assert_equal @auth_token.to_json, @controller.send(:cookies)[DeviseTokenAuth.cookie_name] # sanity check
|
183
|
+
delete :destroy, format: :json
|
184
|
+
assert_nil @controller.send(:cookies)[DeviseTokenAuth.cookie_name]
|
185
|
+
end
|
186
|
+
|
187
|
+
after do
|
188
|
+
DeviseTokenAuth.cookie_enabled = false
|
189
|
+
end
|
190
|
+
end
|
150
191
|
end
|
151
192
|
|
152
193
|
describe 'unauthed user sign out' do
|
@@ -223,7 +264,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
223
264
|
@resource_class = User
|
224
265
|
@request_params = {
|
225
266
|
email: @existing_user.email.upcase,
|
226
|
-
password:
|
267
|
+
password: @existing_user.password
|
227
268
|
}
|
228
269
|
end
|
229
270
|
|
@@ -246,7 +287,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
246
287
|
@request_params = {
|
247
288
|
# adding whitespace before and after email
|
248
289
|
email: " #{@existing_user.email} ",
|
249
|
-
password:
|
290
|
+
password: @existing_user.password
|
250
291
|
}
|
251
292
|
end
|
252
293
|
|
@@ -266,9 +307,9 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
266
307
|
|
267
308
|
describe 'Unconfirmed user' do
|
268
309
|
before do
|
269
|
-
@unconfirmed_user =
|
310
|
+
@unconfirmed_user = create(:user)
|
270
311
|
post :create, params: { email: @unconfirmed_user.email,
|
271
|
-
password:
|
312
|
+
password: @unconfirmed_user.password }
|
272
313
|
@resource = assigns(:resource)
|
273
314
|
@data = JSON.parse(response.body)
|
274
315
|
end
|
@@ -289,10 +330,10 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
289
330
|
before do
|
290
331
|
@original_duration = Devise.allow_unconfirmed_access_for
|
291
332
|
Devise.allow_unconfirmed_access_for = 3.days
|
292
|
-
@recent_unconfirmed_user =
|
333
|
+
@recent_unconfirmed_user = create(:user)
|
293
334
|
post :create,
|
294
335
|
params: { email: @recent_unconfirmed_user.email,
|
295
|
-
password:
|
336
|
+
password: @recent_unconfirmed_user.password }
|
296
337
|
@resource = assigns(:resource)
|
297
338
|
@data = JSON.parse(response.body)
|
298
339
|
end
|
@@ -312,20 +353,14 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
312
353
|
|
313
354
|
describe 'Unconfirmed user with expired unconfirmed access' do
|
314
355
|
before do
|
315
|
-
@
|
316
|
-
Devise.allow_unconfirmed_access_for = 3.days
|
317
|
-
@unconfirmed_user = users(:unconfirmed_email_user)
|
356
|
+
@unconfirmed_user = create(:user, :unconfirmed)
|
318
357
|
post :create,
|
319
358
|
params: { email: @unconfirmed_user.email,
|
320
|
-
password:
|
359
|
+
password: @unconfirmed_user.password }
|
321
360
|
@resource = assigns(:resource)
|
322
361
|
@data = JSON.parse(response.body)
|
323
362
|
end
|
324
363
|
|
325
|
-
after do
|
326
|
-
Devise.allow_unconfirmed_access_for = @original_duration
|
327
|
-
end
|
328
|
-
|
329
364
|
test 'request should fail' do
|
330
365
|
assert_equal 401, response.status
|
331
366
|
end
|
@@ -363,13 +398,11 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
363
398
|
end
|
364
399
|
|
365
400
|
before do
|
366
|
-
@existing_user =
|
367
|
-
@existing_user.skip_confirmation!
|
368
|
-
@existing_user.save!
|
401
|
+
@existing_user = create(:mang_user, :confirmed)
|
369
402
|
|
370
403
|
post :create,
|
371
404
|
params: { email: @existing_user.email,
|
372
|
-
password:
|
405
|
+
password: @existing_user.password }
|
373
406
|
|
374
407
|
@resource = assigns(:resource)
|
375
408
|
@data = JSON.parse(response.body)
|
@@ -394,12 +427,11 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
394
427
|
end
|
395
428
|
|
396
429
|
before do
|
397
|
-
@existing_user =
|
398
|
-
@existing_user.save!
|
430
|
+
@existing_user = create(:only_email_user)
|
399
431
|
|
400
432
|
post :create,
|
401
433
|
params: { email: @existing_user.email,
|
402
|
-
password:
|
434
|
+
password: @existing_user.password }
|
403
435
|
|
404
436
|
@resource = assigns(:resource)
|
405
437
|
@data = JSON.parse(response.body)
|
@@ -437,10 +469,10 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
437
469
|
|
438
470
|
describe 'locked user' do
|
439
471
|
before do
|
440
|
-
@locked_user =
|
472
|
+
@locked_user = create(:lockable_user, :locked)
|
441
473
|
post :create,
|
442
474
|
params: { email: @locked_user.email,
|
443
|
-
password:
|
475
|
+
password: @locked_user.password }
|
444
476
|
@data = JSON.parse(response.body)
|
445
477
|
end
|
446
478
|
|
@@ -456,7 +488,7 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
|
|
456
488
|
|
457
489
|
describe 'unlocked user with bad password' do
|
458
490
|
before do
|
459
|
-
@unlocked_user =
|
491
|
+
@unlocked_user = create(:lockable_user)
|
460
492
|
post :create,
|
461
493
|
params: { email: @unlocked_user.email,
|
462
494
|
password: 'bad-password' }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -9,9 +11,7 @@ require 'test_helper'
|
|
9
11
|
class DeviseTokenAuth::TokenValidationsControllerTest < ActionDispatch::IntegrationTest
|
10
12
|
describe DeviseTokenAuth::TokenValidationsController do
|
11
13
|
before do
|
12
|
-
@resource =
|
13
|
-
@resource.skip_confirmation!
|
14
|
-
@resource.save!
|
14
|
+
@resource = create(:user, :confirmed)
|
15
15
|
|
16
16
|
@auth_headers = @resource.create_new_auth_token
|
17
17
|
|
@@ -45,6 +45,20 @@ class DeviseTokenAuth::TokenValidationsControllerTest < ActionDispatch::Integrat
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
describe 'with invalid user' do
|
49
|
+
before do
|
50
|
+
@resource.update_column(:email, 'invalid') if DEVISE_TOKEN_AUTH_ORM == :active_record
|
51
|
+
@resource.set(email: 'invalid') if DEVISE_TOKEN_AUTH_ORM == :mongoid
|
52
|
+
end
|
53
|
+
|
54
|
+
test 'request should raise invalid model error' do
|
55
|
+
error = assert_raises DeviseTokenAuth::Errors::InvalidModel do
|
56
|
+
get '/auth/validate_token', params: {}, headers: @auth_headers
|
57
|
+
end
|
58
|
+
assert_equal(error.message, "Cannot set auth token in invalid model. Errors: [\"Email is not an email\"]")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
48
62
|
describe 'failure' do
|
49
63
|
before do
|
50
64
|
get '/api/v1/auth/validate_token',
|
@@ -66,9 +80,7 @@ class DeviseTokenAuth::TokenValidationsControllerTest < ActionDispatch::Integrat
|
|
66
80
|
|
67
81
|
describe 'using namespaces with unused resource' do
|
68
82
|
before do
|
69
|
-
@resource =
|
70
|
-
@resource.skip_confirmation!
|
71
|
-
@resource.save!
|
83
|
+
@resource = create(:scoped_user, :confirmed)
|
72
84
|
|
73
85
|
@auth_headers = @resource.create_new_auth_token
|
74
86
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -33,7 +35,7 @@ class DeviseTokenAuth::UnlocksControllerTest < ActionController::TestCase
|
|
33
35
|
|
34
36
|
describe 'Unlocking user' do
|
35
37
|
before do
|
36
|
-
@resource =
|
38
|
+
@resource = create(:lockable_user)
|
37
39
|
end
|
38
40
|
|
39
41
|
describe 'request unlock without email' do
|
@@ -55,7 +57,7 @@ class DeviseTokenAuth::UnlocksControllerTest < ActionController::TestCase
|
|
55
57
|
end
|
56
58
|
|
57
59
|
describe 'request unlock' do
|
58
|
-
describe '
|
60
|
+
describe 'without paranoid mode' do
|
59
61
|
before do
|
60
62
|
post :create, params: { email: 'chester@cheet.ah' }
|
61
63
|
@data = JSON.parse(response.body)
|
@@ -66,9 +68,26 @@ class DeviseTokenAuth::UnlocksControllerTest < ActionController::TestCase
|
|
66
68
|
|
67
69
|
test 'errors should be returned' do
|
68
70
|
assert @data['errors']
|
69
|
-
assert_equal @data['errors'],
|
70
|
-
|
71
|
-
|
71
|
+
assert_equal @data['errors'], [I18n.t('devise_token_auth.unlocks.user_not_found',
|
72
|
+
email: 'chester@cheet.ah')]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe 'with paranoid mode' do
|
77
|
+
before do
|
78
|
+
swap Devise, paranoid: true do
|
79
|
+
post :create, params: { email: 'chester@cheet.ah' }
|
80
|
+
@data = JSON.parse(response.body)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
test 'unknown user should return 404' do
|
85
|
+
assert_equal 404, response.status
|
86
|
+
end
|
87
|
+
|
88
|
+
test 'errors should be returned' do
|
89
|
+
assert @data['errors']
|
90
|
+
assert_equal @data['errors'], [I18n.t('devise_token_auth.unlocks.sended_paranoid')]
|
72
91
|
end
|
73
92
|
end
|
74
93
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -7,10 +9,12 @@ require 'test_helper'
|
|
7
9
|
# was the appropriate message delivered in the json payload?
|
8
10
|
|
9
11
|
class Overrides::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
|
12
|
+
include OverridesControllersRoutes
|
13
|
+
|
10
14
|
describe Overrides::ConfirmationsController do
|
11
15
|
before do
|
12
16
|
@redirect_url = Faker::Internet.url
|
13
|
-
@new_user =
|
17
|
+
@new_user = create(:user)
|
14
18
|
|
15
19
|
# generate + send email
|
16
20
|
@new_user.send_confirmation_instructions(redirect_url: @redirect_url)
|
@@ -34,7 +38,7 @@ class Overrides::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
|
|
34
38
|
override_proof_str = '(^^,)'
|
35
39
|
|
36
40
|
# ensure present in redirect URL
|
37
|
-
override_proof_param =
|
41
|
+
override_proof_param = CGI.unescape(response.headers['Location']
|
38
42
|
.match(/override_proof=([^&]*)&/)[1])
|
39
43
|
|
40
44
|
assert_equal override_proof_str, override_proof_param
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
# was the web request successful?
|
@@ -7,8 +9,10 @@ require 'test_helper'
|
|
7
9
|
# was the appropriate message delivered in the json payload?
|
8
10
|
|
9
11
|
class Overrides::OmniauthCallbacksControllerTest < ActionDispatch::IntegrationTest
|
12
|
+
include OverridesControllersRoutes
|
13
|
+
|
10
14
|
describe Overrides::OmniauthCallbacksController do
|
11
|
-
|
15
|
+
before do
|
12
16
|
OmniAuth.config.test_mode = true
|
13
17
|
OmniAuth.config.mock_auth[:facebook] = OmniAuth::AuthHash.new(
|
14
18
|
provider: 'facebook',
|