11from unittest import TestCase
22
3- from cyclonedx .model .vulnerability import VulnerabilityRating
3+ from cyclonedx .model .vulnerability import VulnerabilityRating , VulnerabilitySeverity , VulnerabilitySourceType
44
55
66class TestModelVulnerability (TestCase ):
@@ -16,3 +16,63 @@ def test_v_rating_scores_base_only(self):
1616 def test_v_rating_scores_all (self ):
1717 vr = VulnerabilityRating (score_base = 1.0 , score_impact = 3.5 , score_exploitability = 5.6 )
1818 self .assertTrue (vr .has_score ())
19+
20+ def test_v_severity_from_cvss_scores_single_critical (self ):
21+ self .assertEqual (
22+ VulnerabilitySeverity .get_from_cvss_scores (9.1 ),
23+ VulnerabilitySeverity .CRITICAL
24+ )
25+
26+ def test_v_severity_from_cvss_scores_multiple_critical (self ):
27+ self .assertEqual (
28+ VulnerabilitySeverity .get_from_cvss_scores ((9.1 , 9.5 )),
29+ VulnerabilitySeverity .CRITICAL
30+ )
31+
32+ def test_v_severity_from_cvss_scores_single_high (self ):
33+ self .assertEqual (
34+ VulnerabilitySeverity .get_from_cvss_scores (8.9 ),
35+ VulnerabilitySeverity .HIGH
36+ )
37+
38+ def test_v_severity_from_cvss_scores_single_medium (self ):
39+ self .assertEqual (
40+ VulnerabilitySeverity .get_from_cvss_scores (4.2 ),
41+ VulnerabilitySeverity .MEDIUM
42+ )
43+
44+ def test_v_severity_from_cvss_scores_single_low (self ):
45+ self .assertEqual (
46+ VulnerabilitySeverity .get_from_cvss_scores (1.1 ),
47+ VulnerabilitySeverity .LOW
48+ )
49+
50+ def test_v_severity_from_cvss_scores_single_none (self ):
51+ self .assertEqual (
52+ VulnerabilitySeverity .get_from_cvss_scores (0.0 ),
53+ VulnerabilitySeverity .NONE
54+ )
55+
56+ def test_v_severity_from_cvss_scores_multiple_high (self ):
57+ self .assertEqual (
58+ VulnerabilitySeverity .get_from_cvss_scores ((1.2 , 8.9 , 2.2 , 5.6 )),
59+ VulnerabilitySeverity .HIGH
60+ )
61+
62+ def test_v_source_parse_cvss3_1 (self ):
63+ self .assertEqual (
64+ VulnerabilitySourceType .get_from_vector ('CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N' ),
65+ VulnerabilitySourceType .CVSS_V3
66+ )
67+
68+ def test_v_source_parse_cvss2_1 (self ):
69+ self .assertEqual (
70+ VulnerabilitySourceType .get_from_vector ('CVSS:2.0/AV:N/AC:L/Au:N/C:N/I:N/A:C' ),
71+ VulnerabilitySourceType .CVSS_V2
72+ )
73+
74+ def test_v_source_parse_owasp_1 (self ):
75+ self .assertEqual (
76+ VulnerabilitySourceType .get_from_vector ('OWASP/K9:M1:O0:Z2/D1:X1:W1:L3/C2:I1:A1:T1/F1:R1:S2:P3/50' ),
77+ VulnerabilitySourceType .OWASP
78+ )
0 commit comments