Add mandatory empty construct to json template
[ccsdk/sli/plugins.git] / restapi-call-node / provider / src / test / java / jtest / org / onap / ccsdk / sli / plugins / sshapicall / 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 jtest.org.onap.ccsdk.sli.plugins.sshapicall;
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     @Test
156     public void testRemoveEmptyStructXml() {
157         String xmlin = "" +
158                 "<T1>\n" +
159                 "    <T2>\n" +
160                 "        <T3>\n" +
161                 "            <T4></T4>\n" +
162                 "            <T5>     </T5>\n" +
163                 "            <T6>\n" +
164                 "            </T6>\n" +
165                 "        </T3>\n" +
166                 "        <T7>blah</T7>\n" +
167                 "    </T2>\n" +
168                 "    <T8>\n" +
169                 "        <T9>\n" +
170                 "            <T10></T10>\n" +
171                 "            <T11>      </T11>\n" +
172                 "            <T12>\n" +
173                 "            </T12>\n" +
174                 "        </T9>\n" +
175                 "        <T13>\n" +
176                 "            <T14></T14>\n" +
177                 "            <T15>     </T15>\n" +
178                 "            <T16>\n" +
179                 "                <T17></T17>\n" +
180                 "            </T16>\n" +
181                 "        </T13>\n" +
182                 "        <T17>\n" +
183                 "        </T17>\n" +
184                 "    </T8>\n" +
185                 "    <T18>blah blah</T18>\n" +
186                 "</T1>\n";
187
188         String xmloutexpected = "" +
189                 "<T1>\n" +
190                 "    <T2>\n" +
191                 "        <T7>blah</T7>\n" +
192                 "    </T2>\n" +
193                 "    <T18>blah blah</T18>\n" +
194                 "</T1>\n";
195
196         String xmlout = XmlJsonUtil.removeEmptyStructXml(xmlin);
197         log.info(xmlout);
198
199         Assert.assertEquals(xmloutexpected, xmlout);
200     }
201
202     @Test
203     public void testRemoveEmptyStructJson() {
204         String xmlin = "{\r\n" +
205                 "    \"T1\":{\r\n" +
206                 "        \"T2\":{\r\n" +
207                 "            \"T3\":[\r\n" +
208                 "                                \r\n" +
209                 "            ],\r\n" +
210                 "            \"T4\":{\r\n" +
211                 "                \"T12\":[\r\n" +
212                 "                    \r\n" +
213                 "                ],\r\n" +
214                 "                \"T13\":[   ],\r\n" +
215                 "                \"T14\":{\r\n" +
216                 "                    \"T15\":{\r\n" +
217                 "                        \r\n" +
218                 "                    },\r\n" +
219                 "                    \"T16\":{\r\n" +
220                 "                        \r\n" +
221                 "                    }\r\n" +
222                 "                }\r\n" +
223                 "            },\r\n" +
224                 "            \"T5\":{\r\n" +
225                 "                \"T6\":[\r\n" +
226                 "                    \r\n" +
227                 "                ],\r\n" +
228                 "                \"T7\":[\r\n" +
229                 "                    \"T8\":{\r\n" +
230                 "                        \r\n" +
231                 "                    },\r\n" +
232                 "                    \"T9\":{    },\r\n" +
233                 "                    \"T10\":\"blah\",\r\n" +
234                 "                    \"T11\":[\r\n" +
235                 "                        \r\n" +
236                 "                    ]\r\n" +
237                 "                ]\r\n" +
238                 "            }\r\n" +
239                 "        }\r\n" +
240                 "    }\r\n" +
241                 "}\r\n" +
242                 "";
243
244         String xmloutexpected = "{\r\n" +
245                 "    \"T1\":{\r\n" +
246                 "        \"T2\":{\r\n" +
247                 "            \"T5\":{\r\n" +
248                 "                \"T7\":[\r\n" +
249                 "                    \"T10\":\"blah\",\r\n" +
250                 "                ]\r\n" +
251                 "            }\r\n" +
252                 "        }\r\n" +
253                 "    }\r\n" +
254                 "}\r\n" +
255                 "";
256
257         String xmlout = XmlJsonUtil.removeEmptyStructJson(null, xmlin);
258         log.info(xmlout);
259
260         Assert.assertEquals(xmloutexpected, xmlout);
261     }
262 }