summaryrefslogtreecommitdiffstats
path: root/datarouter-node/src/test/java
diff options
context:
space:
mode:
authoreconwar <conor.ward@ericsson.com>2018-08-23 13:46:30 +0000
committereconwar <conor.ward@ericsson.com>2018-08-23 13:46:30 +0000
commit81734bd958d199b695cd7be8deacb0855929338b (patch)
tree16b2bb5d1c22c8dddd906fe4638534392c7fe3a3 /datarouter-node/src/test/java
parent118900e50d71a3db8bd6e304151cc7c20b4fbda9 (diff)
Add Unit Tests for NodeConfig
Change-Id: Ide27314a030d412892fbcd26f1be7d687f747751 Signed-off-by: Conor Ward <conor.ward@ericsson.com> Issue-ID: DMAAP-101
Diffstat (limited to 'datarouter-node/src/test/java')
-rwxr-xr-xdatarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigTest.java254
1 files changed, 254 insertions, 0 deletions
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigTest.java
new file mode 100755
index 00000000..6350e640
--- /dev/null
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigTest.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. 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====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+package org.onap.dmaap.datarouter.node;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+@RunWith(PowerMockRunner.class)
+public class NodeConfigTest {
+
+ private static NodeConfig nodeConfig;
+
+ @BeforeClass
+ public static void setUp() throws IOException{
+ ProvData provData = setUpProvData();
+ nodeConfig = new NodeConfig(provData, "Name", "spool/dir", 80, "Key");
+ }
+
+ @Test
+ public void Given_Feed_Does_Not_Exist_Then_Is_Publish_Permitted_Returns_Not_Null() {
+ String permitted = nodeConfig.isPublishPermitted("2", "user", "0.0.0.0");
+ Assert.assertEquals("Feed does not exist", permitted);
+ }
+
+ @Test
+ public void Given_Feed_But_User_Not_Permitted_Then_Is_Publish_Permitted_Returns_Not_Null() {
+ String permitted = nodeConfig.isPublishPermitted("1", "user", "0.0.0.0");
+ Assert.assertEquals("Publisher not permitted for this feed", permitted);
+ }
+
+ @Test
+ public void Given_Feed_But_Ip_Does_Not_Match_Then_Is_Publish_Permitted_Returns_Not_Null() {
+ String permitted = nodeConfig.isPublishPermitted("1", "Basic dXNlcjE6cGFzc3dvcmQx", "0.0.0.0");
+ Assert.assertEquals("Publisher not permitted for this feed", permitted);
+ }
+
+ @Test
+ public void Given_Feed_Then_Is_Publish_Permitted_Returns_Null() {
+ String permitted = nodeConfig.isPublishPermitted("1", "Basic dXNlcjE6cGFzc3dvcmQx", "172.0.0.1");
+ Assert.assertNull(permitted);
+ }
+
+ @Test
+ public void Given_SubId_Then_Get_Feed_Id_Returns_Correct_Id() {
+ String feedId = nodeConfig.getFeedId("1");
+ Assert.assertEquals("1", feedId);
+ }
+
+ @Test
+ public void Given_Incorrect_SubId_Then_Get_Feed_Id_Returns_Null() {
+ String feedId = nodeConfig.getFeedId("2");
+ Assert.assertNull(feedId);
+ }
+
+ @Test
+ public void Given_SubId_Then_Get_Spool_Dir_Returns_Correct_Id() {
+ String spoolDir = nodeConfig.getSpoolDir("1");
+ Assert.assertEquals("spool/dir/s/0/1", spoolDir);
+ }
+
+ @Test
+ public void Given_Incorrect_SubId_Then_Get_Spool_Dir_Returns_Null() {
+ String spoolDir = nodeConfig.getSpoolDir("2");
+ Assert.assertNull(spoolDir);
+ }
+
+ @Test
+ public void Given_Feed_And_Incorrect_Credentials_Then_Get_Auth_User_Returns_Null() {
+ String authUser = nodeConfig.getAuthUser("1", "incorrect");
+ Assert.assertNull(authUser);
+ }
+
+ @Test
+ public void Given_Feed_And_Correct_Credentials_Then_Get_Auth_User_Returns_User() {
+ String authUser = nodeConfig.getAuthUser("1", "Basic dXNlcjE6cGFzc3dvcmQx");
+ Assert.assertEquals("user1", authUser);
+ }
+
+ @Test
+ public void Given_Correct_Feed_Then_Get_Ingress_Node_Returns_Node() {
+ String node = nodeConfig.getIngressNode("1", "user1", "172.0.0.1");
+ Assert.assertEquals("172.0.0.4", node);
+ }
+
+ @Test
+ public void Given_Correct_Feed_Then_Get_Targets_Returns_Correct_Dest_Info() {
+ Target[] targets = nodeConfig.getTargets("1");
+ Assert.assertEquals("1", targets[0].getDestInfo().getSubId());
+ Assert.assertEquals("spool/dir/s/0/1", targets[0].getDestInfo().getSpool());
+ }
+
+ @Test(expected = ArrayIndexOutOfBoundsException.class)
+ public void Given_Null_Feed_Then_Get_Targets_Returns_Empty_Array() {
+ Target[] targets = nodeConfig.getTargets(null);
+ targets[0].getDestInfo();
+ }
+
+ @Test(expected = ArrayIndexOutOfBoundsException.class)
+ public void Given_Incorrect_Feed_Then_Get_Targets_Returns_Empty_Array() {
+ Target[] targets = nodeConfig.getTargets("2");
+ targets[0].getDestInfo();
+ }
+
+ @Test
+ public void Given_Same_Ip_Then_Is_Another_Node_Returns_False() {
+ Boolean isAnotherNode = nodeConfig.isAnotherNode("Basic MTcyLjAuMC40OmtCTmhkWVFvbzhXNUphZ2g4T1N4Zmp6Mzl1ND0=", "172.0.0.1");
+ Assert.assertFalse(isAnotherNode);
+ }
+
+ @Test
+ public void Given_Different_Ip_Then_Is_Another_Node_Returns_True() {
+ Boolean isAnotherNode = nodeConfig.isAnotherNode("Basic MTcyLjAuMC40OmtCTmhkWVFvbzhXNUphZ2g4T1N4Zmp6Mzl1ND0=", "172.0.0.4");
+ Assert.assertTrue(isAnotherNode);
+ }
+
+ @Test
+ public void Given_Param_Name_Then_Get_Prov_Param_Returns_Parameter() {
+ String paramValue = nodeConfig.getProvParam("DELIVERY_MAX_AGE");
+ Assert.assertEquals("86400", paramValue);
+ }
+
+ @Test
+ public void Validate_Get_All_Dests_Returns_Dest_Info() {
+ DestInfo[] destInfo = nodeConfig.getAllDests();
+ Assert.assertEquals("n:172.0.0.4", destInfo[0].getName());
+ }
+
+ @Test
+ public void Validate_Get_MyAuth_Returns_Correct_Auth() {
+ String auth = nodeConfig.getMyAuth();
+ Assert.assertEquals("Basic TmFtZTp6Z04wMFkyS3gybFppbXltNy94ZDhuMkdEYjA9", auth);
+ }
+
+ private static ProvData setUpProvData() throws IOException {
+ JSONObject provData = new JSONObject();
+ createValidFeed(provData);
+ createValidSubscription(provData);
+ createValidParameters(provData);
+ createValidIngressValues(provData);
+ createValidEgressValues(provData);
+ createValidRoutingValues(provData);
+ Reader reader = new StringReader(provData.toString());
+ return new ProvData(reader);
+ }
+
+ private static void createValidFeed(JSONObject provData) {
+ JSONArray feeds = new JSONArray();
+ JSONObject feed = new JSONObject();
+ JSONObject auth = new JSONObject();
+ JSONArray endpointIds = new JSONArray();
+ JSONArray endpointAddrs = new JSONArray();
+ JSONObject endpointId = new JSONObject();
+ feed.put("feedid", "1");
+ feed.put("name", "Feed1");
+ feed.put("version", "m1.0");
+ feed.put("suspend", false);
+ feed.put("deleted", false);
+ endpointId.put("id", "user1");
+ endpointId.put("password", "password1");
+ endpointIds.put(endpointId);
+ auth.put("endpoint_ids", endpointIds);
+ endpointAddrs.put("172.0.0.1");
+ auth.put("endpoint_addrs", endpointAddrs);
+ feed.put("authorization", auth);
+ feeds.put(feed);
+ provData.put("feeds", feeds);
+ }
+
+ private static void createValidSubscription(JSONObject provData) {
+ JSONArray subscriptions = new JSONArray();
+ JSONObject subscription = new JSONObject();
+ JSONObject delivery = new JSONObject();
+ subscription.put("subid", "1");
+ subscription.put("feedid", "1");
+ subscription.put("suspend", false);
+ subscription.put("metadataOnly", false);
+ delivery.put("url", "https://172.0.0.2");
+ delivery.put("user", "user1");
+ delivery.put("password", "password1");
+ delivery.put("use100", true);
+ subscription.put("delivery", delivery);
+ subscriptions.put(subscription);
+ provData.put("subscriptions", subscriptions);
+ }
+
+ private static void createValidParameters(JSONObject provData) {
+ JSONObject parameters = new JSONObject();
+ JSONArray nodes = new JSONArray();
+ parameters.put("PROV_NAME", "prov.datarouternew.com");
+ parameters.put("DELIVERY_INIT_RETRY_INTERVAL", "10");
+ parameters.put("DELIVERY_MAX_AGE", "86400");
+ parameters.put("PROV_DOMAIN", "");
+ nodes.put("172.0.0.4");
+ parameters.put("NODES", nodes);
+ provData.put("parameters", parameters);
+ }
+
+ private static void createValidIngressValues(JSONObject provData) {
+ JSONArray ingresses = new JSONArray();
+ JSONObject ingress = new JSONObject();
+ ingress.put("feedid", "1");
+ ingress.put("subnet", "");
+ ingress.put("user", "");
+ ingress.put("node", "172.0.0.4");
+ ingresses.put(ingress);
+ provData.put("ingress", ingresses);
+ }
+
+ private static void createValidEgressValues(JSONObject provData) {
+ JSONObject egress = new JSONObject();
+ egress.put("subid", "1");
+ egress.put("nodeid", "172.0.0.4");
+ provData.put("egress", egress);
+ }
+
+ private static void createValidRoutingValues(JSONObject provData) {
+ JSONArray routings = new JSONArray();
+ JSONObject routing = new JSONObject();
+ routing.put("from", "prov.datarouternew.com");
+ routing.put("to", "172.0.0.4");
+ routing.put("via", "172.100.0.1");
+ routings.put(routing);
+ provData.put("routing", routings);
+ }
+}