@@ -2310,31 +2310,53 @@ def test_upload_fails_with_diff_filename_same_blake2(
23102310 "400 File already exists. See /the/help/url/ for more information."
23112311 )
23122312
2313- def test_upload_fails_with_wrong_filename (self , pyramid_config , db_request ):
2313+ @pytest .mark .parametrize (
2314+ "filename, project_name" ,
2315+ [
2316+ # completely different
2317+ ("nope-{version}.tar.gz" , "something_else" ),
2318+ ("nope-{version}-py3-none-any.whl" , "something_else" ),
2319+ # starts with same prefix
2320+ ("nope-{version}.tar.gz" , "no" ),
2321+ ("nope-{version}-py3-none-any.whl" , "no" ),
2322+ # starts with same prefix with hyphen
2323+ ("no-way-{version}.tar.gz" , "no" ),
2324+ ("no_way-{version}-py3-none-any.whl" , "no" ),
2325+ ],
2326+ )
2327+ def test_upload_fails_with_wrong_filename (
2328+ self , pyramid_config , db_request , metrics , filename , project_name
2329+ ):
23142330 user = UserFactory .create ()
23152331 pyramid_config .testing_securitypolicy (identity = user )
23162332 db_request .user = user
2333+ db_request .user_agent = "warehouse-tests/6.6.6"
23172334 EmailFactory .create (user = user )
2318- project = ProjectFactory .create ()
2335+ project = ProjectFactory .create (name = project_name )
23192336 release = ReleaseFactory .create (project = project , version = "1.0" )
23202337 RoleFactory .create (user = user , project = project )
23212338
2322- filename = f"nope-{ release .version } .tar.gz"
2339+ storage_service = pretend .stub (store = lambda path , filepath , meta : None )
2340+ db_request .find_service = lambda svc , name = None , context = None : {
2341+ IFileStorage : storage_service ,
2342+ IMetricsService : metrics ,
2343+ }.get (svc )
23232344
23242345 db_request .POST = MultiDict (
23252346 {
23262347 "metadata_version" : "1.2" ,
23272348 "name" : project .name ,
23282349 "version" : release .version ,
23292350 "filetype" : "sdist" ,
2330- "md5_digest" : "nope!" ,
2351+ "md5_digest" : _TAR_GZ_PKG_MD5 ,
23312352 "content" : pretend .stub (
2332- filename = filename ,
2333- file = io .BytesIO (b"a" * ( legacy . MAX_FILESIZE + 1 ) ),
2353+ filename = filename . format ( version = release . version ) ,
2354+ file = io .BytesIO (_TAR_GZ_PKG_TESTDATA ),
23342355 type = "application/tar" ,
23352356 ),
23362357 }
23372358 )
2359+ db_request .help_url = lambda ** kw : "/the/help/url/"
23382360
23392361 with pytest .raises (HTTPBadRequest ) as excinfo :
23402362 legacy .file_upload (db_request )
0 commit comments