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.xml.testing.assertion;
28
29 import gov.nist.secauto.decima.core.assessment.result.AssessmentResults;
30 import gov.nist.secauto.decima.core.assessment.result.DerivedRequirementResult;
31 import gov.nist.secauto.decima.core.assessment.result.ResultStatus;
32 import gov.nist.secauto.decima.xml.document.XMLDocument;
33
34 import org.apache.commons.lang3.builder.ToStringBuilder;
35 import org.apache.commons.lang3.builder.ToStringStyle;
36 import org.apache.logging.log4j.LogManager;
37 import org.apache.logging.log4j.Logger;
38 import org.junit.Assert;
39
40 public class DerivedRequirementAssertion
41 extends AbstractAssertion {
42 private static final Logger log = LogManager.getLogger(DerivedRequirementAssertion.class);
43
44 private final String derivedRequirement;
45
46 public DerivedRequirementAssertion(String derivedRequirement, ResultStatus status) {
47 super(status);
48 this.derivedRequirement = derivedRequirement;
49 }
50
51 public String getDerivedRequirement() {
52 return derivedRequirement;
53 }
54
55 @Override
56 public void evaluate(XMLDocument doc, AssessmentResults results, AssertionTracker tracker)
57 throws AssertionError, AssertionException {
58 DerivedRequirementResult result = results.getDerivedRequirementResult(getDerivedRequirement());
59 ResultStatus actualStatus;
60 if (result == null) {
61 log.warn(
62 "Requirement '" + getDerivedRequirement() + "' not found in the result set. Assuming it was not checked.");
63 actualStatus = ResultStatus.NOT_APPLICABLE;
64 } else {
65 actualStatus = result.getStatus();
66 tracker.assertRequirement(result);
67 }
68 Assert.assertSame(getResultStatus(), actualStatus);
69 }
70
71 @Override
72 public String toString() {
73 ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
74 builder.append("derivedId", getDerivedRequirement());
75 builder.append("result", getResultStatus());
76 return builder.build();
77 }
78
79 }