@@ -65,11 +65,8 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
65
65
66
66
describe 'for edit' do
67
67
before do
68
- @auth_headers = @resource . create_new_auth_token
69
- @new_password = Faker ::Internet . password
70
-
71
- put :edit ,
72
- params : { email : 'chester@cheet.ah' }
68
+ get_reset_token
69
+ get :edit , params : { reset_password_token : @mail_reset_token }
73
70
@data = JSON . parse ( response . body )
74
71
end
75
72
@@ -361,8 +358,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
361
358
362
359
describe 'Using redirect_whitelist' do
363
360
before do
364
- @resource = create ( :user , :confirmed )
365
- @good_redirect_url = Faker ::Internet . url
361
+ @good_redirect_url = @redirect_url
366
362
@bad_redirect_url = Faker ::Internet . url
367
363
DeviseTokenAuth . redirect_whitelist = [ @good_redirect_url ]
368
364
end
@@ -371,31 +367,65 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
371
367
DeviseTokenAuth . redirect_whitelist = nil
372
368
end
373
369
374
- test 'request to whitelisted redirect should be successful' do
375
- post :create ,
376
- params : { email : @resource . email ,
377
- redirect_url : @good_redirect_url }
370
+ describe 'for create' do
371
+ test 'request to whitelisted redirect should be successful' do
372
+ post :create ,
373
+ params : { email : @resource . email ,
374
+ redirect_url : @good_redirect_url }
378
375
379
- assert_equal 200 , response . status
380
- end
376
+ assert_equal 200 , response . status
377
+ end
381
378
382
- test 'request to non-whitelisted redirect should fail' do
383
- post :create ,
384
- params : { email : @resource . email ,
385
- redirect_url : @bad_redirect_url }
379
+ test 'request to non-whitelisted redirect should fail' do
380
+ post :create ,
381
+ params : { email : @resource . email ,
382
+ redirect_url : @bad_redirect_url }
386
383
387
- assert_equal 422 , response . status
384
+ assert_equal 422 , response . status
385
+ end
386
+
387
+ test 'request to non-whitelisted redirect should return error message' do
388
+ post :create ,
389
+ params : { email : @resource . email ,
390
+ redirect_url : @bad_redirect_url }
391
+
392
+ @data = JSON . parse ( response . body )
393
+ assert @data [ 'errors' ]
394
+ assert_equal @data [ 'errors' ] ,
395
+ [ I18n . t ( 'devise_token_auth.passwords.not_allowed_redirect_url' ,
396
+ redirect_url : @bad_redirect_url ) ]
397
+ end
388
398
end
389
- test 'request to non-whitelisted redirect should return error message' do
390
- post :create ,
391
- params : { email : @resource . email ,
392
- redirect_url : @bad_redirect_url }
393
399
394
- @data = JSON . parse ( response . body )
395
- assert @data [ 'errors' ]
396
- assert_equal @data [ 'errors' ] ,
397
- [ I18n . t ( 'devise_token_auth.passwords.not_allowed_redirect_url' ,
398
- redirect_url : @bad_redirect_url ) ]
400
+ describe 'for edit' do
401
+ before do
402
+ @auth_headers = @resource . create_new_auth_token
403
+ @new_password = Faker ::Internet . password
404
+
405
+ get_reset_token
406
+ end
407
+
408
+ test 'request to whitelisted redirect should be successful' do
409
+ get :edit , params : { reset_password_token : @mail_reset_token , redirect_url : @good_redirect_url }
410
+
411
+ assert_equal 302 , response . status
412
+ end
413
+
414
+ test 'request to non-whitelisted redirect should fail' do
415
+ get :edit , params : { reset_password_token : @mail_reset_token , redirect_url : @bad_redirect_url }
416
+
417
+ assert_equal 422 , response . status
418
+ end
419
+
420
+ test 'request to non-whitelisted redirect should return error message' do
421
+ get :edit , params : { reset_password_token : @mail_reset_token , redirect_url : @bad_redirect_url }
422
+
423
+ @data = JSON . parse ( response . body )
424
+ assert @data [ 'errors' ]
425
+ assert_equal @data [ 'errors' ] ,
426
+ [ I18n . t ( 'devise_token_auth.passwords.not_allowed_redirect_url' ,
427
+ redirect_url : @bad_redirect_url ) ]
428
+ end
399
429
end
400
430
end
401
431
@@ -565,16 +595,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
565
595
before do
566
596
@resource = create ( :mang_user , :confirmed )
567
597
@redirect_url = 'http://ng-token-auth.dev'
568
-
569
- post :create , params : { email : @resource . email ,
570
- redirect_url : @redirect_url }
571
-
572
- @mail = ActionMailer ::Base . deliveries . last
573
- @resource . reload
574
-
575
- @mail_config_name = CGI . unescape ( @mail . body . match ( /config=([^&]*)&/ ) [ 1 ] )
576
- @mail_redirect_url = CGI . unescape ( @mail . body . match ( /redirect_url=([^&]*)&/ ) [ 1 ] )
577
- @mail_reset_token = @mail . body . match ( /reset_password_token=(.*)\" / ) [ 1 ]
598
+ get_reset_token
578
599
end
579
600
580
601
test 'response should return success status' do
@@ -593,15 +614,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
593
614
@resource = create ( :user )
594
615
@redirect_url = 'http://ng-token-auth.dev'
595
616
596
- post :create , params : { email : @resource . email ,
597
- redirect_url : @redirect_url }
598
-
599
- @mail = ActionMailer ::Base . deliveries . last
600
- @resource . reload
601
-
602
- @mail_config_name = CGI . unescape ( @mail . body . match ( /config=([^&]*)&/ ) [ 1 ] )
603
- @mail_redirect_url = CGI . unescape ( @mail . body . match ( /redirect_url=([^&]*)&/ ) [ 1 ] )
604
- @mail_reset_token = @mail . body . match ( /reset_password_token=(.*)\" / ) [ 1 ]
617
+ get_reset_token
605
618
606
619
get :edit , params : { reset_password_token : @mail_reset_token ,
607
620
redirect_url : @mail_redirect_url }
@@ -621,17 +634,8 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
621
634
622
635
before do
623
636
@resource = unconfirmable_users ( :user )
624
- @redirect_url = 'http://ng-token-auth.dev'
625
637
626
- post :create , params : { email : @resource . email ,
627
- redirect_url : @redirect_url }
628
-
629
- @mail = ActionMailer ::Base . deliveries . last
630
- @resource . reload
631
-
632
- @mail_config_name = CGI . unescape ( @mail . body . match ( /config=([^&]*)&/ ) [ 1 ] )
633
- @mail_redirect_url = CGI . unescape ( @mail . body . match ( /redirect_url=([^&]*)&/ ) [ 1 ] )
634
- @mail_reset_token = @mail . body . match ( /reset_password_token=(.*)\" / ) [ 1 ]
638
+ get_reset_token
635
639
636
640
get :edit , params : { reset_password_token : @mail_reset_token ,
637
641
redirect_url : @mail_redirect_url }
@@ -646,21 +650,27 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
646
650
@redirect_url = 'http://ng-token-auth.dev'
647
651
@config_name = 'altUser'
648
652
649
- post :create , params : { email : @resource . email ,
653
+ params = { email : @resource . email ,
650
654
redirect_url : @redirect_url ,
651
655
config_name : @config_name }
652
-
653
- @mail = ActionMailer ::Base . deliveries . last
654
- @resource . reload
655
-
656
- @mail_config_name = CGI . unescape ( @mail . body . match ( /config=([^&]*)&/ ) [ 1 ] )
657
- @mail_redirect_url = CGI . unescape ( @mail . body . match ( /redirect_url=([^&]*)&/ ) [ 1 ] )
658
- @mail_reset_token = @mail . body . match ( /reset_password_token=(.*)\" / ) [ 1 ]
656
+ get_reset_token params
659
657
end
660
658
661
659
test 'config_name param is included in the confirmation email link' do
662
660
assert_equal @config_name , @mail_config_name
663
661
end
664
662
end
663
+
664
+ def get_reset_token ( params = nil )
665
+ params ||= { email : @resource . email , redirect_url : @redirect_url }
666
+ post :create , params : params
667
+
668
+ @mail = ActionMailer ::Base . deliveries . last
669
+ @resource . reload
670
+
671
+ @mail_config_name = CGI . unescape ( @mail . body . match ( /config=([^&]*)&/ ) [ 1 ] )
672
+ @mail_redirect_url = CGI . unescape ( @mail . body . match ( /redirect_url=([^&]*)&/ ) [ 1 ] )
673
+ @mail_reset_token = @mail . body . match ( /reset_password_token=(.*)\" / ) [ 1 ]
674
+ end
665
675
end
666
676
end
0 commit comments