@@ -586,136 +586,6 @@ def test_acl(self, monkeypatch, policy_class, principals, expected):
586
586
policy = policy_class ()
587
587
assert bool (policy .permits (request , context , "myperm" )) == expected
588
588
589
- @pytest .mark .parametrize (
590
- "mfa_required,has_mfa,expected" ,
591
- [
592
- (True , True , True ),
593
- (False , True , True ),
594
- (True , False , False ),
595
- (False , False , True ),
596
- ],
597
- )
598
- def test_2fa_owner_requires (
599
- self , monkeypatch , policy_class , mfa_required , has_mfa , expected
600
- ):
601
- monkeypatch .setattr (security_policy , "User" , pretend .stub )
602
- monkeypatch .setattr (security_policy , "TwoFactorRequireable" , pretend .stub )
603
-
604
- request = pretend .stub (
605
- flags = pretend .stub (enabled = lambda flag : False ),
606
- identity = pretend .stub (
607
- __principals__ = lambda : ["user:5" ],
608
- has_primary_verified_email = True ,
609
- has_two_factor = has_mfa ,
610
- date_joined = datetime (2022 , 8 , 1 ),
611
- ),
612
- matched_route = pretend .stub (name = "random.route" ),
613
- registry = pretend .stub (
614
- settings = {
615
- "warehouse.two_factor_requirement.enabled" : True ,
616
- "warehouse.two_factor_mandate.enabled" : False ,
617
- "warehouse.two_factor_mandate.available" : False ,
618
- }
619
- ),
620
- )
621
- context = pretend .stub (
622
- __acl__ = [(Allow , "user:5" , "myperm" )], owners_require_2fa = mfa_required
623
- )
624
-
625
- policy = policy_class ()
626
- assert bool (policy .permits (request , context , "myperm" )) == expected
627
-
628
- @pytest .mark .parametrize (
629
- "mfa_required,has_mfa,expected" ,
630
- [
631
- (True , True , True ),
632
- (False , True , True ),
633
- (True , False , False ),
634
- (False , False , True ),
635
- ],
636
- )
637
- def test_2fa_pypi_mandates_2fa (
638
- self , monkeypatch , policy_class , mfa_required , has_mfa , expected
639
- ):
640
- monkeypatch .setattr (security_policy , "User" , pretend .stub )
641
- monkeypatch .setattr (security_policy , "TwoFactorRequireable" , pretend .stub )
642
-
643
- request = pretend .stub (
644
- flags = pretend .stub (enabled = lambda flag : False ),
645
- identity = pretend .stub (
646
- __principals__ = lambda : ["user:5" ],
647
- has_primary_verified_email = True ,
648
- has_two_factor = has_mfa ,
649
- date_joined = datetime (2022 , 8 , 1 ),
650
- ),
651
- matched_route = pretend .stub (name = "random.route" ),
652
- registry = pretend .stub (
653
- settings = {
654
- "warehouse.two_factor_requirement.enabled" : False ,
655
- "warehouse.two_factor_mandate.enabled" : True ,
656
- "warehouse.two_factor_mandate.available" : False ,
657
- }
658
- ),
659
- )
660
- context = pretend .stub (
661
- __acl__ = [(Allow , "user:5" , "myperm" )], pypi_mandates_2fa = mfa_required
662
- )
663
-
664
- policy = policy_class ()
665
- assert bool (policy .permits (request , context , "myperm" )) == expected
666
-
667
- @pytest .mark .parametrize (
668
- "mfa_required,has_mfa,expected" ,
669
- [
670
- (True , True , True ),
671
- (False , True , True ),
672
- (True , False , False ),
673
- (False , False , True ),
674
- ],
675
- )
676
- def test_2fa_pypi_mandates_2fa_with_warning (
677
- self , monkeypatch , policy_class , mfa_required , has_mfa , expected
678
- ):
679
- monkeypatch .setattr (security_policy , "User" , pretend .stub )
680
- monkeypatch .setattr (security_policy , "TwoFactorRequireable" , pretend .stub )
681
-
682
- request = pretend .stub (
683
- flags = pretend .stub (enabled = lambda flag : False ),
684
- identity = pretend .stub (
685
- __principals__ = lambda : ["user:5" ],
686
- has_primary_verified_email = True ,
687
- has_two_factor = has_mfa ,
688
- date_joined = datetime (2022 , 8 , 1 ),
689
- ),
690
- matched_route = pretend .stub (name = "random.route" ),
691
- registry = pretend .stub (
692
- settings = {
693
- "warehouse.two_factor_requirement.enabled" : False ,
694
- "warehouse.two_factor_mandate.enabled" : False ,
695
- "warehouse.two_factor_mandate.available" : True ,
696
- }
697
- ),
698
- session = pretend .stub (flash = pretend .call_recorder (lambda msg , queue : None )),
699
- )
700
- context = pretend .stub (
701
- __acl__ = [(Allow , "user:5" , "myperm" )], pypi_mandates_2fa = mfa_required
702
- )
703
-
704
- policy = policy_class ()
705
- assert bool (policy .permits (request , context , "myperm" ))
706
-
707
- if not expected :
708
- assert request .session .flash .calls == [
709
- pretend .call (
710
- "This project is included in PyPI's two-factor mandate "
711
- "for critical projects. In the future, you will be unable to "
712
- "perform this action without enabling 2FA for your account" ,
713
- queue = "warning" ,
714
- )
715
- ]
716
- else :
717
- assert request .session .flash .calls == []
718
-
719
589
def test_permits_with_unverified_email (self , monkeypatch , policy_class ):
720
590
monkeypatch .setattr (security_policy , "User" , pretend .stub )
721
591
0 commit comments