18
18
import pytest
19
19
20
20
from pyramid .httpexceptions import HTTPMovedPermanently , HTTPSeeOther
21
+ from sqlalchemy .orm .exc import NoResultFound
21
22
22
23
from warehouse .accounts import views
23
24
from warehouse .accounts .interfaces import (
@@ -691,7 +692,9 @@ def test_reset_password_password_date_changed(self, pyramid_request):
691
692
class TestVerifyEmail :
692
693
693
694
def test_verify_email (self , db_request , user_service , token_service ):
694
- email = EmailFactory (verified = False )
695
+ user = UserFactory ()
696
+ email = EmailFactory (user = user , verified = False )
697
+ db_request .user = user
695
698
db_request .GET .update ({"token" : "RANDOM_KEY" })
696
699
db_request .route_path = pretend .call_recorder (lambda name : "/" )
697
700
token_service .loads = pretend .call_recorder (
@@ -788,7 +791,7 @@ def test_verify_email_invalid_action(self, pyramid_request):
788
791
),
789
792
]
790
793
791
- def test_verify_email_invalid_email (self , pyramid_request ):
794
+ def test_verify_email_not_found (self , pyramid_request ):
792
795
data = {
793
796
'action' : 'email-verify' ,
794
797
'email.id' : 'invalid' ,
@@ -801,10 +804,11 @@ def test_verify_email_invalid_email(self, pyramid_request):
801
804
pyramid_request .session .flash = pretend .call_recorder (
802
805
lambda * a , ** kw : None
803
806
)
804
- get = pretend .call_recorder (lambda a : None )
805
- pyramid_request .db = pretend .stub (
806
- query = lambda a : pretend .stub (get = get )
807
- )
807
+
808
+ def raise_no_result (* a ):
809
+ raise NoResultFound
810
+
811
+ pyramid_request .db = pretend .stub (query = raise_no_result )
808
812
809
813
views .verify_email (pyramid_request )
810
814
@@ -814,35 +818,32 @@ def test_verify_email_invalid_email(self, pyramid_request):
814
818
assert pyramid_request .session .flash .calls == [
815
819
pretend .call ('Email not found' , queue = 'error' )
816
820
]
817
- assert get .calls == [pretend .call (data ['email.id' ])]
818
821
819
- def test_verify_email_already_verified (self , pyramid_request ):
822
+ def test_verify_email_already_verified (self , db_request ):
823
+ user = UserFactory ()
824
+ email = EmailFactory (user = user , verified = True )
820
825
data = {
821
826
'action' : 'email-verify' ,
822
- 'email.id' : 'valid' ,
827
+ 'email.id' : email . id ,
823
828
}
824
- pyramid_request .find_service = (
829
+ db_request .user = user
830
+ db_request .find_service = (
825
831
lambda * a , ** kw : pretend .stub (loads = lambda a : data )
826
832
)
827
- pyramid_request .params = {"token" : "RANDOM_KEY" }
828
- pyramid_request .route_path = pretend .call_recorder (lambda name : "/" )
829
- pyramid_request .session .flash = pretend .call_recorder (
833
+ db_request .params = {"token" : "RANDOM_KEY" }
834
+ db_request .route_path = pretend .call_recorder (lambda name : "/" )
835
+ db_request .session .flash = pretend .call_recorder (
830
836
lambda * a , ** kw : None
831
837
)
832
- get = pretend .call_recorder (lambda a : pretend .stub (verified = True ))
833
- pyramid_request .db = pretend .stub (
834
- query = lambda a : pretend .stub (get = get )
835
- )
836
838
837
- views .verify_email (pyramid_request )
839
+ views .verify_email (db_request )
838
840
839
- assert pyramid_request .route_path .calls == [
841
+ assert db_request .route_path .calls == [
840
842
pretend .call ('manage.profile' ),
841
843
]
842
- assert pyramid_request .session .flash .calls == [
844
+ assert db_request .session .flash .calls == [
843
845
pretend .call ('Email already verified' , queue = 'error' )
844
846
]
845
- assert get .calls == [pretend .call (data ['email.id' ])]
846
847
847
848
848
849
class TestProfileCallout :
0 commit comments