-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathTLPmarkingsSpec.groovy
More file actions
122 lines (92 loc) · 4.85 KB
/
TLPmarkingsSpec.groovy
File metadata and controls
122 lines (92 loc) · 4.85 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package stix.datamarkings
import org.skyscreamer.jsonassert.JSONAssert
import org.skyscreamer.jsonassert.JSONCompareMode
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import io.digitalstate.stix.bundle.Bundle
import io.digitalstate.stix.common.StixInstant
import io.digitalstate.stix.datamarkings.MarkingDefinition
import io.digitalstate.stix.datamarkings.objects.Tlps
import io.digitalstate.stix.json.StixParsers
import io.digitalstate.stix.sdo.objects.Indicator
import spock.lang.Shared
import spock.lang.Specification
class TlpMarkingsSpec extends Specification {
@Shared
ObjectMapper mapper = new ObjectMapper()
def "TLP Defaults Creation Test: WHITE"() {
when: "Create TLP:white from pre-built TLPs"
MarkingDefinition originalMarkingDefinition = Tlps.TLP_WHITE
then: "Convert Marking Definition to Json"
JsonNode originalJson = mapper.readTree(originalMarkingDefinition.toJsonString())
String originalJsonString = mapper.writeValueAsString(originalJson)
// println "Original Json: ${originalJsonString}"
then: "Parse Json back into Marking Definition Object"
MarkingDefinition parsedMarkingDefinition = (MarkingDefinition)StixParsers.parseObject(originalJsonString)
MarkingDefinition parsedMarkingDefinitionGeneric = StixParsers.parse(originalJsonString, MarkingDefinition.class)
// println "Parsed Object: ${parsedMarkingDefinition}"
//@TODO needs to be setup to handle dehydrated object comparison
// then: "Parsed object should match Original object"
// assert originalMarkingDefinition == parsedMarkingDefinition
then: "Convert Parsed Marking Definition Object back to into Json"
JsonNode newJson = mapper.readTree(parsedMarkingDefinition.toJsonString())
String newJsonString = mapper.writeValueAsString(newJson)
// println "New Json: ${newJsonString}"
then: "New Json should match Original Json"
JSONAssert.assertEquals(originalJsonString, newJsonString, JSONCompareMode.NON_EXTENSIBLE)
}
def "Test indicator with Default TLP markings"() {
when: "Create TLP:green"
MarkingDefinition TlpGreen = Tlps.TLP_GREEN
StixInstant now = new StixInstant()
Indicator ind = Indicator.builder()
.id("indicator--59ccb738-921a-4941-8ab2-33da522bd4e1")
.created(now)
.modified(now)
.addLabel("malicious-activity")
.name("128.0.0.1")
.pattern("[ipv4-addr:value = '128.0.0.1']")
.validFrom(now)
.addObjectMarkingRef(TlpGreen)
.build()
then: "Convert Marking Definition to Json"
JsonNode originalJson = mapper.readTree(ind.toJsonString())
String originalJsonString = mapper.writeValueAsString(originalJson)
// println "Original Json: ${originalJsonString}"
then: "Parse Json back into Marking Definition Object"
Indicator parsed = (Indicator)StixParsers.parseObject(originalJsonString)
Indicator parsedGeneric = StixParsers.parse(originalJsonString, Indicator.class)
// println "Parsed Object: ${parsed}"
//@TODO needs to be setup to handle dehydrated object comparison
// then: "Parsed object should match Original object"
// assert originalMarkingDefinition == parsedMarkingDefinition
then: "Convert Parsed Marking Definition Object back to into Json"
JsonNode newJson = mapper.readTree(parsed.toJsonString())
String newJsonString = mapper.writeValueAsString(newJson)
// println "New Json: ${newJsonString}"
then: "New Json should match Original Json"
JSONAssert.assertEquals(originalJsonString, newJsonString, JSONCompareMode.NON_EXTENSIBLE)
}
def "bundle with statement and tlp"() {
when:"setup file access to bundle"
String bundleJson = getClass()
.getResource("/stix/baseline/json/sdo/markings/datamarkings.json").getText("UTF-8")
then: "Parse json into bundle"
Bundle bundle = (Bundle)StixParsers.parseBundle(bundleJson)
println bundle.inspect()
println bundle.toJsonString()
then: "Convert Bundle to Json"
JsonNode originalJson = mapper.readTree(bundle.toJsonString())
String originalJsonString = mapper.writeValueAsString(originalJson)
println "Original Json: ${originalJsonString}"
then: "Parse Json back into Bundle Object"
Bundle parsed = StixParsers.parseBundle(originalJsonString)
println "Parsed Object: ${parsed}"
then: "Convert Parsed Bundlen Object back to into Json"
JsonNode newJson = mapper.readTree(parsed.toJsonString())
String newJsonString = mapper.writeValueAsString(newJson)
println "New Json: ${newJsonString}"
then: "New Json should match Original Json"
JSONAssert.assertEquals(originalJsonString, newJsonString, JSONCompareMode.NON_EXTENSIBLE)
}
}