65
65
OrganizationRole ,
66
66
OrganizationRoleType ,
67
67
)
68
+ from warehouse .packaging .interfaces import IProjectService
68
69
from warehouse .packaging .models import Role , RoleInvitation
69
70
from warehouse .rate_limiting .interfaces import IRateLimiter
70
71
@@ -3306,8 +3307,17 @@ def test_reauth_no_user(self, monkeypatch, pyramid_request):
3306
3307
3307
3308
class TestManageAccountPublishingViews :
3308
3309
def test_initializes (self , metrics ):
3310
+ project_service = pretend .stub (check_project_name = lambda name : None )
3311
+
3312
+ def find_service (iface , name = None , context = None ):
3313
+ if iface is IMetricsService :
3314
+ return metrics
3315
+ if iface is IProjectService :
3316
+ return project_service
3317
+ return pretend .stub ()
3318
+
3309
3319
request = pretend .stub (
3310
- find_service = pretend .call_recorder (lambda * a , ** kw : metrics ),
3320
+ find_service = pretend .call_recorder (find_service ),
3311
3321
route_url = pretend .stub (),
3312
3322
POST = MultiDict (),
3313
3323
registry = pretend .stub (
@@ -3320,9 +3330,11 @@ def test_initializes(self, metrics):
3320
3330
3321
3331
assert view .request is request
3322
3332
assert view .metrics is metrics
3333
+ assert view .project_service is project_service
3323
3334
3324
3335
assert view .request .find_service .calls == [
3325
- pretend .call (IMetricsService , context = None )
3336
+ pretend .call (IMetricsService , context = None ),
3337
+ pretend .call (IProjectService , context = None ),
3326
3338
]
3327
3339
3328
3340
@pytest .mark .parametrize (
@@ -3348,6 +3360,8 @@ def test_ratelimiting(self, metrics, ip_exceeded, user_exceeded):
3348
3360
def find_service (iface , name = None , context = None ):
3349
3361
if iface is IMetricsService :
3350
3362
return metrics
3363
+ if iface is IProjectService :
3364
+ return pretend .stub (check_project_name = lambda name : None )
3351
3365
3352
3366
if name == "user_oidc.publisher.register" :
3353
3367
return user_rate_limiter
@@ -3375,6 +3389,7 @@ def find_service(iface, name=None, context=None):
3375
3389
}
3376
3390
assert request .find_service .calls == [
3377
3391
pretend .call (IMetricsService , context = None ),
3392
+ pretend .call (IProjectService , context = None ),
3378
3393
pretend .call (IRateLimiter , name = "user_oidc.publisher.register" ),
3379
3394
pretend .call (IRateLimiter , name = "ip_oidc.publisher.register" ),
3380
3395
]
@@ -3402,16 +3417,17 @@ def test_manage_publishing(self, metrics, monkeypatch):
3402
3417
"github.token" : "fake-api-token" ,
3403
3418
}
3404
3419
),
3405
- find_service = pretend .call_recorder (lambda * a , ** kw : metrics ),
3420
+ find_service = lambda svc , ** kw : {
3421
+ IMetricsService : metrics ,
3422
+ IProjectService : project_service ,
3423
+ }[svc ],
3406
3424
flags = pretend .stub (
3407
3425
disallow_oidc = pretend .call_recorder (lambda f = None : False )
3408
3426
),
3409
3427
POST = pretend .stub (),
3410
3428
)
3411
3429
3412
- project_factory = pretend .stub ()
3413
- project_factory_cls = pretend .call_recorder (lambda r : project_factory )
3414
- monkeypatch .setattr (views , "ProjectFactory" , project_factory_cls )
3430
+ project_service = pretend .stub (check_project_name = lambda name : None )
3415
3431
3416
3432
pending_github_publisher_form_obj = pretend .stub ()
3417
3433
pending_github_publisher_form_cls = pretend .call_recorder (
@@ -3466,24 +3482,26 @@ def test_manage_publishing(self, metrics, monkeypatch):
3466
3482
pretend .call (AdminFlagValue .DISALLOW_GOOGLE_OIDC ),
3467
3483
pretend .call (AdminFlagValue .DISALLOW_ACTIVESTATE_OIDC ),
3468
3484
]
3469
- assert project_factory_cls .calls == [pretend .call (request )]
3470
3485
assert pending_github_publisher_form_cls .calls == [
3471
3486
pretend .call (
3472
3487
request .POST ,
3473
3488
api_token = "fake-api-token" ,
3474
3489
route_url = route_url ,
3475
- project_factory = project_factory ,
3490
+ check_project_name = project_service . check_project_name ,
3476
3491
)
3477
3492
]
3478
3493
assert pending_gitlab_publisher_form_cls .calls == [
3479
3494
pretend .call (
3480
3495
request .POST ,
3481
3496
route_url = route_url ,
3482
- project_factory = project_factory ,
3497
+ check_project_name = project_service . check_project_name ,
3483
3498
)
3484
3499
]
3485
3500
3486
3501
def test_manage_publishing_admin_disabled (self , monkeypatch , pyramid_request ):
3502
+ project_service = pretend .stub (check_project_name = lambda name : None )
3503
+ pyramid_request .find_service = lambda _ , ** kw : project_service
3504
+
3487
3505
pyramid_request .user = pretend .stub ()
3488
3506
pyramid_request .registry = pretend .stub (
3489
3507
settings = {
@@ -3497,10 +3515,6 @@ def test_manage_publishing_admin_disabled(self, monkeypatch, pyramid_request):
3497
3515
flash = pretend .call_recorder (lambda * a , ** kw : None )
3498
3516
)
3499
3517
3500
- project_factory = pretend .stub ()
3501
- project_factory_cls = pretend .call_recorder (lambda r : project_factory )
3502
- monkeypatch .setattr (views , "ProjectFactory" , project_factory_cls )
3503
-
3504
3518
pending_github_publisher_form_obj = pretend .stub ()
3505
3519
pending_github_publisher_form_cls = pretend .call_recorder (
3506
3520
lambda * a , ** kw : pending_github_publisher_form_obj
@@ -3568,14 +3582,14 @@ def test_manage_publishing_admin_disabled(self, monkeypatch, pyramid_request):
3568
3582
pyramid_request .POST ,
3569
3583
api_token = "fake-api-token" ,
3570
3584
route_url = pyramid_request .route_url ,
3571
- project_factory = project_factory ,
3585
+ check_project_name = project_service . check_project_name ,
3572
3586
)
3573
3587
]
3574
3588
assert pending_gitlab_publisher_form_cls .calls == [
3575
3589
pretend .call (
3576
3590
pyramid_request .POST ,
3577
3591
route_url = pyramid_request .route_url ,
3578
- project_factory = project_factory ,
3592
+ check_project_name = project_service . check_project_name ,
3579
3593
)
3580
3594
]
3581
3595
@@ -3607,6 +3621,12 @@ def test_manage_publishing_admin_disabled(self, monkeypatch, pyramid_request):
3607
3621
def test_add_pending_oidc_publisher_admin_disabled (
3608
3622
self , monkeypatch , pyramid_request , view_name , flag , publisher_name
3609
3623
):
3624
+ project_service = pretend .stub (check_project_name = lambda name : None )
3625
+ pyramid_request .find_service = lambda interface , ** kwargs : {
3626
+ IProjectService : project_service ,
3627
+ IMetricsService : pretend .stub (),
3628
+ }[interface ]
3629
+
3610
3630
pyramid_request .user = pretend .stub ()
3611
3631
pyramid_request .registry = pretend .stub (
3612
3632
settings = {
@@ -3620,10 +3640,6 @@ def test_add_pending_oidc_publisher_admin_disabled(
3620
3640
flash = pretend .call_recorder (lambda * a , ** kw : None )
3621
3641
)
3622
3642
3623
- project_factory = pretend .stub ()
3624
- project_factory_cls = pretend .call_recorder (lambda r : project_factory )
3625
- monkeypatch .setattr (views , "ProjectFactory" , project_factory_cls )
3626
-
3627
3643
pending_github_publisher_form_obj = pretend .stub ()
3628
3644
pending_github_publisher_form_cls = pretend .call_recorder (
3629
3645
lambda * a , ** kw : pending_github_publisher_form_obj
@@ -3698,14 +3714,14 @@ def test_add_pending_oidc_publisher_admin_disabled(
3698
3714
pyramid_request .POST ,
3699
3715
api_token = "fake-api-token" ,
3700
3716
route_url = pyramid_request .route_url ,
3701
- project_factory = project_factory ,
3717
+ check_project_name = project_service . check_project_name ,
3702
3718
)
3703
3719
]
3704
3720
assert pending_gitlab_publisher_form_cls .calls == [
3705
3721
pretend .call (
3706
3722
pyramid_request .POST ,
3707
3723
route_url = pyramid_request .route_url ,
3708
- project_factory = project_factory ,
3724
+ check_project_name = project_service . check_project_name ,
3709
3725
)
3710
3726
]
3711
3727
@@ -3741,7 +3757,14 @@ def test_add_pending_oidc_publisher_user_cannot_register(
3741
3757
view_name ,
3742
3758
flag ,
3743
3759
publisher_name ,
3760
+ metrics ,
3744
3761
):
3762
+ project_service = pretend .stub (check_project_name = lambda name : None )
3763
+ pyramid_request .find_service = lambda interface , ** kwargs : {
3764
+ IProjectService : project_service ,
3765
+ IMetricsService : metrics ,
3766
+ }[interface ]
3767
+
3745
3768
pyramid_request .registry = pretend .stub (
3746
3769
settings = {
3747
3770
"github.token" : "fake-api-token" ,
@@ -3757,10 +3780,6 @@ def test_add_pending_oidc_publisher_user_cannot_register(
3757
3780
flash = pretend .call_recorder (lambda * a , ** kw : None )
3758
3781
)
3759
3782
3760
- project_factory = pretend .stub ()
3761
- project_factory_cls = pretend .call_recorder (lambda r : project_factory )
3762
- monkeypatch .setattr (views , "ProjectFactory" , project_factory_cls )
3763
-
3764
3783
pending_github_publisher_form_obj = pretend .stub ()
3765
3784
pending_github_publisher_form_cls = pretend .call_recorder (
3766
3785
lambda * a , ** kw : pending_github_publisher_form_obj
@@ -3839,14 +3858,14 @@ def test_add_pending_oidc_publisher_user_cannot_register(
3839
3858
pyramid_request .POST ,
3840
3859
api_token = "fake-api-token" ,
3841
3860
route_url = pyramid_request .route_url ,
3842
- project_factory = project_factory ,
3861
+ check_project_name = project_service . check_project_name ,
3843
3862
)
3844
3863
]
3845
3864
assert pending_gitlab_publisher_form_cls .calls == [
3846
3865
pretend .call (
3847
3866
pyramid_request .POST ,
3848
3867
route_url = pyramid_request .route_url ,
3849
- project_factory = project_factory ,
3868
+ check_project_name = project_service . check_project_name ,
3850
3869
)
3851
3870
]
3852
3871
@@ -4474,6 +4493,12 @@ def test_add_pending_oidc_publisher(
4474
4493
def test_delete_pending_oidc_publisher_admin_disabled (
4475
4494
self , monkeypatch , pyramid_request
4476
4495
):
4496
+ project_service = pretend .stub (check_project_name = lambda name : None )
4497
+ pyramid_request .find_service = lambda interface , ** kwargs : {
4498
+ IProjectService : project_service ,
4499
+ IMetricsService : pretend .stub (),
4500
+ }[interface ]
4501
+
4477
4502
pyramid_request .user = pretend .stub ()
4478
4503
pyramid_request .registry = pretend .stub (
4479
4504
settings = {
@@ -4487,10 +4512,6 @@ def test_delete_pending_oidc_publisher_admin_disabled(
4487
4512
flash = pretend .call_recorder (lambda * a , ** kw : None )
4488
4513
)
4489
4514
4490
- project_factory = pretend .stub ()
4491
- project_factory_cls = pretend .call_recorder (lambda r : project_factory )
4492
- monkeypatch .setattr (views , "ProjectFactory" , project_factory_cls )
4493
-
4494
4515
pending_github_publisher_form_obj = pretend .stub ()
4495
4516
pending_github_publisher_form_cls = pretend .call_recorder (
4496
4517
lambda * a , ** kw : pending_github_publisher_form_obj
@@ -4558,14 +4579,14 @@ def test_delete_pending_oidc_publisher_admin_disabled(
4558
4579
pyramid_request .POST ,
4559
4580
api_token = "fake-api-token" ,
4560
4581
route_url = pyramid_request .route_url ,
4561
- project_factory = project_factory ,
4582
+ check_project_name = project_service . check_project_name ,
4562
4583
)
4563
4584
]
4564
4585
assert pending_gitlab_publisher_form_cls .calls == [
4565
4586
pretend .call (
4566
4587
pyramid_request .POST ,
4567
4588
route_url = pyramid_request .route_url ,
4568
- project_factory = project_factory ,
4589
+ check_project_name = project_service . check_project_name ,
4569
4590
)
4570
4591
]
4571
4592
0 commit comments