Add underlay JSON template validation 67/15967/1
authorramu.n <ramu.n@huawei.com>
Wed, 27 Sep 2017 13:14:14 +0000 (18:44 +0530)
committerramu.n <ramu.n@huawei.com>
Wed, 27 Sep 2017 13:15:05 +0000 (18:45 +0530)
Add UT test cases to validate the JSON template used to communicate with 3rd party controller of IP WAN Network

Change-Id: I251f5cabecdd7e4f02d0be3bb27d7af4a355c077
Issue-Id: SDNC-90
Signed-off-by: Ramu N <ramu.n@huawei.com>
restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestRestapiCallNode.java
restapi-call-node/provider/src/test/resources/l3smsitetemplate.json [new file with mode: 0644]
restapi-call-node/provider/src/test/resources/l3smvpntemplate.json [new file with mode: 0644]

index 118d97d..2d3b401 100644 (file)
@@ -8,9 +8,9 @@
  * 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.
@@ -195,4 +195,64 @@ public class TestRestapiCallNode {
         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<String, String>();
+        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-route", "192.168.1.4/24");
+
+        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.5");
+        ctx.setAttribute("prop.l3vpn.ac2-ip", "192.168.1.5");
+        ctx.setAttribute("prop.l3vpn.sna2-route", "192.168.1.8/24");
+
+        Map<String, String> p = new HashMap<String, String>();
+        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);
+    }
 }
diff --git a/restapi-call-node/provider/src/test/resources/l3smsitetemplate.json b/restapi-call-node/provider/src/test/resources/l3smsitetemplate.json
new file mode 100644 (file)
index 0000000..e7b5692
--- /dev/null
@@ -0,0 +1,164 @@
+/*-
+ * ============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=========================================================
+ */
+
+[
+  {
+  "site-id": ${prop.l3vpn.site1_name},
+  "vpn-policies": {
+    "vpn-policy": [
+      {
+        "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id},
+        "entries": [
+          {
+            "id": ${prop.l3vpn.entry1-id},
+            "vpn": {
+              "vpn-id": ${prop.l3vpn.name},
+              "site-role": "huawei-ac-net-l3vpn-svc:any-to-any-role"
+            }
+          }
+        ]
+      }
+    ]
+  },
+  "site-network-accesses": {
+    "site-network-access": [
+      {
+        "site-network-access-id": ${prop.l3vpn.sna1_name},
+        "bearer": {
+          "appointed-access": {
+            "ne-id": ${prop.l3vpn.pe1_id},
+            "ltp-id": ${prop.l3vpn.ac1_id},
+            "vlan": {
+              "type": "huawei-ac-net-l3vpn-svc:vlan-dot1q",
+              "vlan-id": ${prop.l3vpn.sna1_svlan}
+            }
+          }
+        },
+        "ip-connection": {
+          "ipv4": {
+            "address-allocation-type": "huawei-ac-net-l3vpn-svc:static-address",
+            "addresses": {
+              "provider-address": ${prop.l3vpn.ac1-peer-ip},
+              "customer-address": ${prop.l3vpn.ac1-ip},
+              "mask": "24"
+            }
+          }
+        },
+        "service": {
+          "mtu": "1500"
+        },
+        "routing-protocols": {
+          "routing-protocol": [
+            {
+              "type": "huawei-ac-net-l3vpn-svc:static",
+              "static": {
+                "cascaded-lan-prefixes": [
+                  {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "ip-prefix": ${prop.l3vpn.sna1-route},
+                        "next-hop": ${prop.l3vpn.sna1-route}
+                      }
+                    ]
+                  }
+                ]
+              }
+            }
+          ]
+        },
+        "vpn-attachment": {
+          "vpn-policy-id": ${prop.l3vpn.name}
+        }
+      }
+    ]
+  },
+  {
+    "site-id": ${prop.l3vpn.site2_name},
+    "vpn-policies": {
+    "vpn-policy": [
+      {
+        "vpn-policy-id": ${prop.l3vpn.vpn-policy2-id},
+        "entries": [
+        {
+          "id": ${prop.l3vpn.entry2-id},
+          "vpn": {
+          "vpn-id": ${prop.l3vpn.name},
+          "site-role": "huawei-ac-net-l3vpn-svc:any-to-any-role"
+          }
+        }
+        ]
+      }
+      ]
+    },
+    "site-network-accesses": {
+    "site-network-access": [
+      {
+        "site-network-access-id": ${prop.l3vpn.sna2_name},
+      "bearer": {
+        "appointed-access": {
+          "ne-id": ${prop.l3vpn.pe2_id},
+      "ltp-id": ${prop.l3vpn.ac2_id},
+      "vlan": {
+        "type": "huawei-ac-net-l3vpn-svc:vlan-dot1q",
+        "vlan-id": ${prop.l3vpn.sna2_svlan}
+    }
+    }
+    },
+      "ip-connection": {
+        "ipv4": {
+          "address-allocation-type": "huawei-ac-net-l3vpn-svc:static-address",
+          "addresses": {
+            "provider-address": ${prop.l3vpn.ac2-peer-ip},
+      "customer-address": ${prop.l3vpn.ac2-ip},
+      "mask": "24"
+      }
+    }
+    },
+      "service": {
+        "mtu": "1500"
+      },
+      "routing-protocols": {
+        "routing-protocol": [
+          {
+            "type": "huawei-ac-net-l3vpn-svc:static",
+            "static": {
+              "cascaded-lan-prefixes": [
+                {
+                  "ipv4-lan-prefixes": [
+                    {
+                      "ip-prefix": ${prop.l3vpn.sna2-route},
+                    "next-hop": ${prop.l3vpn.sna2-route}
+                  }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      },
+      "vpn-attachment": {
+        "vpn-policy-id": ${prop.l3vpn.name}
+    }
+    }
+    ]
+  }
+]
+
diff --git a/restapi-call-node/provider/src/test/resources/l3smvpntemplate.json b/restapi-call-node/provider/src/test/resources/l3smvpntemplate.json
new file mode 100644 (file)
index 0000000..c0a7c19
--- /dev/null
@@ -0,0 +1,28 @@
+/*-
+ * ============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=========================================================
+ */
+
+{
+    "vpn-id": ${prop.l3vpn.name},
+    "customer-name": "huawei",
+    "vpn-service-topology": ${prop.l3vpn.topology},
+    "route-exchange-policy": "huawei-ac-net-l3vpn-svc:vpnv4-way"
+}
+