@@ -686,6 +686,8 @@ def test_fails_invalid_version(self, pyramid_config, pyramid_request, version):
686
686
pyramid_request .POST ["protocol_version" ] = version
687
687
pyramid_request .flags = pretend .stub (enabled = lambda * a : False )
688
688
689
+ pyramid_request .user = pretend .stub (primary_email = pretend .stub (verified = True ))
690
+
689
691
with pytest .raises (HTTPBadRequest ) as excinfo :
690
692
legacy .file_upload (pyramid_request )
691
693
@@ -864,6 +866,9 @@ def test_fails_invalid_post_data(
864
866
self , pyramid_config , db_request , post_data , message
865
867
):
866
868
pyramid_config .testing_securitypolicy (userid = 1 )
869
+ user = UserFactory .create ()
870
+ EmailFactory .create (user = user )
871
+ db_request .user = user
867
872
db_request .POST = MultiDict (post_data )
868
873
869
874
with pytest .raises (HTTPBadRequest ) as excinfo :
@@ -1045,6 +1050,9 @@ def test_fails_with_admin_flag_set(self, pyramid_config, db_request):
1045
1050
)
1046
1051
admin_flag .enabled = True
1047
1052
pyramid_config .testing_securitypolicy (userid = 1 )
1053
+ user = UserFactory .create ()
1054
+ EmailFactory .create (user = user )
1055
+ db_request .user = user
1048
1056
name = "fails-with-admin-flag"
1049
1057
db_request .POST = MultiDict (
1050
1058
{
@@ -1078,6 +1086,9 @@ def test_fails_with_admin_flag_set(self, pyramid_config, db_request):
1078
1086
1079
1087
def test_upload_fails_without_file (self , pyramid_config , db_request ):
1080
1088
pyramid_config .testing_securitypolicy (userid = 1 )
1089
+ user = UserFactory .create ()
1090
+ EmailFactory .create (user = user )
1091
+ db_request .user = user
1081
1092
db_request .POST = MultiDict (
1082
1093
{
1083
1094
"metadata_version" : "1.2" ,
@@ -1098,8 +1109,10 @@ def test_upload_fails_without_file(self, pyramid_config, db_request):
1098
1109
1099
1110
@pytest .mark .parametrize ("value" , [("UNKNOWN" ), ("UNKNOWN\n \n " )])
1100
1111
def test_upload_cleans_unknown_values (self , pyramid_config , db_request , value ):
1101
-
1102
1112
pyramid_config .testing_securitypolicy (userid = 1 )
1113
+ user = UserFactory .create ()
1114
+ EmailFactory .create (user = user )
1115
+ db_request .user = user
1103
1116
db_request .POST = MultiDict (
1104
1117
{
1105
1118
"metadata_version" : "1.2" ,
@@ -1117,6 +1130,9 @@ def test_upload_cleans_unknown_values(self, pyramid_config, db_request, value):
1117
1130
1118
1131
def test_upload_escapes_nul_characters (self , pyramid_config , db_request ):
1119
1132
pyramid_config .testing_securitypolicy (userid = 1 )
1133
+ user = UserFactory .create ()
1134
+ EmailFactory .create (user = user )
1135
+ db_request .user = user
1120
1136
db_request .POST = MultiDict (
1121
1137
{
1122
1138
"metadata_version" : "1.2" ,
@@ -1321,6 +1337,7 @@ def test_upload_fails_invlaid_content_type(
1321
1337
pyramid_config .testing_securitypolicy (userid = 1 )
1322
1338
user = UserFactory .create ()
1323
1339
EmailFactory .create (user = user )
1340
+ db_request .user = user
1324
1341
project = ProjectFactory .create ()
1325
1342
release = ReleaseFactory .create (project = project , version = "1.0" )
1326
1343
RoleFactory .create (user = user , project = project )
@@ -1359,6 +1376,7 @@ def test_upload_fails_with_legacy_type(self, pyramid_config, db_request):
1359
1376
1360
1377
user = UserFactory .create ()
1361
1378
EmailFactory .create (user = user )
1379
+ db_request .user = user
1362
1380
project = ProjectFactory .create ()
1363
1381
release = ReleaseFactory .create (project = project , version = "1.0" )
1364
1382
RoleFactory .create (user = user , project = project )
@@ -1394,6 +1412,7 @@ def test_upload_fails_with_legacy_ext(self, pyramid_config, db_request):
1394
1412
1395
1413
user = UserFactory .create ()
1396
1414
EmailFactory .create (user = user )
1415
+ db_request .user = user
1397
1416
project = ProjectFactory .create ()
1398
1417
release = ReleaseFactory .create (project = project , version = "1.0" )
1399
1418
RoleFactory .create (user = user , project = project )
@@ -1430,6 +1449,7 @@ def test_upload_fails_for_second_sdist(self, pyramid_config, db_request):
1430
1449
pyramid_config .testing_securitypolicy (userid = 1 )
1431
1450
1432
1451
user = UserFactory .create ()
1452
+ db_request .user = user
1433
1453
EmailFactory .create (user = user )
1434
1454
project = ProjectFactory .create ()
1435
1455
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1470,6 +1490,7 @@ def test_upload_fails_with_invalid_signature(self, pyramid_config, db_request, s
1470
1490
pyramid_config .testing_securitypolicy (userid = 1 )
1471
1491
1472
1492
user = UserFactory .create ()
1493
+ db_request .user = user
1473
1494
EmailFactory .create (user = user )
1474
1495
project = ProjectFactory .create ()
1475
1496
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1507,6 +1528,7 @@ def test_upload_fails_with_invalid_classifier(self, pyramid_config, db_request):
1507
1528
pyramid_config .testing_securitypolicy (userid = 1 )
1508
1529
1509
1530
user = UserFactory .create ()
1531
+ db_request .user = user
1510
1532
EmailFactory .create (user = user )
1511
1533
project = ProjectFactory .create ()
1512
1534
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1546,6 +1568,7 @@ def test_upload_fails_with_deprecated_classifier(self, pyramid_config, db_reques
1546
1568
pyramid_config .testing_securitypolicy (userid = 1 )
1547
1569
1548
1570
user = UserFactory .create ()
1571
+ db_request .user = user
1549
1572
EmailFactory .create (user = user )
1550
1573
project = ProjectFactory .create ()
1551
1574
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1622,6 +1645,7 @@ def test_upload_fails_with_invalid_digest(
1622
1645
pyramid_config .testing_securitypolicy (userid = 1 )
1623
1646
1624
1647
user = UserFactory .create ()
1648
+ db_request .user = user
1625
1649
EmailFactory .create (user = user )
1626
1650
project = ProjectFactory .create ()
1627
1651
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1659,6 +1683,7 @@ def test_upload_fails_with_invalid_file(self, pyramid_config, db_request):
1659
1683
pyramid_config .testing_securitypolicy (userid = 1 )
1660
1684
1661
1685
user = UserFactory .create ()
1686
+ db_request .user = user
1662
1687
EmailFactory .create (user = user )
1663
1688
project = ProjectFactory .create ()
1664
1689
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1691,6 +1716,7 @@ def test_upload_fails_with_too_large_file(self, pyramid_config, db_request):
1691
1716
pyramid_config .testing_securitypolicy (userid = 1 )
1692
1717
1693
1718
user = UserFactory .create ()
1719
+ db_request .user = user
1694
1720
EmailFactory .create (user = user )
1695
1721
project = ProjectFactory .create (
1696
1722
name = "foobar" , upload_limit = (60 * 1024 * 1024 ) # 60 MB
@@ -1732,6 +1758,7 @@ def test_upload_fails_with_too_large_signature(self, pyramid_config, db_request)
1732
1758
pyramid_config .testing_securitypolicy (userid = 1 )
1733
1759
1734
1760
user = UserFactory .create ()
1761
+ db_request .user = user
1735
1762
EmailFactory .create (user = user )
1736
1763
project = ProjectFactory .create ()
1737
1764
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1770,6 +1797,7 @@ def test_upload_fails_with_previously_used_filename(
1770
1797
pyramid_config .testing_securitypolicy (userid = 1 )
1771
1798
1772
1799
user = UserFactory .create ()
1800
+ db_request .user = user
1773
1801
EmailFactory .create (user = user )
1774
1802
project = ProjectFactory .create ()
1775
1803
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1813,6 +1841,7 @@ def test_upload_noop_with_existing_filename_same_content(
1813
1841
pyramid_config .testing_securitypolicy (userid = 1 )
1814
1842
1815
1843
user = UserFactory .create ()
1844
+ db_request .user = user
1816
1845
EmailFactory .create (user = user )
1817
1846
project = ProjectFactory .create ()
1818
1847
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1859,6 +1888,7 @@ def test_upload_fails_with_existing_filename_diff_content(
1859
1888
pyramid_config .testing_securitypolicy (userid = 1 )
1860
1889
1861
1890
user = UserFactory .create ()
1891
+ db_request .user = user
1862
1892
EmailFactory .create (user = user )
1863
1893
project = ProjectFactory .create ()
1864
1894
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1910,6 +1940,8 @@ def test_upload_fails_with_diff_filename_same_blake2(
1910
1940
pyramid_config .testing_securitypolicy (userid = 1 )
1911
1941
1912
1942
user = UserFactory .create ()
1943
+ db_request .user = user
1944
+ EmailFactory .create (user = user )
1913
1945
project = ProjectFactory .create ()
1914
1946
release = ReleaseFactory .create (project = project , version = "1.0" )
1915
1947
RoleFactory .create (user = user , project = project )
@@ -1961,6 +1993,7 @@ def test_upload_fails_with_wrong_filename(self, pyramid_config, db_request):
1961
1993
pyramid_config .testing_securitypolicy (userid = 1 )
1962
1994
1963
1995
user = UserFactory .create ()
1996
+ db_request .user = user
1964
1997
EmailFactory .create (user = user )
1965
1998
project = ProjectFactory .create ()
1966
1999
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -1999,6 +2032,7 @@ def test_upload_fails_with_invalid_extension(self, pyramid_config, db_request):
1999
2032
pyramid_config .testing_securitypolicy (userid = 1 )
2000
2033
2001
2034
user = UserFactory .create ()
2035
+ db_request .user = user
2002
2036
EmailFactory .create (user = user )
2003
2037
project = ProjectFactory .create ()
2004
2038
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -2039,6 +2073,7 @@ def test_upload_fails_with_unsafe_filename(
2039
2073
pyramid_config .testing_securitypolicy (userid = 1 )
2040
2074
2041
2075
user = UserFactory .create ()
2076
+ db_request .user = user
2042
2077
EmailFactory .create (user = user )
2043
2078
project = ProjectFactory .create ()
2044
2079
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -2430,6 +2465,7 @@ def test_upload_fails_with_unsupported_wheel_plat(
2430
2465
pyramid_config .testing_securitypolicy (userid = 1 )
2431
2466
2432
2467
user = UserFactory .create ()
2468
+ db_request .user = user
2433
2469
EmailFactory .create (user = user )
2434
2470
project = ProjectFactory .create ()
2435
2471
release = ReleaseFactory .create (project = project , version = "1.0" )
@@ -2729,11 +2765,13 @@ def test_upload_succeeds_creates_project(self, pyramid_config, db_request):
2729
2765
@pytest .mark .parametrize (
2730
2766
("emails_verified" , "expected_success" ),
2731
2767
[
2732
- ((True ,), True ),
2733
- ((False ,), False ),
2734
- ((True , True ), True ),
2735
- ((True , False ), True ),
2736
- ((False , False ), False ),
2768
+ ([], False ),
2769
+ ([True ], True ),
2770
+ ([False ], False ),
2771
+ ([True , True ], True ),
2772
+ ([True , False ], True ),
2773
+ ([False , False ], False ),
2774
+ ([False , True ], False ),
2737
2775
],
2738
2776
)
2739
2777
def test_upload_requires_verified_email (
@@ -2742,8 +2780,8 @@ def test_upload_requires_verified_email(
2742
2780
pyramid_config .testing_securitypolicy (userid = 1 )
2743
2781
2744
2782
user = UserFactory .create ()
2745
- for verified in emails_verified :
2746
- EmailFactory .create (user = user , verified = verified )
2783
+ for i , verified in enumerate ( emails_verified ) :
2784
+ EmailFactory .create (user = user , verified = verified , primary = i == 0 )
2747
2785
2748
2786
filename = "{}-{}.tar.gz" .format ("example" , "1.0" )
2749
2787
@@ -2782,11 +2820,10 @@ def test_upload_requires_verified_email(
2782
2820
assert resp .status_code == 400
2783
2821
assert resp .status == (
2784
2822
(
2785
- "400 User {!r} has no verified email "
2786
- "addresses, verify at least one "
2787
- "address before registering a new project "
2788
- "on PyPI. See /the/help/url/ "
2789
- "for more information."
2823
+ "400 User {!r} does not have a verified primary email "
2824
+ "address. Please add a verified primary email before "
2825
+ "attempting to upload to PyPI. See /the/help/url/ for "
2826
+ "more information.for more information."
2790
2827
).format (user .username )
2791
2828
)
2792
2829
0 commit comments