Skip to content

Commit 770d22f

Browse files
authored
Merge pull request #1104 from TG1999/add_alias_to_package_endpoint
Add vulnerability aliases at package level in API
2 parents d0414eb + 6e31d1d commit 770d22f

File tree

2 files changed

+31
-16
lines changed

2 files changed

+31
-16
lines changed

vulnerabilities/api.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,6 @@ class Meta:
5353
fields = ["url", "purl", "is_vulnerable"]
5454

5555

56-
class VulnSerializerRefsAndSummary(serializers.HyperlinkedModelSerializer):
57-
"""
58-
Lookup vulnerabilities references by aliases (such as a CVE).
59-
"""
60-
61-
fixed_packages = MinimalPackageSerializer(
62-
many=True, source="filtered_fixed_packages", read_only=True
63-
)
64-
65-
references = VulnerabilityReferenceSerializer(many=True, source="vulnerabilityreference_set")
66-
67-
class Meta:
68-
model = Vulnerability
69-
fields = ["url", "vulnerability_id", "summary", "references", "fixed_packages"]
70-
71-
7256
class MinimalVulnerabilitySerializer(serializers.HyperlinkedModelSerializer):
7357
"""
7458
Lookup vulnerabilities by aliases (such as a CVE).
@@ -89,6 +73,29 @@ class Meta:
8973
fields = ["alias"]
9074

9175

76+
class VulnSerializerRefsAndSummary(serializers.HyperlinkedModelSerializer):
77+
"""
78+
Lookup vulnerabilities references by aliases (such as a CVE).
79+
"""
80+
81+
def to_representation(self, instance):
82+
data = super().to_representation(instance)
83+
aliases = [alias["alias"] for alias in data["aliases"]]
84+
data["aliases"] = aliases
85+
return data
86+
87+
fixed_packages = MinimalPackageSerializer(
88+
many=True, source="filtered_fixed_packages", read_only=True
89+
)
90+
91+
references = VulnerabilityReferenceSerializer(many=True, source="vulnerabilityreference_set")
92+
aliases = AliasSerializer(many=True, source="alias")
93+
94+
class Meta:
95+
model = Vulnerability
96+
fields = ["url", "vulnerability_id", "summary", "references", "fixed_packages", "aliases"]
97+
98+
9299
class VulnerabilitySerializer(serializers.HyperlinkedModelSerializer):
93100

94101
fixed_packages = MinimalPackageSerializer(

vulnerabilities/tests/test_api.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@ def setUp(self):
296296
vuln1 = Vulnerability.objects.create(
297297
summary="test-vuln1",
298298
)
299+
Alias.objects.create(alias="CVE-2019-1234", vulnerability=vuln1)
300+
Alias.objects.create(alias="GMS-1234-4321", vulnerability=vuln1)
301+
Alias.objects.create(alias="CVE-2029-1234", vulnerability=vuln)
299302
self.vuln1 = vuln1
300303
PackageRelatedVulnerability.objects.create(
301304
package=self.package,
@@ -340,6 +343,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self):
340343
"summary": "test-vuln1",
341344
"references": [],
342345
"fixed_packages": [],
346+
"aliases": ["CVE-2019-1234", "GMS-1234-4321"],
343347
}
344348
],
345349
"fixing_vulnerabilities": [
@@ -355,6 +359,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self):
355359
"is_vulnerable": True,
356360
}
357361
],
362+
"aliases": ["CVE-2029-1234"],
358363
},
359364
],
360365
"unresolved_vulnerabilities": [
@@ -364,6 +369,7 @@ def test_api_with_single_vulnerability_and_fixed_package(self):
364369
"summary": "test-vuln1",
365370
"references": [],
366371
"fixed_packages": [],
372+
"aliases": ["CVE-2019-1234", "GMS-1234-4321"],
367373
}
368374
],
369375
}
@@ -392,6 +398,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self):
392398
"is_vulnerable": True,
393399
}
394400
],
401+
"aliases": ["CVE-2029-1234"],
395402
}
396403
],
397404
"fixing_vulnerabilities": [],
@@ -408,6 +415,7 @@ def test_api_with_single_vulnerability_and_vulnerable_package(self):
408415
"is_vulnerable": True,
409416
}
410417
],
418+
"aliases": ["CVE-2029-1234"],
411419
}
412420
],
413421
}

0 commit comments

Comments
 (0)