@@ -65,11 +65,8 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
6565
6666 describe 'for edit' do
6767 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 }
7370 @data = JSON . parse ( response . body )
7471 end
7572
@@ -361,8 +358,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
361358
362359 describe 'Using redirect_whitelist' do
363360 before do
364- @resource = create ( :user , :confirmed )
365- @good_redirect_url = Faker ::Internet . url
361+ @good_redirect_url = @redirect_url
366362 @bad_redirect_url = Faker ::Internet . url
367363 DeviseTokenAuth . redirect_whitelist = [ @good_redirect_url ]
368364 end
@@ -371,31 +367,65 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
371367 DeviseTokenAuth . redirect_whitelist = nil
372368 end
373369
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 }
378375
379- assert_equal 200 , response . status
380- end
376+ assert_equal 200 , response . status
377+ end
381378
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 }
386383
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
388398 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 }
393399
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
399429 end
400430 end
401431
@@ -565,16 +595,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
565595 before do
566596 @resource = create ( :mang_user , :confirmed )
567597 @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
578599 end
579600
580601 test 'response should return success status' do
@@ -593,15 +614,7 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
593614 @resource = create ( :user )
594615 @redirect_url = 'http://ng-token-auth.dev'
595616
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
605618
606619 get :edit , params : { reset_password_token : @mail_reset_token ,
607620 redirect_url : @mail_redirect_url }
@@ -621,17 +634,8 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
621634
622635 before do
623636 @resource = unconfirmable_users ( :user )
624- @redirect_url = 'http://ng-token-auth.dev'
625637
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
635639
636640 get :edit , params : { reset_password_token : @mail_reset_token ,
637641 redirect_url : @mail_redirect_url }
@@ -646,21 +650,27 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
646650 @redirect_url = 'http://ng-token-auth.dev'
647651 @config_name = 'altUser'
648652
649- post :create , params : { email : @resource . email ,
653+ params = { email : @resource . email ,
650654 redirect_url : @redirect_url ,
651655 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
659657 end
660658
661659 test 'config_name param is included in the confirmation email link' do
662660 assert_equal @config_name , @mail_config_name
663661 end
664662 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
665675 end
666676end
0 commit comments