Skip to content

Commit 00fd744

Browse files
author
Riku Häkli
committed
Add test for VulnerabilityAnalysis sorting
Signed-off-by: Riku Häkli <hakli.riku@gmail.com>
1 parent 036eb76 commit 00fd744

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

tests/test_model_vulnerability.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@
2020
from unittest import TestCase
2121

2222
from cyclonedx.model import XsUri
23-
from cyclonedx.model.impact_analysis import ImpactAnalysisAffectedStatus
23+
from cyclonedx.model.impact_analysis import (
24+
ImpactAnalysisAffectedStatus,
25+
ImpactAnalysisJustification,
26+
ImpactAnalysisResponse,
27+
ImpactAnalysisState,
28+
)
2429
from cyclonedx.model.vulnerability import (
2530
BomTarget,
2631
BomTargetVersionRange,
2732
Vulnerability,
2833
VulnerabilityAdvisory,
34+
VulnerabilityAnalysis,
2935
VulnerabilityRating,
3036
VulnerabilityReference,
3137
VulnerabilityScoreSource,
@@ -334,3 +340,24 @@ def test_sort(self) -> None:
334340
sorted_targets = sorted(targets)
335341
expected_targets = reorder(targets, expected_order)
336342
self.assertListEqual(sorted_targets, expected_targets)
343+
344+
345+
class TestModelVulnerabilityAnalysis(TestCase):
346+
347+
def test_sort(self) -> None:
348+
# expected sort order: ([state], [justification], [responses], [detail], [first_issued], [last_updated])
349+
expected_order = [3, 1, 0, 2, 5, 4]
350+
analyses = [
351+
VulnerabilityAnalysis(state=ImpactAnalysisState.EXPLOITABLE),
352+
VulnerabilityAnalysis(state=ImpactAnalysisState.EXPLOITABLE,
353+
responses=[ImpactAnalysisResponse.CAN_NOT_FIX]),
354+
VulnerabilityAnalysis(state=ImpactAnalysisState.NOT_AFFECTED,
355+
justification=ImpactAnalysisJustification.CODE_NOT_PRESENT),
356+
VulnerabilityAnalysis(state=ImpactAnalysisState.EXPLOITABLE,
357+
justification=ImpactAnalysisJustification.REQUIRES_ENVIRONMENT),
358+
VulnerabilityAnalysis(first_issued=datetime(2024, 4, 4), last_updated=datetime(2025, 5, 5)),
359+
VulnerabilityAnalysis(first_issued=datetime(2023, 3, 3), last_updated=datetime(2023, 3, 3)),
360+
]
361+
sorted_analyses = sorted(analyses)
362+
expected_analyses = reorder(analyses, expected_order)
363+
self.assertListEqual(sorted_analyses, expected_analyses)

0 commit comments

Comments
 (0)