Skip to content

Commit eb2c4ba

Browse files
authored
Add a link to the VulnerableCode app in the Vulnerability tab #4 (#69)
Signed-off-by: tdruez <tdruez@nexb.com>
1 parent f6a4843 commit eb2c4ba

3 files changed

Lines changed: 21 additions & 5 deletions

File tree

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ Release notes
3131
- Refactor the "Import manifest" feature as "Load SBOMs".
3232
https://github.com/nexB/dejacode/issues/61
3333

34+
- Add a vulnerability link to the VulnerableCode app in the Vulnerability tab.
35+
https://github.com/nexB/dejacode/issues/4
36+
3437
### Version 5.0.1
3538

3639
- Improve the stability of the "Check for new Package versions" feature.

component_catalog/tests/test_views.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3202,9 +3202,11 @@ def test_package_details_view_get_vulnerability_fields(self):
32023202
fields = get_vulnerability_fields(vulnerability={}, dataspace=self.dataspace)
32033203
self.assertEqual(fields[0], ("Summary", None, "Summary of the vulnerability"))
32043204

3205+
vulnerability_url = "http://public.vulnerablecode.io/vulnerabilities/VCID-pk3r-ga7k-aaap"
32053206
vulnerability = {
3206-
"vulnerability_id": "42d0a7c4-99e9-4506-b0c6-338ec2993147",
3207+
"vulnerability_id": "VCID-pk3r-ga7k-aaap",
32073208
"summary": "SQL Injection",
3209+
"resource_url": vulnerability_url,
32083210
"references": [
32093211
{
32103212
"reference_id": "",
@@ -3227,8 +3229,11 @@ def test_package_details_view_get_vulnerability_fields(self):
32273229
dataspace=self.dataspace,
32283230
)
32293231
self.assertEqual(fields[0], ("Summary", "SQL Injection", "Summary of the vulnerability"))
3230-
self.assertEqual(fields[1][0], "Fixed packages")
3231-
fixed_package_values = fields[1][1]
3232+
self.assertEqual(fields[1][0], "VulnerableCode URL")
3233+
url_as_link = f'<a href="{vulnerability_url}" target="_blank">{vulnerability_url}</a>'
3234+
self.assertEqual(fields[1][1], url_as_link)
3235+
self.assertEqual(fields[2][0], "Fixed packages")
3236+
fixed_package_values = fields[2][1]
32323237
self.assertIn("nginx/nginx@1.10.1", fixed_package_values)
32333238
self.assertIn(
32343239
'<a href="/packages/add/?package_url=pkg:nginx/nginx@1.10.1"',
@@ -3239,7 +3244,7 @@ def test_package_details_view_get_vulnerability_fields(self):
32393244
fixed_package_values,
32403245
)
32413246
self.assertEqual(
3242-
fields[2][0:2],
3247+
fields[3][0:2],
32433248
(
32443249
"Reference IDs",
32453250
'<a href="https://nvd.nist.gov/vuln/detail/CVE-2022-23305" target="_blank">'
@@ -3248,7 +3253,7 @@ def test_package_details_view_get_vulnerability_fields(self):
32483253
),
32493254
)
32503255
self.assertEqual(
3251-
fields[3][0:2],
3256+
fields[4][0:2],
32523257
(
32533258
"Reference URLs",
32543259
'<a target="_blank" href="http://www.openwall.com/lists/oss-security/2022/01/18/4" '

component_catalog/views.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,14 @@ def get_vulnerability_fields(vulnerability, dataspace):
312312
(_("Summary"), summary, "Summary of the vulnerability"),
313313
]
314314

315+
if vulnerability_url := vulnerability.get("resource_url"):
316+
vulnerability_url_help = "Link to the VulnerableCode app."
317+
url_as_link = format_html(
318+
'<a href="{vulnerability_url}" target="_blank">{vulnerability_url}</a>',
319+
vulnerability_url=vulnerability_url,
320+
)
321+
tab_fields.append((_("VulnerableCode URL"), url_as_link, vulnerability_url_help))
322+
315323
if include_fixed_packages:
316324
fixed_packages = vulnerability.get("fixed_packages", [])
317325
fixed_packages_sorted = natsorted(fixed_packages, key=itemgetter("purl"))

0 commit comments

Comments
 (0)