|
4 | 4 | import com.google.gson.Gson;
|
5 | 5 | import com.google.gson.GsonBuilder;
|
6 | 6 |
|
| 7 | +import io.opentdf.platform.sdk.Manifest.ManifestDeserializer; |
| 8 | + |
7 | 9 | import java.nio.charset.Charset;
|
8 | 10 | import java.nio.charset.StandardCharsets;
|
9 | 11 | import java.util.List;
|
10 | 12 | import java.util.Map;
|
11 | 13 |
|
| 14 | +import static org.junit.Assert.assertNotNull; |
12 | 15 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
13 | 16 |
|
14 | 17 | public class ManifestTest {
|
@@ -62,7 +65,9 @@ void testManifestMarshalAndUnMarshal() {
|
62 | 65 | "}";
|
63 | 66 |
|
64 | 67 | GsonBuilder gsonBuilder = new GsonBuilder();
|
65 |
| - Gson gson = gsonBuilder.setPrettyPrinting().create(); |
| 68 | + Gson gson = gsonBuilder.setPrettyPrinting() |
| 69 | + .registerTypeAdapter(Manifest.class, new ManifestDeserializer()) |
| 70 | + .create(); |
66 | 71 | Manifest manifest = gson.fromJson(kManifestJsonFromTDF, Manifest.class);
|
67 | 72 |
|
68 | 73 | // Test payload
|
@@ -90,4 +95,69 @@ void testManifestMarshalAndUnMarshal() {
|
90 | 95 |
|
91 | 96 | assertEquals(manifest, deserializedAgain, "something changed when we deserialized -> serialized -> deserialized");
|
92 | 97 | }
|
| 98 | + |
| 99 | + @Test |
| 100 | + void testAssertionNull() { |
| 101 | + String kManifestJsonFromTDF = "{\n" + |
| 102 | + " \"encryptionInformation\": {\n" + |
| 103 | + " \"integrityInformation\": {\n" + |
| 104 | + " \"encryptedSegmentSizeDefault\": 1048604,\n" + |
| 105 | + " \"rootSignature\": {\n" + |
| 106 | + " \"alg\": \"HS256\",\n" + |
| 107 | + " \"sig\": \"N2Y1ZjJlYWE4N2EzNjc2Nzc3NzgxNGU2ZGE1NmI4NDNhZTI5ZWY5NDc2OGI1ZTMzYTIyMTU4MDBlZTY3NzQzNA==\"\n" + |
| 108 | + " },\n" + |
| 109 | + " \"segmentHashAlg\": \"GMAC\",\n" + |
| 110 | + " \"segmentSizeDefault\": 1048576,\n" + |
| 111 | + " \"segments\": [\n" + |
| 112 | + " {\n" + |
| 113 | + " \"encryptedSegmentSize\": 41,\n" + |
| 114 | + " \"hash\": \"ZWEyZTkwYjZiZThmYWZhNzg5ZmNjOWIyZTA2Njg5OTQ=\",\n" + |
| 115 | + " \"segmentSize\": 1048576\n" + |
| 116 | + " }\n" + |
| 117 | + " ]\n" + |
| 118 | + " },\n" + |
| 119 | + " \"keyAccess\": [\n" + |
| 120 | + " {\n" + |
| 121 | + " \"policyBinding\": {\n" + |
| 122 | + " \"alg\": \"HS256\",\n" + |
| 123 | + " \"hash\": \"YTgzNThhNzc5NWRhMjdjYThlYjk4ZmNmODliNzc2Y2E5ZmZiZDExZDQ3OTM5ODFjZTRjNmE3MmVjOTUzZTFlMA==\"\n" + |
| 124 | + " },\n" + |
| 125 | + " \"protocol\": \"kas\",\n" + |
| 126 | + " \"type\": \"wrapped\",\n" + |
| 127 | + " \"url\": \"http://localhost:65432/kas\",\n" + |
| 128 | + " \"wrappedKey\": \"dJ3PdscXWvLv/juSkL7EMhl4lgLSBfI9EeoG2ct6NeSwPkPm/ieMF6ryDQjGeqZttoLlx2qBCVpik/BooGd/FtpYMIF/7a5RFTJ3G+o4Lww/zG6zIgV2APEPO+Gp7ORlFyMNJfn6Tj8ChTweKBqfXEXLihTV6sTZFtsWjdV96Z4KXbLe8tGpkXBpUAsSlmjcDJ920vrqnp3dvt2GwfmAiRWYCMXxnqUECqN5kVXMJywcvHatv2ZJSA/ixjDOrix+MocDJ69K/yFA17DXgfjf5X4SLyS0XgaZcXsdACBb+ogBlPw6vAbBrAyqI0Vi1msMRYNDS+FTl1yWEXl1HpyyCw==\"\n" + |
| 129 | + " }\n" + |
| 130 | + " ],\n" + |
| 131 | + " \"method\": {\n" + |
| 132 | + " \"algorithm\": \"AES-256-GCM\",\n" + |
| 133 | + " \"isStreamable\": true,\n" + |
| 134 | + " \"iv\": \"tozen81HLtZktNOP\"\n" + |
| 135 | + " },\n" + |
| 136 | + " \"policy\": \"eyJib2R5Ijp7ImRhdGFBdHRyaWJ1dGVzIjpbXSwiZGlzc2VtIjpbXX0sInV1aWQiOiJiNTM3MDllMy03NmE3LTRmYzctOGEwZi1mZDBhNjcyNmVhM2YifQ==\",\n" + |
| 137 | + " \"type\": \"split\"\n" + |
| 138 | + " },\n" + |
| 139 | + " \"payload\": {\n" + |
| 140 | + " \"isEncrypted\": true,\n" + |
| 141 | + " \"mimeType\": \"application/octet-stream\",\n" + |
| 142 | + " \"protocol\": \"zip\",\n" + |
| 143 | + " \"type\": \"reference\",\n" + |
| 144 | + " \"url\": \"0.payload\"\n" + |
| 145 | + " },\n" + |
| 146 | + " \"assertions\": null\n"+ |
| 147 | + "}"; |
| 148 | + |
| 149 | + GsonBuilder gsonBuilder = new GsonBuilder(); |
| 150 | + Gson gson = gsonBuilder.setPrettyPrinting() |
| 151 | + .registerTypeAdapter(Manifest.class, new ManifestDeserializer()) |
| 152 | + .create(); |
| 153 | + Manifest manifest = gson.fromJson(kManifestJsonFromTDF, Manifest.class); |
| 154 | + |
| 155 | + // Test payload for sanity check |
| 156 | + assertEquals(manifest.payload.url, "0.payload"); |
| 157 | + assertEquals(manifest.payload.isEncrypted, true); |
| 158 | + // Test assertion deserialization |
| 159 | + assertNotNull(manifest.assertions); |
| 160 | + assertEquals(manifest.assertions.size(), 0); |
| 161 | + |
| 162 | + } |
93 | 163 | }
|
0 commit comments