From 639bbf81803915111d7223e6178ebecd091f75f0 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Thu, 26 Jan 2023 22:19:57 +0530 Subject: [PATCH 1/3] Add aliases at package endpoint Signed-off-by: Tushar Goel --- vulnerabilities/api.py | 33 ++++++++++++++++--------------- vulnerabilities/tests/test_api.py | 6 ++++++ 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/vulnerabilities/api.py b/vulnerabilities/api.py index 9c115bbaa..f74c2dc33 100644 --- a/vulnerabilities/api.py +++ b/vulnerabilities/api.py @@ -53,22 +53,6 @@ class Meta: fields = ["url", "purl", "is_vulnerable"] -class VulnSerializerRefsAndSummary(serializers.HyperlinkedModelSerializer): - """ - Lookup vulnerabilities references by aliases (such as a CVE). - """ - - fixed_packages = MinimalPackageSerializer( - many=True, source="filtered_fixed_packages", read_only=True - ) - - references = VulnerabilityReferenceSerializer(many=True, source="vulnerabilityreference_set") - - class Meta: - model = Vulnerability - fields = ["url", "vulnerability_id", "summary", "references", "fixed_packages"] - - class MinimalVulnerabilitySerializer(serializers.HyperlinkedModelSerializer): """ Lookup vulnerabilities by aliases (such as a CVE). @@ -89,6 +73,23 @@ class Meta: fields = ["alias"] +class VulnSerializerRefsAndSummary(serializers.HyperlinkedModelSerializer): + """ + Lookup vulnerabilities references by aliases (such as a CVE). + """ + + fixed_packages = MinimalPackageSerializer( + many=True, source="filtered_fixed_packages", read_only=True + ) + + references = VulnerabilityReferenceSerializer(many=True, source="vulnerabilityreference_set") + aliases = AliasSerializer(many=True, source="alias") + + class Meta: + model = Vulnerability + fields = ["url", "vulnerability_id", "summary", "references", "fixed_packages", "aliases"] + + class VulnerabilitySerializer(serializers.HyperlinkedModelSerializer): fixed_packages = MinimalPackageSerializer( diff --git a/vulnerabilities/tests/test_api.py b/vulnerabilities/tests/test_api.py index 37dd9aec0..7f87d82c0 100644 --- a/vulnerabilities/tests/test_api.py +++ b/vulnerabilities/tests/test_api.py @@ -296,6 +296,7 @@ def setUp(self): vuln1 = Vulnerability.objects.create( summary="test-vuln1", ) + alias = Alias.objects.create(alias="CVE-2019-1234", vulnerability=vuln1) self.vuln1 = vuln1 PackageRelatedVulnerability.objects.create( package=self.package, @@ -340,6 +341,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "summary": "test-vuln1", "references": [], "fixed_packages": [], + "aliases": [{"alias": "CVE-2019-1234"}], } ], "fixing_vulnerabilities": [ @@ -355,6 +357,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "is_vulnerable": True, } ], + "aliases": [], }, ], "unresolved_vulnerabilities": [ @@ -364,6 +367,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "summary": "test-vuln1", "references": [], "fixed_packages": [], + "aliases": [{"alias": "CVE-2019-1234"}], } ], } @@ -392,6 +396,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self): "is_vulnerable": True, } ], + "aliases": [], } ], "fixing_vulnerabilities": [], @@ -408,6 +413,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self): "is_vulnerable": True, } ], + "aliases": [], } ], } From 7734db6e5f8a84f003deed18abea0c32dfd6d6d1 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Fri, 27 Jan 2023 17:45:51 +0530 Subject: [PATCH 2/3] Address review comments Signed-off-by: Tushar Goel --- vulnerabilities/api.py | 6 ++++++ vulnerabilities/tests/test_api.py | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/vulnerabilities/api.py b/vulnerabilities/api.py index f74c2dc33..af8e5d889 100644 --- a/vulnerabilities/api.py +++ b/vulnerabilities/api.py @@ -78,6 +78,12 @@ class VulnSerializerRefsAndSummary(serializers.HyperlinkedModelSerializer): Lookup vulnerabilities references by aliases (such as a CVE). """ + def to_representation(self, instance): + data = super().to_representation(instance) + aliases = [alias["alias"] for alias in data["aliases"]] + data["aliases"] = aliases + return data + fixed_packages = MinimalPackageSerializer( many=True, source="filtered_fixed_packages", read_only=True ) diff --git a/vulnerabilities/tests/test_api.py b/vulnerabilities/tests/test_api.py index 7f87d82c0..cb7468459 100644 --- a/vulnerabilities/tests/test_api.py +++ b/vulnerabilities/tests/test_api.py @@ -296,7 +296,9 @@ def setUp(self): vuln1 = Vulnerability.objects.create( summary="test-vuln1", ) - alias = Alias.objects.create(alias="CVE-2019-1234", vulnerability=vuln1) + Alias.objects.create(alias="CVE-2019-1234", vulnerability=vuln1) + Alias.objects.create(alias="GMS-1234-4321", vulnerability=vuln1) + Alias.objects.create(alias="CVE-2029-1234", vulnerability=vuln) self.vuln1 = vuln1 PackageRelatedVulnerability.objects.create( package=self.package, @@ -341,7 +343,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "summary": "test-vuln1", "references": [], "fixed_packages": [], - "aliases": [{"alias": "CVE-2019-1234"}], + "aliases": ["CVE-2019-1234", "GMS-1234-4321"], } ], "fixing_vulnerabilities": [ @@ -357,7 +359,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "is_vulnerable": True, } ], - "aliases": [], + "aliases": ["CVE-2029-1234"], }, ], "unresolved_vulnerabilities": [ @@ -367,7 +369,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self): "summary": "test-vuln1", "references": [], "fixed_packages": [], - "aliases": [{"alias": "CVE-2019-1234"}], + "aliases": ["CVE-2019-1234", "GMS-1234-4321"], } ], } From 6e31d1d58f3d891cf085b155b058d769d2e46b5a Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Fri, 27 Jan 2023 17:56:21 +0530 Subject: [PATCH 3/3] Fix tests Signed-off-by: Tushar Goel --- vulnerabilities/tests/test_api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vulnerabilities/tests/test_api.py b/vulnerabilities/tests/test_api.py index cb7468459..d02808e16 100644 --- a/vulnerabilities/tests/test_api.py +++ b/vulnerabilities/tests/test_api.py @@ -398,7 +398,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self): "is_vulnerable": True, } ], - "aliases": [], + "aliases": ["CVE-2029-1234"], } ], "fixing_vulnerabilities": [], @@ -415,7 +415,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self): "is_vulnerable": True, } ], - "aliases": [], + "aliases": ["CVE-2029-1234"], } ], }