From 5d2a4c9e14f0d32ff62ec013f33d3a7400acde73 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Fri, 2 Sep 2022 03:51:40 +0530 Subject: [PATCH] Add namespace filter in packages api endpoint Signed-off-by: Tushar Goel --- CHANGELOG.rst | 2 ++ vulnerabilities/api.py | 10 +++++++++- vulnerabilities/tests/test_fix_api.py | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 164f9b031..3b0e5a7f4 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -68,6 +68,8 @@ Version v30.0.0 - Add is_vulnerable property in fixed and affected_packages. +- Add namespace filter in packages api endpoint. + Other: - we dropped calver to use a plain semver. diff --git a/vulnerabilities/api.py b/vulnerabilities/api.py index dbef74fa7..ae78f0505 100644 --- a/vulnerabilities/api.py +++ b/vulnerabilities/api.py @@ -190,7 +190,15 @@ class PackageFilterSet(filters.FilterSet): class Meta: model = Package - fields = ["name", "type", "version", "subpath", "purl", "packagerelatedvulnerability__fix"] + fields = [ + "name", + "type", + "version", + "subpath", + "purl", + "namespace", + "packagerelatedvulnerability__fix", + ] def filter_purl(self, queryset, name, value): purl = unquote(value) diff --git a/vulnerabilities/tests/test_fix_api.py b/vulnerabilities/tests/test_fix_api.py index 8bff0b382..db6491820 100644 --- a/vulnerabilities/tests/test_fix_api.py +++ b/vulnerabilities/tests/test_fix_api.py @@ -160,6 +160,14 @@ def test_api_response(self): response = self.csrf_client.get("/api/packages/", format="json").data self.assertEqual(response["count"], 11) + def test_api_with_namespace_filter(self): + response = self.csrf_client.get("/api/packages/?namespace=nginx", format="json").data + self.assertEqual(response["count"], 11) + + def test_api_with_wrong_namespace_filter(self): + response = self.csrf_client.get("/api/packages/?namespace=foo-bar", format="json").data + self.assertEqual(response["count"], 0) + def test_api_with_single_vulnerability_and_fixed_package(self): response = self.csrf_client.get(f"/api/packages/{self.package.id}", format="json").data assert response == {