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.swid.builder;
28
29 import com.fasterxml.jackson.core.JsonFactory;
30 import com.fasterxml.jackson.core.JsonGenerator;
31
32 import gov.nist.secauto.swid.builder.output.CBOROutputHandler;
33 import gov.nist.secauto.swid.builder.output.JsonOutputHandler;
34 import gov.nist.secauto.swid.builder.output.XMLOutputHandler;
35 import gov.nist.secauto.swid.builder.resource.HashAlgorithm;
36
37 import org.junit.Rule;
38 import org.junit.Test;
39 import org.junit.rules.TemporaryFolder;
40
41 import java.io.BufferedOutputStream;
42 import java.io.File;
43 import java.io.FileOutputStream;
44 import java.io.IOException;
45 import java.io.OutputStream;
46 import java.net.URI;
47 import java.util.Collections;
48
49 public class SWIDBuilderTest {
50
51 @Rule
52 public TemporaryFolder folder = new TemporaryFolder();
53
54 private static SWIDBuilder buildSWID() {
55 SWIDBuilder builder = SWIDBuilder.create();
56
57
58
59
60
61
62
63
64 builder.name("ACME Roadrunner Detector 2013 Coyote Edition SP1").version("4.1.5")
65 .tagId("com.acme.rrd2013-ce-sp1-v4-1-5-0")
66 .addEntity(EntityBuilder.create().regid("acme.com").name("The ACME Corporation")
67 .addRole(KnownRole.SOFTWARE_CREATOR).addRole(KnownRole.TAG_CREATOR))
68 .addLink(LinkBuilder.create().rel("license").href(URI.create("http://www.gnu.org/licenses/gpl.txt")))
69 .addMeta(MetaBuilder.create().setProductBaseName("Roadrunner Detector").setColloquialVersion("2013")
70 .setEdition("coyote").setRevision("sp1"))
71 .newPayload().newFileResource(Collections.singletonList("rrdetector.exe")).size(532712)
72 .hash(HashAlgorithm.SHA_256, "a314fc2dc663ae7a6b6bc6787594057396e6b3f569cd50fd5ddb4d1bbafd2b6a");
73
74 return builder;
75 }
76
77 @Test
78 public void testCBOR() throws IOException, ValidationException {
79 SWIDBuilder builder = buildSWID();
80 File file = folder.newFile();
81 OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
82 new CBOROutputHandler().write(builder, os);
83 os.close();
84 System.out.println("CBOR: " + file.length());
85 }
86
87 @Test
88 public void testJson() throws IOException, ValidationException {
89 SWIDBuilder builder = buildSWID();
90 File file = folder.newFile();
91 OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
92 JsonFactory jsonFactory = new JsonFactory();
93 new JsonOutputHandler(jsonFactory) {
94
95
96
97
98
99
100
101 @Override
102 protected JsonGenerator newGenerator(OutputStream os) throws IOException {
103 JsonGenerator retval = super.newGenerator(os);
104 retval.useDefaultPrettyPrinter();
105 return retval;
106 }
107
108 }.write(builder, os);
109 os.close();
110 }
111
112 @Test
113 public void testXML() throws IOException, ValidationException {
114 SWIDBuilder builder = buildSWID();
115
116 File file = folder.newFile();
117
118 try (OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) {
119 new XMLOutputHandler().write(builder, os);
120 }
121 System.out.println("XML: " + file.length());
122 }
123
124 }