sync restapi-call-node with ecomp
[ccsdk/sli/plugins.git] / restapi-call-node / provider / src / test / java / org / onap / ccsdk / sli / plugins / restapicall / TestXmlJsonUtil.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                      reserved.
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
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
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=========================================================
20  */
21
22 package org.onap.ccsdk.sli.plugins.restapicall;
23
24 import java.util.HashMap;
25 import java.util.Map;
26
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;
32
33
34 public class TestXmlJsonUtil {
35
36     private static final Logger log = LoggerFactory.getLogger(TestXmlJsonUtil.class);
37
38     @Test
39     public void test() {
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");
77
78         mm.put("service-data.vnf-config-parameters-list.vnf-config-parameters[0].access-net-pcscf_length", "4");
79
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");
84
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");
94
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");
104
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");
114
115         mm.put("service-data.vnf-config-parameters-list." +
116                 "vnf-config-parameters[0].core-net-pcscf_length", "1");
117
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");
124
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");
128
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");
132
133         mm.put("service-data.vnf-config-information.escape-test",
134                 "blah blah \"xxx&nnn<>\\'\"there>blah<&''\"\"123\\\\\\'''blah blah &");
135
136         String ss = XmlJsonUtil.getXml(mm, "service-data.vnf-config-parameters-list");
137         log.info(ss);
138
139         ss = XmlJsonUtil.getXml(mm, "service-data.vnf-config-information");
140         log.info(ss);
141
142         ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-parameters-list.vnf-config-parameters");
143         log.info(ss);
144
145         ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-information");
146         log.info(ss);
147
148         ss = XmlJsonUtil.getJson(mm, "service-data.vnf-config-information.vnf-host-ip-address");
149         log.info(ss);
150
151         ss = XmlJsonUtil.getJson(mm, "\"service-data.vnf-config-information.vnf-host-ip-address");
152         log.info(ss);
153     }
154
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                         }                    ]                }            " +
203                 "]        }    }}}\"\n" +
204                 "}";
205
206         String xmloutexpected = xmlin;
207
208         String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
209         log.info(xmlout);
210
211         Assert.assertEquals(xmloutexpected, xmlout);
212     }
213
214     @Test
215     public void testRemoveEmptyStructXml() {
216         String xmlin = "" +
217                 "<T1>\n" +
218                 "    <T2>\n" +
219                 "        <T3>\n" +
220                 "            <T4></T4>\n" +
221                 "            <T5>     </T5>\n" +
222                 "            <T6>\n" +
223                 "            </T6>\n" +
224                 "        </T3>\n" +
225                 "        <T7>blah</T7>\n" +
226                 "    </T2>\n" +
227                 "    <T8>\n" +
228                 "        <T9>\n" +
229                 "            <T10></T10>\n" +
230                 "            <T11>      </T11>\n" +
231                 "            <T12>\n" +
232                 "            </T12>\n" +
233                 "        </T9>\n" +
234                 "        <T13>\n" +
235                 "            <T14></T14>\n" +
236                 "            <T15>     </T15>\n" +
237                 "            <T16>\n" +
238                 "                <T17></T17>\n" +
239                 "            </T16>\n" +
240                 "        </T13>\n" +
241                 "        <T17>\n" +
242                 "        </T17>\n" +
243                 "    </T8>\n" +
244                 "    <T18>blah blah</T18>\n" +
245                 "</T1>\n";
246
247         String xmloutexpected = "" +
248                 "<T1>\n" +
249                 "    <T2>\n" +
250                 "        <T7>blah</T7>\n" +
251                 "    </T2>\n" +
252                 "    <T18>blah blah</T18>\n" +
253                 "</T1>\n";
254
255         String xmlout = XmlJsonUtil.removeEmptyStructXml(xmlin);
256         log.info(xmlout);
257
258         Assert.assertEquals(xmloutexpected, xmlout);
259     }
260
261     @Test
262     public void testRemoveEmptyStructJson() {
263         String xmlin = "{\r\n" +
264                 "    \"T1\":{\r\n" +
265                 "        \"T2\":{\r\n" +
266                 "            \"T3\":[\r\n" +
267                 "                                \r\n" +
268                 "            ],\r\n" +
269                 "            \"T4\":{\r\n" +
270                 "                \"T12\":[\r\n" +
271                 "                    \r\n" +
272                 "                ],\r\n" +
273                 "                \"T13\":[   ],\r\n" +
274                 "                \"T14\":{\r\n" +
275                 "                    \"T15\":{\r\n" +
276                 "                        \r\n" +
277                 "                    },\r\n" +
278                 "                    \"T16\":{\r\n" +
279                 "                        \r\n" +
280                 "                    }\r\n" +
281                 "                }\r\n" +
282                 "            },\r\n" +
283                 "            \"T5\":{\r\n" +
284                 "                \"T6\":[\r\n" +
285                 "                    \r\n" +
286                 "                ],\r\n" +
287                 "                \"T7\":[\r\n" +
288                 "                    \"T8\":{\r\n" +
289                 "                        \r\n" +
290                 "                    },\r\n" +
291                 "                    \"T9\":{    },\r\n" +
292                 "                    \"T10\":\"blah\",\r\n" +
293                 "                    \"T11\":[\r\n" +
294                 "                        \r\n" +
295                 "                    ]\r\n" +
296                 "                ]\r\n" +
297                 "            }\r\n" +
298                 "        }\r\n" +
299                 "    }\r\n" +
300                 "}\r\n" +
301                 "";
302
303         String xmloutexpected = "{\r\n" +
304                 "    \"T1\":{\r\n" +
305                 "        \"T2\":{\r\n" +
306                 "            \"T5\":{\r\n" +
307                 "                \"T7\":[\r\n" +
308                 "                    \"T10\":\"blah\",\r\n" +
309                 "                ]\r\n" +
310                 "            }\r\n" +
311                 "        }\r\n" +
312                 "    }\r\n" +
313                 "}\r\n" +
314                 "";
315
316         String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
317         log.info(xmlout);
318
319         Assert.assertEquals(xmloutexpected, xmlout);
320     }
321 }