Skip to content

Commit c6329bc

Browse files
committed
Add tests for API and views
Signed-off-by: Tushar Goel <[email protected]>
1 parent 6fe73c7 commit c6329bc

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

vulnerabilities/tests/test_fix_api.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,13 @@ def test_api_with_all_vulnerable_packages(self):
281281
"pkg:generic/nginx/test@9",
282282
]
283283

284+
def test_api_with_ignorning_qualifiers(self):
285+
response = self.csrf_client.get(
286+
f"/api/packages/?purl=pkg:generic/nginx/test@9?foo=bar", format="json"
287+
).data
288+
assert response["count"] == 1
289+
assert response["results"][0]["purl"] == "pkg:generic/nginx/test@9"
290+
284291

285292
class CPEApi(TestCase):
286293
def setUp(self):
@@ -353,7 +360,7 @@ def setUp(self):
353360
attrs = {k: v for k, v in purl.to_dict().items() if v}
354361
Package.objects.create(**attrs)
355362

356-
def test_api_response(self):
363+
def test_bulk_api_response(self):
357364
request_body = {
358365
"purls": self.packages,
359366
}
@@ -364,6 +371,30 @@ def test_api_response(self):
364371
).json()
365372
assert len(response) == 13
366373

374+
def test_bulk_api_response_with_ignoring_qualifiers(self):
375+
request_body = {
376+
"purls": ["pkg:nginx/[email protected]?qualifiers=dev"],
377+
}
378+
response = self.csrf_client.post(
379+
"/api/packages/bulk_search",
380+
data=json.dumps(request_body),
381+
content_type="application/json",
382+
).json()
383+
assert len(response) == 1
384+
assert response[0]["purl"] == "pkg:nginx/[email protected]"
385+
386+
def test_bulk_api_response_with_ignoring_subpath(self):
387+
request_body = {
388+
"purls": ["pkg:nginx/[email protected]#dev/subpath"],
389+
}
390+
response = self.csrf_client.post(
391+
"/api/packages/bulk_search",
392+
data=json.dumps(request_body),
393+
content_type="application/json",
394+
).json()
395+
assert len(response) == 1
396+
assert response[0]["purl"] == "pkg:nginx/[email protected]"
397+
367398

368399
class BulkSearchAPICPE(TestCase):
369400
def setUp(self):

vulnerabilities/tests/test_view.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,37 @@
99

1010
from django.test import Client
1111
from django.test import TestCase
12+
from packageurl import PackageURL
1213

1314
from vulnerabilities.models import Alias
15+
from vulnerabilities.models import Package
1416
from vulnerabilities.models import Vulnerability
17+
from vulnerabilities.views import PackageSearch
1518

1619

1720
class PackageSearchTestCase(TestCase):
1821
def setUp(self):
1922
self.client = Client()
23+
packages = [
24+
"pkg:nginx/[email protected]",
25+
"pkg:nginx/[email protected]",
26+
"pkg:nginx/[email protected]",
27+
"pkg:nginx/[email protected]",
28+
"pkg:nginx/[email protected]",
29+
"pkg:nginx/[email protected]",
30+
"pkg:nginx/[email protected]",
31+
"pkg:nginx/[email protected]",
32+
"pkg:nginx/[email protected]",
33+
"pkg:nginx/[email protected]",
34+
"pkg:nginx/[email protected]",
35+
"pkg:nginx/[email protected]",
36+
"pkg:nginx/[email protected]",
37+
]
38+
self.packages = packages
39+
for package in packages:
40+
purl = PackageURL.from_string(package)
41+
attrs = {k: v for k, v in purl.to_dict().items() if v}
42+
Package.objects.create(**attrs)
2043

2144
def test_packages_search_view_paginator(self):
2245
response = self.client.get("/packages/search?type=deb&name=&page=1")
@@ -28,6 +51,12 @@ def test_packages_search_view_paginator(self):
2851
response = self.client.get("/packages/search?type=&name=&page=")
2952
self.assertEqual(response.status_code, 200)
3053

54+
def test_package_view(self):
55+
qs = PackageSearch().get_queryset(query="pkg:nginx/[email protected]?foo=bar")
56+
pkgs = list(qs)
57+
self.assertEqual(len(pkgs), 1)
58+
self.assertEqual(pkgs[0].purl, "pkg:nginx/[email protected]")
59+
3160

3261
class VulnerabilitySearchTestCase(TestCase):
3362
def setUp(self):

0 commit comments

Comments
 (0)