Skip to content

Commit 9db3464

Browse files
committed
Feat: test for apiv2 and views
Signed-off-by: RISHI GARG <134256793+Rishi-source@users.noreply.github.com>
1 parent 0d27c7c commit 9db3464

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

vulnerabilities/tests/test_api_v2.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,23 @@ def test_retrieve_vulnerability_detail(self):
9292
self.assertEqual(len(response.data["weaknesses"]), 1)
9393
self.assertEqual(len(response.data["references"]), 1)
9494

95+
def test_filter_packages_by_vulnerability_status(self):
96+
vulnerability = Vulnerability.objects.create(
97+
vulnerability_id="VCID-FILTER", summary="Test vulnerability for is_vulnerable filter"
98+
)
99+
self.package1.affected_by_vulnerabilities.add(vulnerability)
100+
url = reverse("package-v2-list")
101+
with self.assertNumQueries(20):
102+
response = self.client.get(url, {"is_vulnerable": "true"}, format="json")
103+
self.assertEqual(response.status_code, status.HTTP_200_OK)
104+
self.assertEqual(len(response.data["results"]["packages"]), 1)
105+
self.assertEqual(response.data["results"]["packages"][0]["purl"], "pkg:pypi/django@3.2")
106+
with self.assertNumQueries(20):
107+
response = self.client.get(url, {"is_vulnerable": "false"}, format="json")
108+
self.assertEqual(response.status_code, status.HTTP_200_OK)
109+
self.assertEqual(len(response.data["results"]["packages"]), 1)
110+
self.assertEqual(response.data["results"]["packages"][0]["purl"], "pkg:npm/lodash@4.17.20")
111+
95112
def test_filter_vulnerability_by_vulnerability_id(self):
96113
"""
97114
Test filtering vulnerabilities by vulnerability_id.

vulnerabilities/tests/test_view.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,29 @@ def test_package_detail_view(self):
7777
package = PackageDetails(kwargs={"purl": "pkg:nginx/nginx@1.0.15"}).get_object()
7878
assert package.purl == "pkg:nginx/nginx@1.0.15"
7979

80+
def test_package_vulnerability_filter(self):
81+
vulnerability = Vulnerability.objects.create(
82+
vulnerability_id="VCID-TEST", summary="Test Vulnerability for filtering"
83+
)
84+
vulnerable_package = Package.objects.get(package_url="pkg:nginx/nginx@1.20.0")
85+
AffectedByPackageRelatedVulnerability.objects.create(
86+
vulnerability=vulnerability, package=vulnerable_package, created_by="test"
87+
)
88+
response = self.client.get("/packages/search?search=nginx&vulnerable_only=true")
89+
self.assertEqual(response.status_code, 200)
90+
self.assertIn(vulnerable_package.purl, str(response.content))
91+
self.assertNotIn("pkg:nginx/nginx@1.21.0", str(response.content))
92+
93+
response = self.client.get("/packages/search?search=nginx&vulnerable_only=false")
94+
self.assertEqual(response.status_code, 200)
95+
self.assertNotIn(vulnerable_package.purl, str(response.content))
96+
self.assertIn("pkg:nginx/nginx@1.21.0", str(response.content))
97+
98+
response = self.client.get("/packages/search?search=nginx")
99+
self.assertEqual(response.status_code, 200)
100+
self.assertIn(vulnerable_package.purl, str(response.content))
101+
self.assertIn("pkg:nginx/nginx@1.21.0", str(response.content))
102+
80103
def test_package_view_with_purl_fragment(self):
81104
qs = PackageSearch().get_queryset(query="nginx@1.0.15")
82105
pkgs = list(qs)

0 commit comments

Comments
 (0)