@@ -2310,31 +2310,53 @@ def test_upload_fails_with_diff_filename_same_blake2(
2310
2310
"400 File already exists. See /the/help/url/ for more information."
2311
2311
)
2312
2312
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
+ ):
2314
2330
user = UserFactory .create ()
2315
2331
pyramid_config .testing_securitypolicy (identity = user )
2316
2332
db_request .user = user
2333
+ db_request .user_agent = "warehouse-tests/6.6.6"
2317
2334
EmailFactory .create (user = user )
2318
- project = ProjectFactory .create ()
2335
+ project = ProjectFactory .create (name = project_name )
2319
2336
release = ReleaseFactory .create (project = project , version = "1.0" )
2320
2337
RoleFactory .create (user = user , project = project )
2321
2338
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 )
2323
2344
2324
2345
db_request .POST = MultiDict (
2325
2346
{
2326
2347
"metadata_version" : "1.2" ,
2327
2348
"name" : project .name ,
2328
2349
"version" : release .version ,
2329
2350
"filetype" : "sdist" ,
2330
- "md5_digest" : "nope!" ,
2351
+ "md5_digest" : _TAR_GZ_PKG_MD5 ,
2331
2352
"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 ),
2334
2355
type = "application/tar" ,
2335
2356
),
2336
2357
}
2337
2358
)
2359
+ db_request .help_url = lambda ** kw : "/the/help/url/"
2338
2360
2339
2361
with pytest .raises (HTTPBadRequest ) as excinfo :
2340
2362
legacy .file_upload (db_request )
0 commit comments