aboutsummaryrefslogtreecommitdiffstats
path: root/rest-services/cbs-client/src/test/java/org/onap
diff options
context:
space:
mode:
authorFilip Krzywka <filip.krzywka@nokia.com>2019-02-19 13:33:45 +0100
committerFilip Krzywka <filip.krzywka@nokia.com>2019-02-20 11:48:44 +0000
commitfc88ac806f5650ec9f70c4849e3815132038ec5c (patch)
tree29a280701d5c5d532cd5a8b43a152b3a6fe53df8 /rest-services/cbs-client/src/test/java/org/onap
parent5020b150b594e4bb972a136156f744398eff8fd1 (diff)
Parse JsonObject to MerkleTree
Change-Id: I424eec2c4c47ddff1bff3ef612a7b31a62e1cf3e Issue-ID: DCAEGEN2-1254 Signed-off-by: Filip Krzywka <filip.krzywka@nokia.com>
Diffstat (limited to 'rest-services/cbs-client/src/test/java/org/onap')
-rw-r--r--rest-services/cbs-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/api/listener/MerkleTreeParserTest.java159
1 files changed, 159 insertions, 0 deletions
diff --git a/rest-services/cbs-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/api/listener/MerkleTreeParserTest.java b/rest-services/cbs-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/api/listener/MerkleTreeParserTest.java
new file mode 100644
index 00000000..080f8097
--- /dev/null
+++ b/rest-services/cbs-client/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/api/listener/MerkleTreeParserTest.java
@@ -0,0 +1,159 @@
+/*
+ * ============LICENSE_START====================================
+ * DCAEGEN2-SERVICES-SDK
+ * =========================================================
+ * Copyright (C) 2019 Nokia. All rights reserved.
+ * =========================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=====================================
+ */
+
+package org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.listener;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import org.jetbrains.annotations.NotNull;
+import org.junit.jupiter.api.Test;
+
+import java.math.BigInteger;
+
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class MerkleTreeParserTest {
+
+ private final MerkleTreeParser cut = new MerkleTreeParser();
+
+ @Test
+ void fromJsonObject_givenEmptyJsonObject_shouldReturnEmptyMerkleTree() {
+ JsonObject jsonObject = new JsonObject();
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ assertThat(tree.isSame(emptyTree())).isTrue();
+ }
+
+ @Test
+ void fromJsonObject_givenSingleKeyValuePair_shouldReturnSingleNodeTree() {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("p1", "v1");
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("v1", "p1");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+ @Test
+ void fromJsonObject_givenSingleKeyValuePair_atDeeperPathLevel_shouldReturnTreeWithSingleLeafAndCorrectNodesOnTheWay() {
+ JsonObject singleKeyValuePair = new JsonObject();
+ singleKeyValuePair.addProperty("p3", "v1");
+ JsonObject intermediateNode = new JsonObject();
+ intermediateNode.add("p2", singleKeyValuePair);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("p1", intermediateNode);
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("v1", "p1", "p2", "p3");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+ @Test
+ void fromJsonObject_givenMultipleKeyValuePairs_shouldCreateMultipleLeafs() {
+ JsonObject keyValuePairs = new JsonObject();
+ keyValuePairs.addProperty("A", "vA");
+ keyValuePairs.addProperty("B", "vB");
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("p1", keyValuePairs);
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("vA", "p1", "A")
+ .add("vB", "p1", "B");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+ @Test
+ void fromJsonObject_givenJsonArray_shouldCreateMultipleLeafsUnderArtificialNodes() {
+ JsonObject singleKeyValuePair = new JsonObject();
+ singleKeyValuePair.addProperty("p2", "v2");
+ JsonArray jsonArray = new JsonArray();
+ jsonArray.add("v1");
+ jsonArray.add(singleKeyValuePair);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("p1", jsonArray);
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("v1", "p1", "0")
+ .add("v2", "p1", "1", "p2");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+
+ @Test
+ void fromJsonObject_givenMoreComplicatedJson_shouldReturnCorrectTree() {
+ // below example is contained in javadoc for method
+ JsonObject jsonObject2 = new JsonObject();
+ jsonObject2.addProperty("p4", "v4");
+ JsonArray jsonArray = new JsonArray();
+ jsonArray.add("v2");
+ jsonArray.add("v3");
+
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("p1", "v1");
+ jsonObject.add("p2", jsonArray);
+ jsonObject.add("p3", jsonObject2);
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("v1", "p1")
+ .add("v2", "p2", "0")
+ .add("v3", "p2", "1")
+ .add("v4", "p3", "p4");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+ @Test
+ void fromJsonObject_givenNotStringValues_shouldCastAllToString() {
+ JsonArray jsonArray = new JsonArray();
+ jsonArray.add(1);
+ jsonArray.add(2L);
+ jsonArray.add(3.0);
+ jsonArray.add(true);
+ jsonArray.add(new BigInteger("999799799799799"));
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.add("p1", jsonArray);
+
+ MerkleTree<String> tree = cut.fromJsonObject(jsonObject);
+
+ MerkleTree<String> expected = emptyTree()
+ .add("1", "p1", "0")
+ .add("2", "p1", "1")
+ .add("3.0", "p1", "2")
+ .add("true", "p1", "3")
+ .add("999799799799799", "p1", "4");
+ assertThat(tree).isEqualTo(expected);
+ }
+
+ @NotNull
+ private MerkleTree<String> emptyTree() {
+ return MerkleTree.emptyWithDefaultDigest(String::getBytes);
+ }
+} \ No newline at end of file