summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Timoney <dtimoney@att.com>2022-07-15 13:23:01 +0000
committerGerrit Code Review <gerrit@onap.org>2022-07-15 13:23:01 +0000
commite5d489a09606a97f537911f08e9274c0ce0bc17d (patch)
tree84619f04238d8850717854492d1fbb2645d08af5
parentd3b56a45e948a2e3d0cf8c5514cdaf4e08a0b4fe (diff)
parent400408a5bf555ddca5521e1f7c44d256ab941c01 (diff)
Merge "Restapi-call-node: Support for Empty Container {} in JSON"
-rwxr-xr-xplugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java10
-rw-r--r--plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java1
-rwxr-xr-xplugins/restapi-call-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java217
-rwxr-xr-xplugins/restapi-call-node/provider/src/test/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java531
-rw-r--r--plugins/restapi-call-node/provider/src/test/resources/testEmptyValueNContainer.json24
5 files changed, 136 insertions, 647 deletions
diff --git a/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java b/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
index 4236055dc..2064dc864 100755
--- a/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
+++ b/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java
@@ -641,6 +641,8 @@ public class RestapiCallNode implements SvcLogicJavaPlugin {
if (format == Format.JSON) {
req = XmlJsonUtil.removeLastCommaJson(req);
+ // Use 'EMPTY_CONTAINER' as keyword within template to have an empty container placeholder.
+ req = req.replaceAll("EMPTY_CONTAINER", "{}");
}
long t2 = System.currentTimeMillis();
@@ -803,7 +805,7 @@ public class RestapiCallNode implements SvcLogicJavaPlugin {
URL proxyUrl = new URL(p.proxyUrl);
HttpUrlConnectorProvider cp = new HttpUrlConnectorProvider();
config.connectorProvider(cp);
- final Proxy proxy =
+ final Proxy proxy =
new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyUrl.getHost(), proxyUrl.getPort()));
cp.connectionFactory(new ConnectionFactory() {
@@ -822,12 +824,12 @@ public class RestapiCallNode implements SvcLogicJavaPlugin {
ssl = createSSLContext(p);
}
- ClientBuilder builder =
+ ClientBuilder builder =
ClientBuilder.newBuilder().hostnameVerifier(new AcceptIpAddressHostNameVerifier());
- if (ssl != null) {
+ if (ssl != null) {
HttpsURLConnection.setDefaultSSLSocketFactory(ssl.getSocketFactory());
- builder = builder.sslContext(ssl);
+ builder = builder.sslContext(ssl);
}
if (config != null) {
builder = builder.withConfig(config);
diff --git a/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java b/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
index d6ef7463a..a4407c005 100644
--- a/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
+++ b/plugins/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java
@@ -443,7 +443,6 @@ public final class XmlJsonUtil {
i5 = s.length();
}
-
/*If template mandates empty construct to be present, those should not be removed.*/
if (template != null && template.contains(s.substring(i4))) {
k = i1 + 1;
diff --git a/plugins/restapi-call-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java b/plugins/restapi-call-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
index 595fc1de2..758b30d18 100755
--- a/plugins/restapi-call-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
+++ b/plugins/restapi-call-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
@@ -29,6 +29,7 @@ import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
+
import org.codehaus.jettison.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
@@ -213,7 +214,6 @@ public class TestRestapiCallNode {
rcn.sendRequest(p, ctx);
}
-
@Test(expected = SvcLogicException.class)
public void testWithInvalidURI() throws SvcLogicException {
SvcLogicContext ctx = new SvcLogicContext();
@@ -339,7 +339,7 @@ public class TestRestapiCallNode {
Map<String, String> p = new HashMap<>();
//p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services"
- + "/vpnservice=10000000-0000-0000-0000-000000000001");
+ + "/vpnservice=10000000-0000-0000-0000-000000000001");
p.put("restapiUser", "admin");
p.put("restapiPassword", "admin123");
p.put("format", "json");
@@ -425,7 +425,6 @@ public class TestRestapiCallNode {
rcn.sendRequest(p, ctx);
}
-
@Test
public void testDeleteNoneAsContentType() throws SvcLogicException {
SvcLogicContext ctx = new SvcLogicContext();
@@ -461,81 +460,82 @@ public class TestRestapiCallNode {
RestapiCallNode rcn = new RestapiCallNode();
rcn.sendRequest(p, ctx);
}
+
/*
* {
- "partnerOne": {
- "url": "http://localhost:7001" 4 http://uebsb93kcdc.it.att.com:3904",
- "test": "/metrics"
- },
- "partnerTwo": {
- "url": "http://localhost:7002",
- "user": "controller_user",
- "password": "P@ssword",
- "test": "/metrics"
- },
- "partnerThree": {
- "url": "http://localhost:7003",
- "user": "controller_admin"
- }
-}
+ "partnerOne": {
+ "url": "http://localhost:7001" 4 http://uebsb93kcdc.it.att.com:3904",
+ "test": "/metrics"
+ },
+ "partnerTwo": {
+ "url": "http://localhost:7002",
+ "user": "controller_user",
+ "password": "P@ssword",
+ "test": "/metrics"
+ },
+ "partnerThree": {
+ "url": "http://localhost:7003",
+ "user": "controller_admin"
+ }
+ }
*/
@Test
- public void testPartners() throws Exception{
- String partnerTwoKey = "partnerTwo";
- String partnerTwoUsername = "controller_user";
- String partnerTwoPassword = "P@ssword";
+ public void testPartners() throws Exception {
+ String partnerTwoKey = "partnerTwo";
+ String partnerTwoUsername = "controller_user";
+ String partnerTwoPassword = "P@ssword";
- System.setProperty("SDNC_CONFIG_DIR", "src/test/resources");
+ System.setProperty("SDNC_CONFIG_DIR", "src/test/resources");
RestapiCallNode rcn = new RestapiCallNode();
assertNull(rcn.partnerStore.get("partnerOne"));
PartnerDetails details = rcn.partnerStore.get(partnerTwoKey);
- assertEquals(partnerTwoUsername,details.username);
- assertEquals(partnerTwoPassword,details.password);
+ assertEquals(partnerTwoUsername, details.username);
+ assertEquals(partnerTwoPassword, details.password);
assertNull(rcn.partnerStore.get("partnerThree"));
//In this scenario the caller expects username, password and url to be picked up from the partners json
Map<String, String> paramMap = new HashMap<>();
paramMap.put("partner", partnerTwoKey);
- rcn.handlePartner(paramMap );
- assertEquals(partnerTwoUsername,paramMap.get(RestapiCallNode.restapiUserKey));
- assertEquals(partnerTwoPassword,paramMap.get(RestapiCallNode.restapiPasswordKey));
- assertEquals("http://localhost:7002",paramMap.get(RestapiCallNode.restapiUrlString));
+ rcn.handlePartner(paramMap);
+ assertEquals(partnerTwoUsername, paramMap.get(RestapiCallNode.restapiUserKey));
+ assertEquals(partnerTwoPassword, paramMap.get(RestapiCallNode.restapiPasswordKey));
+ assertEquals("http://localhost:7002", paramMap.get(RestapiCallNode.restapiUrlString));
//In this scenario the caller expects username, password and url to be picked up from the partners json
//the provided suffix will be appended to the default url from the partners json
paramMap = new HashMap<>();
paramMap.put("partner", partnerTwoKey);
paramMap.put("restapiUrlSuffix", "/networking/v1/instance/3");
- rcn.handlePartner(paramMap);
- Parameters p = new Parameters();
- RestapiCallNode.getParameters(paramMap, p);
- assertEquals(partnerTwoUsername,p.restapiUser);
- assertEquals(partnerTwoPassword,p.restapiPassword);
- assertEquals("http://localhost:7002/networking/v1/instance/3",p.restapiUrl);
+ rcn.handlePartner(paramMap);
+ Parameters p = new Parameters();
+ RestapiCallNode.getParameters(paramMap, p);
+ assertEquals(partnerTwoUsername, p.restapiUser);
+ assertEquals(partnerTwoPassword, p.restapiPassword);
+ assertEquals("http://localhost:7002/networking/v1/instance/3", p.restapiUrl);
}
@Test
public void retryPolicyBean() throws Exception {
- Integer retries = 3;
- String first = "http://localhost:7001";
- String second = "http://localhost:7001";
-
- RetryPolicy p = new RetryPolicy(new String[] {first,second}, retries);
- assertEquals(retries,p.getMaximumRetries());
- assertNotNull(p.getRetryMessage());
- String next = p.getNextHostName();
- assertEquals(second,next);
- assertEquals(1,p.getRetryCount());
- next = p.getNextHostName();
- assertEquals(first,next);
- assertEquals(2,p.getRetryCount());
+ Integer retries = 3;
+ String first = "http://localhost:7001";
+ String second = "http://localhost:7001";
+
+ RetryPolicy p = new RetryPolicy(new String[] {first, second}, retries);
+ assertEquals(retries, p.getMaximumRetries());
+ assertNotNull(p.getRetryMessage());
+ String next = p.getNextHostName();
+ assertEquals(second, next);
+ assertEquals(1, p.getRetryCount());
+ next = p.getNextHostName();
+ assertEquals(first, next);
+ assertEquals(2, p.getRetryCount());
}
@Test
public void testEmbeddedJsonTemplate() throws Exception {
SvcLogicContext ctx = new SvcLogicContext();
String complexObj = "{\"image_name\":\"Ubuntu 14.04\",\"service-instance-id\":\"1\",\"vnf-model-customization-uuid\":\"2f\",\"vnf-id\":\"3b\"}";
- ctx.setAttribute("reqId", "1235");
+ ctx.setAttribute("reqId", "1235");
ctx.setAttribute("subReqId", "054243");
ctx.setAttribute("actionName", "CREATE");
ctx.setAttribute("myPrefix", "2016-09-09 16:30:35.0");
@@ -565,30 +565,30 @@ public class TestRestapiCallNode {
//This will throw a JSONException and fail the test case if rest api call node doesn't form valid JSON
assertNotNull(new JSONObject(request));
}
-
+
@Test
- public void testGetMultipleUrls() throws Exception{
+ public void testGetMultipleUrls() throws Exception {
String[] urls = RestapiCallNode.getMultipleUrls("http://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Banana,https://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Potato");
- assertEquals("http://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Banana",urls[0]);
- assertEquals("https://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Potato",urls[1]);
-
- urls = RestapiCallNode.getMultipleUrls("https://wiki.onap.org/,http://localhost:7001/,http://wiki.onap.org/");
- assertEquals("https://wiki.onap.org/",urls[0]);
- assertEquals("http://localhost:7001/",urls[1]);
- assertEquals("http://wiki.onap.org/",urls[2]);
-
+ assertEquals("http://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Banana", urls[0]);
+ assertEquals("https://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Potato", urls[1]);
+
+ urls = RestapiCallNode.getMultipleUrls("https://wiki.onap.org/,http://localhost:7001/,http://wiki.onap.org/");
+ assertEquals("https://wiki.onap.org/", urls[0]);
+ assertEquals("http://localhost:7001/", urls[1]);
+ assertEquals("http://wiki.onap.org/", urls[2]);
+
urls = RestapiCallNode.getMultipleUrls("https://wiki.onap.org/test=4,5,6,http://localhost:7001/test=1,2,3,http://wiki.onap.org/test=7,8,9,10");
- assertEquals("https://wiki.onap.org/test=4,5,6",urls[0]);
- assertEquals("http://localhost:7001/test=1,2,3",urls[1]);
- assertEquals("http://wiki.onap.org/test=7,8,9,10",urls[2]);
+ assertEquals("https://wiki.onap.org/test=4,5,6", urls[0]);
+ assertEquals("http://localhost:7001/test=1,2,3", urls[1]);
+ assertEquals("http://wiki.onap.org/test=7,8,9,10", urls[2]);
- urls = RestapiCallNode.getMultipleUrls("https://wiki.onap.org/,https://readthedocs.org/projects/onap/");
- assertEquals("https://wiki.onap.org/",urls[0]);
- assertEquals("https://readthedocs.org/projects/onap/",urls[1]);
+ urls = RestapiCallNode.getMultipleUrls("https://wiki.onap.org/,https://readthedocs.org/projects/onap/");
+ assertEquals("https://wiki.onap.org/", urls[0]);
+ assertEquals("https://readthedocs.org/projects/onap/", urls[1]);
}
-
+
@Test
- public void testContainsMultipleUrls() throws Exception{
+ public void testContainsMultipleUrls() throws Exception {
assertFalse(RestapiCallNode.containsMultipleUrls("https://wiki.onap.org/"));
assertFalse(RestapiCallNode.containsMultipleUrls("http://wiki.onap.org/"));
assertFalse(RestapiCallNode.containsMultipleUrls("http://localhost:8008/rest/restconf/data/abc:def/abc:action=Create,deviceType=Banana"));
@@ -602,58 +602,53 @@ public class TestRestapiCallNode {
}
@Test
- public void testKeepEmptyValue() throws Exception {
- log.info("================= Testing keeping empty values =======================");
-
- String template = "{\n" +
- " \"name1\": \"value1\",\n" +
- " \"name2\": ${empty},\n" +
- " \"name3\": ${~empty},\n" +
- " \"name4\": {\n" +
- " \"name41\": \"value41\",\n" +
- " \"name42\": ${~empty},\n" +
- " \"name43\": ${~not_empty}\n" +
- " },\n" +
- " \"name5\": {\n"+
- " \"name51\": ${~empty},\n"+
- " \"name52\": ${empty}\n"+
- " },\n" +
- " \"name6\": {\n"+
- " \"name61\": ${empty},\n"+
- " \"name62\": ${empty}\n"+
- " },\n" +
- " \"name7\": \"${\"not_empty}\",\n" +
- " \"name8\": \"${~\"not_empty}\",\n" +
- " \"name9\": \"${\"empty}\",\n" +
- " \"name10\": \"${~\"empty}\"\n" +
- "}";
-
- String expect = "{\n" +
- " \"name1\": \"value1\",\n" +
- " \"name3\": \"\",\n" +
- " \"name4\": {\n" +
- " \"name41\": \"value41\",\n" +
- " \"name42\": \"\",\n" +
- " \"name43\": \"some value\"\n" +
- " },\n" +
- " \"name5\": {\n" +
- " \"name51\": \"\"\n" +
- " },\n" +
- " \"name7\": \"some value\",\n" +
- " \"name8\": \"some value\",\n" +
- " \"name10\": \"\"\n" +
- "}";
+ public void testKeepEmptyValueOrContainer() throws Exception {
+ log.info("================= Testing keeping empty value or container =======================");
+
+ String expect = "{\n"
+ + " \"name1\": \"value1\",\n"
+ + " \"name3\": \"\",\n"
+ + " \"name4\": {\n"
+ + " \"name41\": \"value41\",\n"
+ + " \"name42\": \"\",\n"
+ + " \"name43\": \"some value\"\n"
+ + " },\n"
+ + " \"name5\": {\n"
+ + " \"name51\": \"\"\n"
+ + " },\n"
+ + " \"name7\": \"some value\",\n"
+ + " \"name8\": \"some value\",\n"
+ + " \"name10\": \"\",\n"
+ + " \"list\": [\n"
+ + " \n"
+ + " {\n"
+ + " \"test1\": \"123\",\n"
+ + " \"container2\": {},\n"
+ + " \"container3\": {}\n"
+ + " },\n"
+ + " \n"
+ + " {\n"
+ + " \"test1\": \"456\",\n"
+ + " \"container2\": {},\n"
+ + " \"container3\": {}\n"
+ + " }\n"
+ + " ]\n"
+ + "}\n";
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute("empty", "");
ctx.setAttribute("not_empty", "some value");
-
+ ctx.setAttribute("tmp.list_length", "2");
+ ctx.setAttribute("tmp.list[0]", "123");
+ ctx.setAttribute("tmp.list[1]", "456");
+
RestapiCallNode rcn = new RestapiCallNode();
- String req = rcn.buildXmlJsonRequest(ctx, template, Format.JSON);
-
+ String req = rcn.buildXmlJsonRequest(ctx, rcn.readFile("src/test/resources/testEmptyValueNContainer.json"), Format.JSON);
+
log.info("Result:\n" + req);
log.info("==================================================================");
assertEquals(expect, req);
}
+
}
diff --git a/plugins/restapi-call-node/provider/src/test/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java b/plugins/restapi-call-node/provider/src/test/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
deleted file mode 100755
index a130d4390..000000000
--- a/plugins/restapi-call-node/provider/src/test/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
+++ /dev/null
@@ -1,531 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * openECOMP : SDN-C
- * ================================================================================
- * Copyright (C) 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=========================================================
- */
-
-package org.onap.ccsdk.sli.plugins.restapicall;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.contrib.java.lang.system.EnvironmentVariables;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TestRestapiCallNode {
-
- @SuppressWarnings("unused")
- private static final Logger log = LoggerFactory.getLogger(TestRestapiCallNode.class);
- @Rule
- public EnvironmentVariables environmentVariables = new EnvironmentVariables();
-
-
-
- @Test
- public void testDelete() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
-
- Map<String, String> p = new HashMap<>();
- p.put("restapiUrl", "https://echo.getpostman.com/delete");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "pwd1");
- p.put("httpMethod", "delete");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testDeleteWithPayload() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
-
- ctx.setAttribute("prop.name", "site1");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/sdwan-site.json");
- p.put("restapiUrl", "https://echo.getpostman.com/delete");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "pwd1");
- p.put("httpMethod", "delete");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testJsonTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("tmp.sdn-circuit-req-row_length", "3");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[1].clci", "clci");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[2].clci", "clci");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/test-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testInvalidRepeatTimes() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("tmp.sdn-circuit-req-row_length", "a");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/test-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test(expected = SvcLogicException.class)
- public void testInvalidTemplatePath() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resourcess/test-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test(expected = SvcLogicException.class)
- public void testWithoutSkipSending() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/test-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "false");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
-
- @Test(expected = SvcLogicException.class)
- public void testWithInvalidURI() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("tmp.sdn-circuit-req-row_length", "1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].source-uid", "APIDOC-123");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].action", "delete");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-timestamp", "2016-09-09 16:30:35.0");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].request-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].processing-status", "New");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].service-clfi", "testClfi1");
- ctx.setAttribute("tmp.sdn-circuit-req-row[0].clci", "clci");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/test-template.json");
- p.put("restapiUrl", "http://echo. getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "false");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testVpnJsonTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
- ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
- p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services");
- p.put("restapiUser", "admin");
- p.put("restapiPassword", "admin123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testSiteJsonTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
- ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
-
- ctx.setAttribute("prop.l3vpn.site1_name", "10000000-0000-0000-0000-000000000002");
- ctx.setAttribute("prop.l3vpn.vpn-policy1-id", "10000000-0000-0000-0000-000000000003");
- ctx.setAttribute("prop.l3vpn.entry1-id", "1");
- ctx.setAttribute("prop.l3vpn.sna1_name", "10000000-0000-0000-0000-000000000004");
- ctx.setAttribute("prop.l3vpn.pe1_id", "a8098c1a-f86e-11da-bd1a-00112444be1e");
- ctx.setAttribute("prop.l3vpn.ac1_id", "a8098c1a-f86e-11da-bd1a-00112444be1b");
- ctx.setAttribute("prop.l3vpn.ac1-peer-ip", "192.168.1.1");
- ctx.setAttribute("prop.l3vpn.ac1-ip", "192.168.1.2");
- ctx.setAttribute("prop.l3vpn.sna1_svlan", "100");
- ctx.setAttribute("prop.l3vpn.ac1_protocol", "static");
- ctx.setAttribute("prop.l3vpn.sna1-route.ip-prefix", "192.168.1.1/24");
- ctx.setAttribute("prop.l3vpn.sna1-route.next-hop", "192.168.1.4");
-
- ctx.setAttribute("prop.l3vpn.site2_name", "10000000-0000-0000-0000-000000000005");
- ctx.setAttribute("prop.l3vpn.vpn-policy2-id", "10000000-0000-0000-0000-000000000006");
- ctx.setAttribute("prop.l3vpn.entry2-id", "1");
- ctx.setAttribute("prop.l3vpn.sna2_name", "10000000-0000-0000-0000-000000000007");
- ctx.setAttribute("prop.l3vpn.pe2_id", "a8098c1a-f86e-11da-bd1a-00112444be1a");
- ctx.setAttribute("prop.l3vpn.ac2_id", "a8098c1a-f86e-11da-bd1a-00112444be1c");
- ctx.setAttribute("prop.l3vpn.ac2-peer-ip", "192.168.1.6");
- ctx.setAttribute("prop.l3vpn.ac2-ip", "192.168.1.5");
- ctx.setAttribute("prop.l3vpn.sna2_svlan", "200");
- ctx.setAttribute("prop.l3vpn.ac2_protocol", "bgp");
- ctx.setAttribute("prop.l3vpn.peer2-ip", "192.168.1.7");
- ctx.setAttribute("prop.l3vpn.ac2_protocol_bgp_as", "200");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l3smsitetemplate.json");
- p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites");
- p.put("restapiUser", "admin");
- p.put("restapiPassword", "admin123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testVrfJsonTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.l3vpn.vrf1-id", "10000000-0000-0000-0000-000000000007");
- ctx.setAttribute("prop.l3vpn.vpn-policy1-id", "10000000-0000-0000-0000-000000000003");
- ctx.setAttribute("prop.l3vpn.pe1_id", "a8098c1a-f86e-11da-bd1a-00112444be1e");
- ctx.setAttribute("prop.l3vpn.vrf2-id", "10000000-0000-0000-0000-000000000009");
- ctx.setAttribute("prop.l3vpn.vpn-policy2-id", "10000000-0000-0000-0000-000000000006");
- ctx.setAttribute("prop.l3vpn.pe2_id", "a8098c1a-f86e-11da-bd1a-00112444be1a");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l3smvrftemplate.json");
- p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vrf-attributes");
- p.put("restapiUser", "admin");
- p.put("restapiPassword", "admin123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testDeleteVpnJsonTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
- ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
-
- Map<String, String> p = new HashMap<>();
- //p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
- p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services"
- + "/vpnservice=10000000-0000-0000-0000-000000000001");
- p.put("restapiUser", "admin");
- p.put("restapiPassword", "admin123");
- p.put("format", "json");
- p.put("httpMethod", "delete");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testL2DciTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.dci-connects.id", "Id1");
- ctx.setAttribute("prop.dci-connects.name", "Name1");
- ctx.setAttribute("prop.dci-connects.local_networks[0]", "NetId1");
- ctx.setAttribute("prop.dci-connects.local_networks[1]", "NetId2");
- ctx.setAttribute("prop.dci-connects.evpn_irts[0]", "100:1");
- ctx.setAttribute("prop.dci-connects.evpn_erts[0]", "100:2");
- ctx.setAttribute("prop.dci-connects.evpn_irts[1]", "200:1");
- ctx.setAttribute("prop.dci-connects.evpn_erts[1]", "200:2");
- ctx.setAttribute("prop.dci-connects.vni", "1");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l2-dci-connects-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testL3DciTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.dci-connects.id", "Id1");
- ctx.setAttribute("prop.dci-connects.name", "Name1");
- ctx.setAttribute("prop.dci-connects.local_networks_length", "2");
- ctx.setAttribute("prop.dci-connects.local_networks[0]", "NetId1");
- ctx.setAttribute("prop.dci-connects.local_networks[1]", "NetId2");
- ctx.setAttribute("prop.dci-connects.evpn_irts[0]", "100:1");
- ctx.setAttribute("prop.dci-connects.evpn_erts[0]", "100:2");
- ctx.setAttribute("prop.dci-connects.evpn_irts[1]", "200:1");
- ctx.setAttribute("prop.dci-connects.evpn_erts[1]", "200:2");
- ctx.setAttribute("prop.dci-connects.vni", "1");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l3-dci-connects-template.json");
- p.put("restapiUrl", "http://echo.getpostman.com");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "abc123");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "response");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
-
- }
-
- @Test
- public void testControllerTokenTemplate() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.sdncRestApi.thirdpartySdnc.user", "admin");
- ctx.setAttribute("prop.sdncRestApi.thirdpartySdnc.password", "admin123");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/actokentemplate.json");
- p.put("restapiUrl", "https://ipwan:18002/controller/v2/tokens");
- p.put("format", "json");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
-
- @Test
- public void testDeleteNoneAsContentType() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
-
- Map<String, String> p = new HashMap<>();
- p.put("restapiUrl", "https://echo.getpostman.com/delete");
- p.put("restapiUser", "user1");
- p.put("restapiPassword", "pwd1");
- p.put("httpMethod", "delete");
- p.put("format", "none");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
-
- @Test
- public void testPostNoneAsContentType() throws SvcLogicException {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute("prop.l3vpn.name", "10000000-0000-0000-0000-000000000001");
- ctx.setAttribute("prop.l3vpn.topology", "point_to_point");
-
- Map<String, String> p = new HashMap<>();
- p.put("templateFileName", "src/test/resources/l3smvpntemplate.json");
- p.put("restapiUrl", "http://ipwan:18002/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services");
- p.put("restapiUser", "admin");
- p.put("restapiPassword", "admin123");
- p.put("format", "none");
- p.put("httpMethod", "post");
- p.put("responsePrefix", "restapi-result");
- p.put("skipSending", "true");
-
- RestapiCallNode rcn = new RestapiCallNode();
- rcn.sendRequest(p, ctx);
- }
- /*
- * {
- "partnerOne": {
- "url": "http://localhost:7001" 4 http://uebsb93kcdc.it.att.com:3904",
- "test": "/metrics"
- },
- "partnerTwo": {
- "url": "http://localhost:7002",
- "user": "controller_user",
- "password": "P@ssword",
- "test": "/metrics"
- },
- "partnerThree": {
- "url": "http://localhost:7003",
- "user": "controller_admin"
- }
-}
- */
- @Test
- public void testPartners() throws Exception{
-
- environmentVariables.set("deployer_pass", "sdncp-123");
- assertEquals("sdncp-123", System.getenv("deployer_pass"));
-
- String partnerTwoKey = "partnerTwo";
- String partnerTwoUsername = "controller_user";
- String partnerTwoPassword = "P@ssword";
-
- System.setProperty("SDNC_CONFIG_DIR", "src/test/resources");
- RestapiCallNode rcn = new RestapiCallNode();
- assertNull(rcn.partnerStore.get("partnerOne"));
- PartnerDetails details = rcn.partnerStore.get(partnerTwoKey);
- assertEquals(partnerTwoUsername,details.username);
- assertEquals(partnerTwoPassword,details.password);
- assertNull(rcn.partnerStore.get("partnerThree"));
-
- //In this scenario the caller expects username, password and url to be picked up from the partners json
- Map<String, String> paramMap = new HashMap<String,String>();
- paramMap.put("partner", partnerTwoKey);
- rcn.handlePartner(paramMap );
- assertEquals(partnerTwoUsername,paramMap.get(rcn.restapiUserKey));
- assertEquals(partnerTwoPassword,paramMap.get(rcn.restapiPasswordKey));
- assertEquals("http://localhost:7002",paramMap.get(rcn.restapiUrlString));
-
- //In this scenario the caller expects username, password and url to be picked up from the partners json
- //the provided suffix will be appended to the default url from the partners json
- paramMap = new HashMap<String,String>();
- paramMap.put("partner", partnerTwoKey);
- paramMap.put("restapiUrlSuffix", "/networking/v1/instance/3");
- rcn.handlePartner(paramMap);
- p = new Parameters();
- RestapiCallNode.getParameters(paramMap, p);
- assertEquals(partnerTwoUsername,p.restapiUser);
- assertEquals(partnerTwoPassword,p.restapiPassword);
- assertEquals("http://localhost:7002/networking/v1/instance/3",p.restapiUrl);
-
- paramMap = new HashMap<String, String>();
- paramMap.put("partner","partnerFour" );
- paramMap.put("httpMethod", "delete");
- paramMap.put("skipSending", "true");
- rcn.handlePartner(paramMap);
- Parameters p = new Parameters();
- RestapiCallNode.getParameters(paramMap, p);
- assertEquals(p.restapiPassword, "sdncp-123");
- assertEquals(p.restapiUser, "m30402@sdncp.att.com");
- assertEquals(p.restapiUrl, "http://localhost:7004");
- }
-
- @Test
- public void retryPolicyBean() throws Exception {
- Integer retries = 3;
- String first = "http://localhost:7001";
- String second = "http://localhost:7001";
-
- RetryPolicy p = new RetryPolicy(new String[] {first,second}, retries);
- assertEquals(retries,p.getMaximumRetries());
- assertNotNull(p.getRetryMessage());
- String next = p.getNextHostName();
- assertEquals(second,next);
- assertEquals(1,p.getRetryCount());
- next = p.getNextHostName();
- assertEquals(first,next);
- assertEquals(2,p.getRetryCount());
- }
-}
diff --git a/plugins/restapi-call-node/provider/src/test/resources/testEmptyValueNContainer.json b/plugins/restapi-call-node/provider/src/test/resources/testEmptyValueNContainer.json
new file mode 100644
index 000000000..b444e0e5b
--- /dev/null
+++ b/plugins/restapi-call-node/provider/src/test/resources/testEmptyValueNContainer.json
@@ -0,0 +1,24 @@
+{
+ "name1": "value1",
+ "name3": "",
+ "name4": {
+ "name41": "value41",
+ "name42": "",
+ "name43": "some value"
+ },
+ "name5": {
+ "name51": ""
+ },
+ "name7": "some value",
+ "name8": "some value",
+ "name10": "",
+ "list": [
+ ${repeat:tmp.list_length:
+ {
+ "test1": ${tmp.list[${1}]},
+ "container1": {},
+ "container2": EMPTY_CONTAINER,
+ "container3": EMPTY_CONTAINER
+ },
+ }]
+}