1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.decima.core.requirement;
28
29 import gov.nist.secauto.decima.core.assessment.result.ResultStatus;
30 import gov.nist.secauto.decima.core.assessment.result.Severity;
31 import gov.nist.secauto.decima.core.assessment.result.TestStatus;
32
33 public enum RequirementType {
34 MUST(Severity.ERROR, ResultStatus.PASS, ResultStatus.PASS, ResultStatus.FAIL, ResultStatus.WARNING),
35 MUST_NOT(Severity.ERROR, ResultStatus.PASS, ResultStatus.PASS, ResultStatus.FAIL, ResultStatus.WARNING),
36 SHOULD(Severity.WARNING, ResultStatus.PASS, ResultStatus.PASS, ResultStatus.WARNING, ResultStatus.WARNING),
37 SHOULD_NOT(Severity.WARNING, ResultStatus.PASS, ResultStatus.PASS, ResultStatus.WARNING, ResultStatus.WARNING),
38 MAY(Severity.INFO, ResultStatus.PASS, ResultStatus.PASS, ResultStatus.INFORMATIONAL, ResultStatus.INFORMATIONAL),
39 INFORMATIONAL(
40 Severity.INFO,
41 ResultStatus.INFORMATIONAL,
42 ResultStatus.INFORMATIONAL,
43 ResultStatus.INFORMATIONAL,
44 ResultStatus.INFORMATIONAL);
45
46 private final Severity severity;
47 private final ResultStatus statusOnPass;
48 private final ResultStatus statusOnWarning;
49 private final ResultStatus statusOnFail;
50 private final ResultStatus statusOnConditionalFail;
51
52 private RequirementType(Severity severity, ResultStatus./../../gov/nist/secauto/decima/core/assessment/result/ResultStatus.html#ResultStatus">ResultStatus statusOnPass, ResultStatus statusOnWarning,
53 ResultStatus./../../gov/nist/secauto/decima/core/assessment/result/ResultStatus.html#ResultStatus">ResultStatus statusOnFail, ResultStatus statusOnConditionalFail) {
54 this.severity = severity;
55 this.statusOnPass = statusOnPass;
56 this.statusOnWarning = statusOnWarning;
57 this.statusOnFail = statusOnFail;
58 this.statusOnConditionalFail = statusOnConditionalFail;
59 }
60
61 public Severity getSeverity() {
62 return severity;
63 }
64
65
66
67
68
69
70
71
72
73
74 public ResultStatus resolveTestResult(TestStatus result, boolean conditional) {
75 ResultStatus retval;
76 switch (result) {
77 case FAIL:
78 if (conditional) {
79 retval = getStatusOnConditionalFail();
80 } else {
81 retval = getStatusOnFail();
82 }
83 break;
84 case PASS:
85 retval = getStatusOnPass();
86 break;
87 case WARNING:
88 retval = getStatusOnWarning();
89 break;
90 case INFORMATIONAL:
91 retval = ResultStatus.INFORMATIONAL;
92 break;
93 default:
94 throw new IllegalStateException("Unknown test status: " + result.toString());
95 }
96 return retval;
97 }
98
99 public ResultStatus getStatusOnPass() {
100 return statusOnPass;
101 }
102
103 public ResultStatus getStatusOnWarning() {
104 return statusOnWarning;
105 }
106
107 public ResultStatus getStatusOnFail() {
108 return statusOnFail;
109 }
110
111 public ResultStatus getStatusOnConditionalFail() {
112 return statusOnConditionalFail;
113 }
114
115 }