2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.sli.plugins.restapicall;
24 import java.util.HashMap;
27 import org.junit.Assert;
28 import org.junit.Test;
29 import org.onap.ccsdk.sli.plugins.restapicall.XmlJsonUtil;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
34 public class TestXmlJsonUtil {
36 private static final Logger log = LoggerFactory.getLogger(TestXmlJsonUtil.class);
40 Map<String, String> mm = new HashMap<>();
41 mm.put("service-data.vnf-config-parameters-list.vnf-config-parameters[0].vnf-type", "N-SBG");
42 mm.put("service-data.service-information.service-instance-id", "someinstance001");
43 mm.put("service-data.vnf-config-parameters-list." +
44 "vnf-config-parameters[0].dns-server-ip-address", "10.11.12.13");
45 mm.put("service-data.vnf-config-parameters-list." +
46 "vnf-config-parameters[0].escf-domain-name", "hclab.atttest.com");
47 mm.put("service-data.vnf-config-parameters-list." +
48 "vnf-config-parameters[0].snmp-target-v3_length", "2");
49 mm.put("service-data.vnf-config-parameters-list." +
50 "vnf-config-parameters[0].snmp-target-v3[0].snmp-target-v3-id", "1");
51 mm.put("service-data.vnf-config-parameters-list." +
52 "vnf-config-parameters[0].snmp-target-v3[0].snmp-target-ip-address", "127.0.0.1");
53 mm.put("service-data.vnf-config-parameters-list." +
54 "vnf-config-parameters[0].snmp-target-v3[0].snmp-security-level", "NO_AUTH_NO_PRIV");
55 mm.put("service-data.vnf-config-parameters-list." +
56 "vnf-config-parameters[0].snmp-target-v3[1].snmp-target-v3-id", "2");
57 mm.put("service-data.vnf-config-parameters-list." +
58 "vnf-config-parameters[0].snmp-target-v3[1].snmp-target-ip-address", "192.168.1.8");
59 mm.put("service-data.vnf-config-parameters-list." +
60 "vnf-config-parameters[0].snmp-target-v3[1].snmp-security-level", "NO_AUTH_NO_PRIV");
61 mm.put("service-data.vnf-config-parameters-list." +
62 "vnf-config-parameters[0].dns-ip-address-1", "2001:1890:1001:2224::1");
63 mm.put("service-data.vnf-config-parameters-list." +
64 "vnf-config-parameters[0].dns-ip-address-2", "2001:1890:1001:2424::1");
65 mm.put("service-data.vnf-config-parameters-list." +
66 "vnf-config-parameters[0].diameter-rf-realm-name", "uvp.els-an.att.net");
67 mm.put("service-data.vnf-config-parameters-list." +
68 "vnf-config-parameters[0].diameter-rf-peer-ip-address", "192.168.1.66");
69 mm.put("service-data.vnf-config-parameters-list." +
70 "vnf-config-parameters[0].bgf-controller-ip-address", "192.168.1.186");
71 mm.put("service-data.vnf-config-parameters-list." +
72 "vnf-config-parameters[0].bgf-control-link-name", "mg3/69@192.168.1.226");
73 mm.put("service-data.vnf-config-parameters-list." +
74 "vnf-config-parameters[0].rf-interface-nexthop-ip-address", "10.111.108.150");
75 mm.put("service-data.vnf-config-parameters-list." +
76 "vnf-config-parameters[0].rf-mated-pair-ip-address", "10.111.108.146");
78 mm.put("service-data.vnf-config-parameters-list.vnf-config-parameters[0].access-net-pcscf_length", "4");
80 mm.put("service-data.vnf-config-parameters-list." +
81 "vnf-config-parameters[0].access-net-pcscf[0].network-name", "UvpbUgnAccess1");
82 mm.put("service-data.vnf-config-parameters-list." +
83 "vnf-config-parameters[0].access-net-pcscf[0].sip-pa-termination-ip-address", "10.111.108.146");
85 mm.put("service-data.vnf-config-parameters-list." +
86 "vnf-config-parameters[0].access-net-pcscf[1].network-name", "MIS");
87 mm.put("service-data.vnf-config-parameters-list." +
88 "vnf-config-parameters[0].access-net-pcscf[1].proactive-transcoding-profile",
89 "trinity-transcodingProfile");
90 mm.put("service-data.vnf-config-parameters-list." +
91 "vnf-config-parameters[0].access-net-pcscf[1].next-hop-ip-address", "10.111.108.158");
92 mm.put("service-data.vnf-config-parameters-list." +
93 "vnf-config-parameters[0].access-net-pcscf[1].subnet-mask-length", "10.111.108.154");
95 mm.put("service-data.vnf-config-parameters-list." +
96 "vnf-config-parameters[0].access-net-pcscf[2].network-name", "AVPN1");
97 mm.put("service-data.vnf-config-parameters-list." +
98 "vnf-config-parameters[0].access-net-pcscf[2].proactive-transcoding-profile",
99 "trinity-transcodingProfile");
100 mm.put("service-data.vnf-config-parameters-list." +
101 "vnf-config-parameters[0].access-net-pcscf[2].next-hop-ip-address", "10.111.108.166");
102 mm.put("service-data.vnf-config-parameters-list." +
103 "vnf-config-parameters[0].access-net-pcscf[2].subnet-mask-length", "10.111.108.162");
105 mm.put("service-data.vnf-config-parameters-list." +
106 "vnf-config-parameters[0].access-net-pcscf[3].network-name", "AVPN1");
107 mm.put("service-data.vnf-config-parameters-list." +
108 "vnf-config-parameters[0].access-net-pcscf[3].proactive-transcoding-profile",
109 "trinity-transcodingProfile");
110 mm.put("service-data.vnf-config-parameters-list." +
111 "vnf-config-parameters[0].access-net-pcscf[3].next-hop-ip-address", "10.129.108.166");
112 mm.put("service-data.vnf-config-parameters-list." +
113 "vnf-config-parameters[0].access-net-pcscf[3].subnet-mask-length", "10.129.108.162");
115 mm.put("service-data.vnf-config-parameters-list." +
116 "vnf-config-parameters[0].core-net-pcscf_length", "1");
118 mm.put("service-data.vnf-config-parameters-list." +
119 "vnf-config-parameters[0].core-net-pcscf[0].network-name", "Core");
120 mm.put("service-data.vnf-config-parameters-list." +
121 "vnf-config-parameters[0].core-net-pcscf[0].next-hop-ip-address", "10.111.108.142");
122 mm.put("service-data.vnf-config-parameters-list." +
123 "vnf-config-parameters[0].core-net-pcscf[0].sip-pa-termination-ip-address", "10.111.108.138");
125 mm.put("service-data.vnf-config-parameters-list." +
126 "vnf-config-parameters[0].mated-pair-fully-qualified-domain-name",
127 "mt1nj01sbg01pyl-mt1nj01sbg02pyl.ar1ga.uvp.els-an.att.net");
129 mm.put("service-data.appc-request-header.svc-request-id", "SOMESERVICEREQUEST123451000");
130 mm.put("service-data.vnf-config-information.vnf-host-ip-address", "192.168.13.151");
131 mm.put("service-data.vnf-config-information.vendor", "Netconf");
133 mm.put("service-data.vnf-config-information.escape-test",
134 "blah blah \"xxx&nnn<>\\'\"there>blah<&''\"\"123\\\\\\'''blah blah &");
136 String ss = XmlJsonUtil.getXml(mm, "service-data.vnf-config-parameters-list");
139 ss = XmlJsonUtil.getXml(mm, "service-data.vnf-config-information");
142 ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-parameters-list.vnf-config-parameters");
145 ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-information");
148 ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-information.vnf-host-ip-address");
151 ss = XmlJsonUtil.getJson(mm, "\"service-data.vnf-config-information.vnf-host-ip-address");
155 public void testRemoveEmptyStructJson1() {
156 String xmlin = "{\n" +
157 " \"policyName\" : \"default-domain.ECOM_Tenant_DND.ECOM_Tenant_DND_mtn6_HngwOamNetVto." +
158 "HNGWOAMNETVTO.OAM_landing-network-role_policy_05\",\n" +
159 " \"policyConfigType\": \"MicroService\",\n" +
160 " \"ecompName\": \"SDNC\",\n" +
161 " \"configBody\": \"{\\\"service\\\": \\\"NetworkPolicy\\\"," +
162 "\\\"location\\\": \\\"Search\\\",\\\"uuid\\\": \\\"Search\\\"," +
163 "\\\"policyName\\\": \\\"default-domain.ECOM_Tenant_DND.ECOM_Tenant_DND_mtn6_HngwOamNetVto." +
164 "HNGWOAMNETVTO.OAM_landing-network-role_policy_05\\\"," +
165 "\\\"description\\\": \\\"default-domain.ECOM_Tenant_DND.ECOM_Tenant_DND_mtn6_HngwOamNetVto." +
166 "HNGWOAMNETVTO.OAM_landing-network-role_policy_05\\\",\\\"configName\\\": \\\"Search\\\"," +
167 "\\\"templateVersion\\\": \\\"1607\\\",\\\"version\\\": \\\"1.3.0.1\\\"," +
168 "\\\"priority\\\": \\\"2\\\",\\\"policyScope\\\": \\\"SDNC\\\",\\\"riskType\\\": \\\"low\\\"," +
169 "\\\"riskLevel\\\": \\\"2\\\",\\\"guard\\\": \\\"True\\\",\\\"content\\\":{ " +
170 "\\\"network-policy\\\": { \\\"display_name\\\": \\\"default-domain.ECOM_Tenant_DND." +
171 "ECOM_Tenant_DND_mtn6_HngwOamNetVto.HNGWOAMNETVTO.OAM_landing-network-role_policy_05\\\", " +
172 "\\\"fq_name\\\": [ \\\"default-domain\\\", " +
173 "\\\"ECOM_Tenant_DND\\\", \\\"default-domain." +
174 "ECOM_Tenant_DND.ECOM_Tenant_DND_mtn6_HngwOamNetVto." +
175 "HNGWOAMNETVTO.OAM_landing-network-role_policy_05\\\" ], " +
176 "\\\"id_perms\\\": { \\\"user_visible\\\": true }, " +
177 "\\\"parent_type\\\": \\\"project\\\", \\\"network_policy_entries\\\": { " +
178 "\\\"policy_rule\\\": [ { " +
179 "\\\"action_list\\\": { \\\"apply_service\\\": [ " +
180 "\\\"testfqdn\\\" ], " +
181 "\\\"gateway_name\\\": null, \\\"qos_action\\\": null, " +
182 "\\\"log\\\": false , \\\"mirror_to\\\": null, " +
183 "\\\"simple_action\\\": null }, " +
184 "\\\"ethertype\\\": null, \\\"application\\\": [], " +
185 "\\\"direction\\\": \\\"<>\\\", \\\"dst_addresses\\\": [ " +
186 "{ \\\"network_policy\\\": null, " +
187 "\\\"security_group\\\": null, " +
188 "\\\"subnet\\\": null, \\\"virtual_network\\\": " +
189 "\\\"default-domain:ECOM_Tenant_DND:ECOM_Tenant_DND_int_HngwOamNetVto." +
190 "HNGWOAMNETVTO.OAM_net_10\\\" } ], " +
191 "\\\"dst_ports\\\": [ { " +
192 "\\\"end_port\\\": -1, \\\"start_port\\\": -1 " +
193 "} ], \\\"protocol\\\": \\\"any\\\", " +
194 "\\\"src_addresses\\\": [ { " +
195 "\\\"network_policy\\\": null, " +
196 "\\\"security_group\\\": null, " +
197 "\\\"subnet\\\": null, \\\"virtual_network\\\": " +
198 "\\\"default-domain:ECOM_Tenant_DND:ECOM_Tenant_DND_int_HngwOamNetVto." +
199 "HNGWOAMNETVTO.OAM_net_9\\\" } ], " +
200 "\\\"src_ports\\\": [ { " +
201 "\\\"end_port\\\": -1, " +
202 "\\\"start_port\\\": -1 } ] } " +
206 String xmloutexpected = xmlin;
208 String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
211 Assert.assertEquals(xmloutexpected, xmlout);
215 public void testRemoveEmptyStructXml() {
244 " <T18>blah blah</T18>\n" +
247 String xmloutexpected = "" +
252 " <T18>blah blah</T18>\n" +
255 String xmlout = XmlJsonUtil.removeEmptyStructXml(xmlin);
258 Assert.assertEquals(xmloutexpected, xmlout);
262 public void testRemoveEmptyStructJson() {
263 String xmlin = "{\r\n" +
273 " \"T13\":[ ],\r\n" +
292 " \"T10\":\"blah\",\r\n" +
303 String xmloutexpected = "{\r\n" +
308 " \"T10\":\"blah\",\r\n" +
316 String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
319 Assert.assertEquals(xmloutexpected, xmlout);