Add unit test cases to increase sonar coverage 69/20269/4
authoraditya <ag282f@att.com>
Tue, 24 Oct 2017 04:43:59 +0000 (23:43 -0500)
committeraditya <ag282f@att.com>
Thu, 26 Oct 2017 20:00:59 +0000 (15:00 -0500)
Add unit tests to test model loader, entity statistics and data provider

Issue-ID: AAI-429

Change-Id: I18142712d2c3cc5ee48d7c6689323016da57f726
Signed-off-by: Aditya Gajulapalli <ag282f@att.com>
src/test/java/org/onap/aai/sparky/config/oxm/OxmModelLoaderTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/sparky/dal/aai/ActiveInventoryAdapterTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/sparky/dal/elasticsearch/ElasticSearchEntityStatisticsTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/sparky/dal/rest/RestOperationalStatisticsTest.java [new file with mode: 0644]
src/test/java/org/onap/aai/sparky/viewandinspect/services/VisualizationContextTest.java [new file with mode: 0644]

diff --git a/src/test/java/org/onap/aai/sparky/config/oxm/OxmModelLoaderTest.java b/src/test/java/org/onap/aai/sparky/config/oxm/OxmModelLoaderTest.java
new file mode 100644 (file)
index 0000000..3ef571e
--- /dev/null
@@ -0,0 +1,50 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ */\r
+package org.onap.aai.sparky.config.oxm;\r
+\r
+import static org.junit.Assert.assertNotEquals;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+\r
+public class OxmModelLoaderTest {\r
+\r
+    OxmModelLoader loader;\r
+               \r
+    @Test\r
+    public void testLoadModel_ShouldSucceed() throws IOException {\r
+        String version = "v11";\r
+        System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
+\r
+        loader = Mockito.spy(new OxmModelLoader());\r
+        Mockito.when(loader.loadOxmFileName(version)).thenReturn(\r
+            System.getProperty("AJSC_HOME") + "/bundleconfig-local/oxm/aai_oxm_" + version + ".xml");\r
+\r
+        loader.loadModel(version);\r
+\r
+        assertNotEquals(null, loader.getOxmModel());\r
+    }\r
+}\r
diff --git a/src/test/java/org/onap/aai/sparky/dal/aai/ActiveInventoryAdapterTest.java b/src/test/java/org/onap/aai/sparky/dal/aai/ActiveInventoryAdapterTest.java
new file mode 100644 (file)
index 0000000..9f18ab2
--- /dev/null
@@ -0,0 +1,102 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ */\r
+package org.onap.aai.sparky.dal.aai;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.NoSuchElementException;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+import org.onap.aai.sparky.config.oxm.OxmModelLoader;\r
+import org.onap.aai.sparky.dal.exception.ElasticSearchOperationException;\r
+import org.onap.aai.sparky.dal.rest.RestClientBuilder;\r
+import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;\r
+\r
+public class ActiveInventoryAdapterTest {\r
+    \r
+    OxmModelLoader oxmModelLoader;\r
+    ActiveInventoryAdapter adapter;\r
+       \r
+    @Before\r
+    public void init() throws IOException, ElasticSearchOperationException {\r
+        String version = "v11";\r
+        System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
+        TierSupportUiConstants.DYNAMIC_CONFIG_APP_LOCATION = System.getProperty("AJSC_HOME")+"/src/test/resources/appconfig/";\r
+        oxmModelLoader = Mockito.spy(new OxmModelLoader());\r
+        Mockito.when(oxmModelLoader.loadOxmFileName(version)).thenReturn(\r
+        System.getProperty("AJSC_HOME") + "/bundleconfig-local/oxm/aai_oxm_" + version + ".xml");\r
+                   \r
+        adapter = new ActiveInventoryAdapter(new RestClientBuilder());\r
+    }\r
+       \r
+    @Test\r
+    public void testQueryActiveInventoryWithRetries() {\r
+\r
+        adapter.queryActiveInventoryWithRetries("https://localhost:9517/model/aai/webapp/index.html", "response-type-1", 1);\r
+    }\r
+       \r
+    @Test(expected=NullPointerException.class)\r
+    public void testGetSelfLinkForEntity_NullEntityType() throws Exception {\r
+\r
+        adapter.getSelfLinkForEntity(null, "key", "value");\r
+    }\r
+       \r
+    @Test(expected=NullPointerException.class)\r
+    public void testGetSelfLinkForEntity_NullKeyName() throws Exception {\r
+\r
+        adapter.getSelfLinkForEntity("entity", null, "value");\r
+    }\r
+       \r
+    @Test(expected=NullPointerException.class)\r
+    public void testGetSelfLinkForEntity_NullKeyValue() throws Exception {\r
+\r
+        adapter.getSelfLinkForEntity("entity", "key", null);\r
+    }\r
+       \r
+    @Test\r
+    public void testGetSelfLinkForEntity_ServiceInstance() throws Exception {\r
+\r
+        adapter.getSelfLinkForEntity("service-instance", "key", "value");\r
+    }\r
+       \r
+    @Test\r
+    public void testGetSelfLinkForEntity_NotServiceInstance() throws Exception {\r
+        \r
+       adapter.getSelfLinkForEntity("service", "key", "value");\r
+    }\r
+       \r
+    @Test(expected=NullPointerException.class)\r
+    public void testGetSelfLinkByEntityType_NullEntity() throws Exception {\r
+\r
+        adapter.getSelfLinksByEntityType(null);\r
+    }\r
+       \r
+    @Test(expected=NoSuchElementException.class)\r
+    public void testGetSelfLinkByEntityType_NullEntityDescriptor() throws Exception {\r
+\r
+        adapter.getSelfLinksByEntityType("entity-1");\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/org/onap/aai/sparky/dal/elasticsearch/ElasticSearchEntityStatisticsTest.java b/src/test/java/org/onap/aai/sparky/dal/elasticsearch/ElasticSearchEntityStatisticsTest.java
new file mode 100644 (file)
index 0000000..6e4cf8a
--- /dev/null
@@ -0,0 +1,101 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ */\r
+package org.onap.aai.sparky.dal.elasticsearch;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.onap.aai.sparky.config.oxm.OxmEntityDescriptor;\r
+import org.onap.aai.sparky.config.oxm.OxmModelLoader;\r
+import org.onap.aai.sparky.dal.NetworkTransaction;\r
+import org.onap.aai.sparky.dal.rest.HttpMethod;\r
+import org.onap.aai.sparky.dal.rest.OperationResult;\r
+\r
+public class ElasticSearchEntityStatisticsTest {\r
+\r
+    @Test\r
+    public void testInitializeCountersFromOxmEntityDescriptors_NotNullDescriptors() {\r
+       \r
+        ElasticSearchEntityStatistics eses = new ElasticSearchEntityStatistics(new OxmModelLoader());\r
+        Map<String, OxmEntityDescriptor> descriptors = new HashMap<>();\r
+               \r
+        OxmEntityDescriptor oxmEd = new OxmEntityDescriptor();\r
+        oxmEd.setEntityName("entity-1");\r
+        oxmEd.setGeoLatName("geoLatName-1");\r
+               \r
+        descriptors.put("entity-1", oxmEd);\r
+               \r
+        eses.initializeCountersFromOxmEntityDescriptors(descriptors);          \r
+        eses.reset();\r
+    }\r
+       \r
+    @Test\r
+    public void testInitializeCountersFromOxmEntityDescriptors_NullDescriptors() {\r
+       \r
+        ElasticSearchEntityStatistics eses = new ElasticSearchEntityStatistics(new OxmModelLoader());\r
+        Map<String, OxmEntityDescriptor> descriptors = null;\r
+        eses.initializeCountersFromOxmEntityDescriptors(descriptors);\r
+    }\r
+       \r
+    @Test\r
+    public void testUpdateCounters() {\r
+       \r
+        ElasticSearchEntityStatistics eses = new ElasticSearchEntityStatistics(new OxmModelLoader());\r
+        Map<String, OxmEntityDescriptor> descriptors = new HashMap<>();\r
+               \r
+        OxmEntityDescriptor oxmEd = new OxmEntityDescriptor();\r
+        oxmEd.setEntityName("entity-1");\r
+        oxmEd.setGeoLatName("geoLatName-1");\r
+        descriptors.put("entity-1", oxmEd);\r
+               \r
+        eses.initializeCountersFromOxmEntityDescriptors(descriptors);\r
+               \r
+        OperationResult result = new OperationResult();\r
+        result.setResultCode(200);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        eses.updateCounters(ntwTxn);\r
+               \r
+        result.setResultCode(201);\r
+        NetworkTransaction ntwTxn1 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        eses.updateCounters(ntwTxn1);\r
+               \r
+        result.setResultCode(202);\r
+        NetworkTransaction ntwTxn2 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        eses.updateCounters(ntwTxn2);\r
+        NetworkTransaction ntwTxn3 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        eses.updateCounters(ntwTxn3);\r
+               \r
+        result.setResultCode(101);\r
+        NetworkTransaction ntwTxn4 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        eses.updateCounters(ntwTxn4);\r
+        NetworkTransaction ntwTxn5 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        eses.updateCounters(ntwTxn5);\r
+               \r
+        String statistics = eses.getStatisticsReport();\r
+        Assert.assertNotNull(statistics);\r
+    }\r
+}\r
diff --git a/src/test/java/org/onap/aai/sparky/dal/rest/RestOperationalStatisticsTest.java b/src/test/java/org/onap/aai/sparky/dal/rest/RestOperationalStatisticsTest.java
new file mode 100644 (file)
index 0000000..415cbe7
--- /dev/null
@@ -0,0 +1,210 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ */\r
+package org.onap.aai.sparky.dal.rest;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.onap.aai.sparky.dal.NetworkTransaction;\r
+\r
+public class RestOperationalStatisticsTest {\r
+\r
+    @Test\r
+    public void testUpdateCounters_Get() {\r
+        RestOperationalStatistics ros = new RestOperationalStatistics();\r
+               \r
+        OperationResult result = new OperationResult();\r
+        result.setResultCode(101);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn1 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn1);\r
+               \r
+        result.setResultCode(201);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn2 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn2);\r
+               \r
+        result.setResultCode(301);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn3 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn3);\r
+               \r
+        result.setResultCode(401);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn4 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn4);\r
+               \r
+        result.setResultCode(501);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn5 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn5);\r
+               \r
+        result.setResultCode(601);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn6 = new NetworkTransaction(HttpMethod.GET, "entity-1", result);\r
+        ros.updateCounters(ntwTxn6);   \r
+               \r
+        String statistics = ros.getStatisticsReport();\r
+        Assert.assertNotNull(statistics);\r
+    }\r
+       \r
+    @Test\r
+    public void testUpdateCounters_Put() {\r
+        RestOperationalStatistics ros = new RestOperationalStatistics();\r
+               \r
+        OperationResult result = new OperationResult();\r
+        result.setResultCode(101);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn1 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn1);\r
+               \r
+        result.setResultCode(201);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn2 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn2);\r
+               \r
+        result.setResultCode(301);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn3 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn3);\r
+               \r
+        result.setResultCode(401);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn4 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn4);\r
+               \r
+        result.setResultCode(501);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn5 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn5);\r
+               \r
+        result.setResultCode(601);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn6 = new NetworkTransaction(HttpMethod.PUT, "entity-1", result);\r
+        ros.updateCounters(ntwTxn6);\r
+       \r
+        String statistics = ros.getStatisticsReport();\r
+        Assert.assertNotNull(statistics);\r
+    }\r
+       \r
+    @Test\r
+    public void testUpdateCounters_Post() {\r
+        RestOperationalStatistics ros = new RestOperationalStatistics();\r
+               \r
+        OperationResult result = new OperationResult();\r
+        result.setResultCode(101);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn1 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn1);\r
+               \r
+        result.setResultCode(201);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn2 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn2);\r
+               \r
+        result.setResultCode(301);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn3 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn3);\r
+               \r
+        result.setResultCode(401);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn4 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn4);\r
+               \r
+        result.setResultCode(501);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn5 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn5);\r
+               \r
+        result.setResultCode(601);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn6 = new NetworkTransaction(HttpMethod.POST, "entity-1", result);\r
+        ros.updateCounters(ntwTxn6);\r
+       \r
+        String statistics = ros.getStatisticsReport();\r
+        Assert.assertNotNull(statistics);\r
+    }\r
+       \r
+    @Test\r
+    public void testUpdateCounters_Delete() {\r
+        RestOperationalStatistics ros = new RestOperationalStatistics();\r
+               \r
+        OperationResult result = new OperationResult();\r
+        result.setResultCode(101);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn1 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn1);\r
+               \r
+        result.setResultCode(201);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn2 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn2);\r
+               \r
+        result.setResultCode(301);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn3 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn3);\r
+               \r
+        result.setResultCode(401);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn4 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn4);\r
+               \r
+        result.setResultCode(501);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn5 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn5);\r
+               \r
+        result.setResultCode(601);\r
+        result.setResult("result-1");\r
+        result.setNumRequestRetries(1);\r
+        NetworkTransaction ntwTxn6 = new NetworkTransaction(HttpMethod.DELETE, "entity-1", result);\r
+        ros.updateCounters(ntwTxn6);\r
+       \r
+        String statistics = ros.getStatisticsReport();\r
+        Assert.assertNotNull(statistics);\r
+    }\r
+}\r
diff --git a/src/test/java/org/onap/aai/sparky/viewandinspect/services/VisualizationContextTest.java b/src/test/java/org/onap/aai/sparky/viewandinspect/services/VisualizationContextTest.java
new file mode 100644 (file)
index 0000000..08ce29d
--- /dev/null
@@ -0,0 +1,139 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ */\r
+package org.onap.aai.sparky.viewandinspect.services;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.security.SecureRandom;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.HashMap;\r
+import java.util.concurrent.ExecutorService;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.InjectMocks;\r
+import org.mockito.Mockito;\r
+import org.mockito.MockitoAnnotations;\r
+import org.onap.aai.cl.eelf.LoggerFactory;\r
+import org.onap.aai.sparky.config.oxm.OxmEntityDescriptor;\r
+import org.onap.aai.sparky.config.oxm.OxmModelLoader;\r
+import org.onap.aai.sparky.dal.aai.ActiveInventoryAdapter;\r
+import org.onap.aai.sparky.dal.aai.ActiveInventoryDataProvider;\r
+import org.onap.aai.sparky.dal.exception.ElasticSearchOperationException;\r
+import org.onap.aai.sparky.dal.rest.RestClientBuilder;\r
+import org.onap.aai.sparky.synchronizer.entity.SearchableEntity;\r
+import org.onap.aai.sparky.util.NodeUtils;\r
+import org.onap.aai.sparky.viewandinspect.config.TierSupportUiConstants;\r
+import org.onap.aai.sparky.viewandinspect.entity.ActiveInventoryNode;\r
+import org.onap.aai.sparky.viewandinspect.entity.QueryParams;\r
+import org.onap.aai.sparky.viewandinspect.enumeration.NodeProcessingState;\r
+\r
+import com.fasterxml.jackson.databind.JsonNode;\r
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;\r
+import com.fasterxml.jackson.databind.node.ObjectNode;\r
+\r
+public class VisualizationContextTest {\r
+\r
+    VisualizationContext context;\r
+    ActiveInventoryDataProvider dataProvider;\r
+    long contextId;\r
+    OxmModelLoader oxmModelLoader;\r
+    ExecutorService service;\r
+\r
+    @Before\r
+    public void init() throws Exception {\r
+        MockitoAnnotations.initMocks(this);\r
+        System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));\r
+        TierSupportUiConstants.DYNAMIC_CONFIG_APP_LOCATION = System.getProperty("AJSC_HOME")+"/src/test/resources/appconfig/";\r
+        TierSupportUiConstants.CONFIG_OXM_LOCATION = System.getProperty("AJSC_HOME")+"/bundleconfig-local/oxm/";\r
+        oxmModelLoader = Mockito.spy(OxmModelLoader.getInstance());\r
+        ActiveInventoryDataProvider dataProvider = new ActiveInventoryAdapter(new RestClientBuilder());\r
+        SecureRandom random = new SecureRandom();\r
+        long contextId = random.nextLong();\r
+        ExecutorService service = NodeUtils.createNamedExecutor("SLNC-WORKER",\r
+                2, LoggerFactory.getInstance().getLogger(VisualizationContextTest.class));\r
+        context = new VisualizationContext(contextId, dataProvider, service, oxmModelLoader);\r
+    }\r
+\r
+    @Test\r
+    public void testExtractQueryParamsFromSelfLink_NullLink() {\r
+        List<String> queryParams = context.extractQueryParamsFromSelfLink(null);\r
+        Assert.assertEquals(queryParams.size(), 0);\r
+    }\r
+\r
+    @Test\r
+    public void testExtractQueryParamsFromSelfLink_NotNullLink() {\r
+        context.extractQueryParamsFromSelfLink("https://localhost:9517/model/aai/webapp/index.html");\r
+    }\r
+\r
+    @Test\r
+    public void testDecodeComplexAttributeGroup_NullAttributeGroup() {\r
+        ActiveInventoryNode ain = new ActiveInventoryNode();\r
+        ObjectNode node = JsonNodeFactory.instance.objectNode();\r
+        boolean retValue = context.decodeComplexAttributeGroup(ain, node);\r
+        Assert.assertFalse(retValue);\r
+    }\r
+\r
+    @Test\r
+    public void testDecodeComplexAttributeGroup_NotNullAttributeGroup() {\r
+        ActiveInventoryNode ain = new ActiveInventoryNode();\r
+        ObjectNode node1 = JsonNodeFactory.instance.objectNode();\r
+        ObjectNode node2 = JsonNodeFactory.instance.objectNode();\r
+        node1.set("model", node2);\r
+        ObjectNode modelNode = JsonNodeFactory.instance.objectNode();\r
+        node2.set("model-1", modelNode);\r
+        modelNode.set("firstValue", JsonNodeFactory.instance.objectNode());\r
+        modelNode.set("secondValue", JsonNodeFactory.instance.objectNode());\r
+        modelNode.set("thirdValue", JsonNodeFactory.instance.objectNode());\r
+        boolean retValue = context.decodeComplexAttributeGroup(ain, node1);\r
+        Assert.assertFalse(retValue);\r
+    }\r
+\r
+    @Test\r
+    public void testProcessSelfLinks() {\r
+        SearchableEntity entity = new SearchableEntity();\r
+        entity.setId("id-1");\r
+        entity.setEntityType("cloud-region");\r
+        entity.setEntityPrimaryKeyValue("cloud-region-1");\r
+        entity.setLink("https://localhost:9517/model/aai/webapp/index.html");\r
+        QueryParams params = new QueryParams();\r
+        params.setSearchTargetNodeId("id-1");\r
+        Map<String, ActiveInventoryNode> nodeMap =  context.getNodeCache();\r
+        ActiveInventoryNode node = new ActiveInventoryNode();\r
+        node.setEntityType("cloud-region");\r
+        node.setNodeId("id-1");\r
+        node.setPrimaryKeyName("cloud-region-1");\r
+        node.setPrimaryKeyValue("cloud-region-1");\r
+        node.addQueryParam(\r
+        node.getEntityType() + "." + node.getPrimaryKeyName() + ":" + node.getPrimaryKeyValue());\r
+        node.setNodeDepth(0);\r
+        node.setRootNode(true);\r
+        node.setSelfLink(entity.getLink());\r
+        nodeMap.put("id-1", node);\r
+        node.setResolvedSelfLink(true);\r
+        context.processSelfLinks(entity, params);\r
+\r
+    }\r
+}\r