@@ -42,6 +42,7 @@ def _assert_has_cors_headers(headers):
42
42
class TestJSONProject :
43
43
def test_normalizing_redirects (self , db_request ):
44
44
project = ProjectFactory .create ()
45
+ ReleaseFactory .create (project = project , version = "1.0" )
45
46
46
47
name = project .name .lower ()
47
48
if name == project .normalized_name :
@@ -52,7 +53,7 @@ def test_normalizing_redirects(self, db_request):
52
53
lambda name : "/project/the-redirect/"
53
54
)
54
55
55
- resp = json .json_project (project , db_request )
56
+ resp = json .json_project (db_request )
56
57
57
58
assert isinstance (resp , HTTPMovedPermanently )
58
59
assert resp .headers ["Location" ] == "/project/the-redirect/"
@@ -63,7 +64,8 @@ def test_normalizing_redirects(self, db_request):
63
64
64
65
def test_missing_release (self , db_request ):
65
66
project = ProjectFactory .create ()
66
- resp = json .json_project (project , db_request )
67
+ db_request .matchdict = {"name" : project .normalized_name }
68
+ resp = json .json_project (db_request )
67
69
assert isinstance (resp , HTTPNotFound )
68
70
_assert_has_cors_headers (resp .headers )
69
71
@@ -81,8 +83,9 @@ def test_with_prereleases(self, monkeypatch, db_request):
81
83
lambda request , project , release , * , all_releases : data
82
84
)
83
85
monkeypatch .setattr (json , "_json_data" , json_data )
86
+ db_request .matchdict = {"name" : project .normalized_name }
84
87
85
- rvalue = json .json_project (project , db_request )
88
+ rvalue = json .json_project (db_request )
86
89
87
90
assert rvalue is data
88
91
assert json_data .calls == [
@@ -102,8 +105,9 @@ def test_only_prereleases(self, monkeypatch, db_request):
102
105
lambda request , project , release , * , all_releases : data
103
106
)
104
107
monkeypatch .setattr (json , "_json_data" , json_data )
108
+ db_request .matchdict = {"name" : project .normalized_name }
105
109
106
- rvalue = json .json_project (project , db_request )
110
+ rvalue = json .json_project (db_request )
107
111
108
112
assert rvalue is data
109
113
assert json_data .calls == [
@@ -129,8 +133,9 @@ def test_all_releases_yanked(self, monkeypatch, db_request):
129
133
lambda request , project , release , * , all_releases : data
130
134
)
131
135
monkeypatch .setattr (json , "_json_data" , json_data )
136
+ db_request .matchdict = {"name" : project .normalized_name }
132
137
133
- rvalue = json .json_project (project , db_request )
138
+ rvalue = json .json_project (db_request )
134
139
135
140
assert rvalue is data
136
141
assert json_data .calls == [
@@ -156,8 +161,9 @@ def test_latest_release_yanked(self, monkeypatch, db_request):
156
161
lambda request , project , release , * , all_releases : data
157
162
)
158
163
monkeypatch .setattr (json , "_json_data" , json_data )
164
+ db_request .matchdict = {"name" : project .normalized_name }
159
165
160
- rvalue = json .json_project (project , db_request )
166
+ rvalue = json .json_project (db_request )
161
167
162
168
assert rvalue is data
163
169
assert json_data .calls == [
@@ -184,8 +190,9 @@ def test_all_non_prereleases_yanked(self, monkeypatch, db_request):
184
190
lambda request , project , release , * , all_releases : data
185
191
)
186
192
monkeypatch .setattr (json , "_json_data" , json_data )
193
+ db_request .matchdict = {"name" : project .normalized_name }
187
194
188
- rvalue = json .json_project (project , db_request )
195
+ rvalue = json .json_project (db_request )
189
196
190
197
assert rvalue is data
191
198
assert json_data .calls == [
@@ -254,8 +261,9 @@ def test_renders(self, pyramid_config, db_request, db_session):
254
261
je = JournalEntryFactory .create (name = project .name , submitted_by = user )
255
262
256
263
db_request .route_url = pretend .call_recorder (lambda * args , ** kw : url )
264
+ db_request .matchdict = {"name" : project .normalized_name }
257
265
258
- result = json .json_project (project , db_request )
266
+ result = json .json_project (db_request )
259
267
260
268
assert set (db_request .route_url .calls ) == {
261
269
pretend .call ("packaging.file" , path = files [0 ].path ),
@@ -405,6 +413,7 @@ def test_renders(self, pyramid_config, db_request, db_session):
405
413
class TestJSONProjectSlash :
406
414
def test_normalizing_redirects (self , db_request ):
407
415
project = ProjectFactory .create ()
416
+ ReleaseFactory .create (project = project , version = "1.0" )
408
417
409
418
name = project .name .lower ()
410
419
if name == project .normalized_name :
@@ -415,7 +424,7 @@ def test_normalizing_redirects(self, db_request):
415
424
lambda name : "/project/the-redirect/"
416
425
)
417
426
418
- resp = json .json_project_slash (project , db_request )
427
+ resp = json .json_project_slash (db_request )
419
428
420
429
assert isinstance (resp , HTTPMovedPermanently )
421
430
assert resp .headers ["Location" ] == "/project/the-redirect/"
@@ -434,12 +443,12 @@ def test_normalizing_redirects(self, db_request):
434
443
if name == release .project .normalized_name :
435
444
name = release .project .name .upper ()
436
445
437
- db_request .matchdict = {"name" : name }
446
+ db_request .matchdict = {"name" : name , "version" : "3.0" }
438
447
db_request .current_route_path = pretend .call_recorder (
439
448
lambda name : "/project/the-redirect/3.0/"
440
449
)
441
450
442
- resp = json .json_release (release , db_request )
451
+ resp = json .json_release (db_request )
443
452
444
453
assert isinstance (resp , HTTPMovedPermanently )
445
454
assert resp .headers ["Location" ] == "/project/the-redirect/3.0/"
@@ -448,6 +457,13 @@ def test_normalizing_redirects(self, db_request):
448
457
pretend .call (name = release .project .normalized_name )
449
458
]
450
459
460
+ def test_missing_release (self , db_request ):
461
+ project = ProjectFactory .create ()
462
+ db_request .matchdict = {"name" : project .normalized_name , "version" : "3.0" }
463
+ resp = json .json_release (db_request )
464
+ assert isinstance (resp , HTTPNotFound )
465
+ _assert_has_cors_headers (resp .headers )
466
+
451
467
def test_detail_renders (self , pyramid_config , db_request , db_session ):
452
468
project = ProjectFactory .create (has_docs = True )
453
469
description_content_type = "text/x-rst"
@@ -510,8 +526,12 @@ def test_detail_renders(self, pyramid_config, db_request, db_session):
510
526
je = JournalEntryFactory .create (name = project .name , submitted_by = user )
511
527
512
528
db_request .route_url = pretend .call_recorder (lambda * args , ** kw : url )
529
+ db_request .matchdict = {
530
+ "name" : project .normalized_name ,
531
+ "version" : releases [3 ].canonical_version ,
532
+ }
513
533
514
- result = json .json_release (releases [ 3 ], db_request )
534
+ result = json .json_release (db_request )
515
535
516
536
assert set (db_request .route_url .calls ) == {
517
537
pretend .call ("packaging.file" , path = files [2 ].path ),
@@ -597,8 +617,12 @@ def test_minimal_renders(self, pyramid_config, db_request):
597
617
598
618
url = "/the/fake/url/"
599
619
db_request .route_url = pretend .call_recorder (lambda * args , ** kw : url )
620
+ db_request .matchdict = {
621
+ "name" : project .normalized_name ,
622
+ "version" : release .canonical_version ,
623
+ }
600
624
601
- result = json .json_release (release , db_request )
625
+ result = json .json_release (db_request )
602
626
603
627
assert set (db_request .route_url .calls ) == {
604
628
pretend .call ("packaging.file" , path = file .path ),
@@ -679,8 +703,12 @@ def test_vulnerabilities_renders(self, pyramid_config, db_request):
679
703
680
704
url = "/the/fake/url/"
681
705
db_request .route_url = pretend .call_recorder (lambda * args , ** kw : url )
706
+ db_request .matchdict = {
707
+ "name" : project .normalized_name ,
708
+ "version" : release .canonical_version ,
709
+ }
682
710
683
- result = json .json_release (release , db_request )
711
+ result = json .json_release (db_request )
684
712
685
713
assert result ["vulnerabilities" ] == [
686
714
{
@@ -704,12 +732,12 @@ def test_normalizing_redirects(self, db_request):
704
732
if name == release .project .normalized_name :
705
733
name = release .project .name .upper ()
706
734
707
- db_request .matchdict = {"name" : name }
735
+ db_request .matchdict = {"name" : name , "version" : "3.0" }
708
736
db_request .current_route_path = pretend .call_recorder (
709
737
lambda name : "/project/the-redirect/3.0/"
710
738
)
711
739
712
- resp = json .json_release_slash (release , db_request )
740
+ resp = json .json_release_slash (db_request )
713
741
714
742
assert isinstance (resp , HTTPMovedPermanently )
715
743
assert resp .headers ["Location" ] == "/project/the-redirect/3.0/"
0 commit comments