1
1
from unittest import TestCase
2
2
3
- from cyclonedx .model .vulnerability import VulnerabilityRating
3
+ from cyclonedx .model .vulnerability import VulnerabilityRating , VulnerabilitySeverity , VulnerabilitySourceType
4
4
5
5
6
6
class TestModelVulnerability (TestCase ):
@@ -16,3 +16,63 @@ def test_v_rating_scores_base_only(self):
16
16
def test_v_rating_scores_all (self ):
17
17
vr = VulnerabilityRating (score_base = 1.0 , score_impact = 3.5 , score_exploitability = 5.6 )
18
18
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