Refinements and test additions to XmlParser 27/13727/1
authorGaurav Agrawal <gaurav.agrawal@huawei.com>
Wed, 20 Sep 2017 07:13:42 +0000 (12:43 +0530)
committerGaurav Agrawal <gaurav.agrawal@huawei.com>
Wed, 20 Sep 2017 07:13:42 +0000 (12:43 +0530)
Changes includes
1) Added validation for invalid length
2) Added testcases to test length

Change-Id: Iefd56ca470382be139f185fdf84b6c0de0fa99f6
Issue-Id: CCSDK-100
Signed-off-by: Gaurav Agrawal <gaurav.agrawal@huawei.com>
restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java
restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestXmlParser.java
restapi-call-node/provider/src/test/resources/invalidlength.xml [new file with mode: 0644]

index 7ef776d..9aede5b 100644 (file)
@@ -61,7 +61,7 @@ public final class XmlParser {
             SAXParser saxParser = factory.newSAXParser();
             InputStream in = new ByteArrayInputStream(s.getBytes());
             saxParser.parse(in, handler);
-        } catch (ParserConfigurationException | IOException | SAXException e) {
+        } catch (ParserConfigurationException | IOException | SAXException | NumberFormatException e) {
             throw new SvcLogicException("Unable to convert XML to properties" + e.getLocalizedMessage(), e);
         }
         return handler.getProperties();
index e8567d5..c6bf4a8 100644 (file)
@@ -21,6 +21,9 @@
 
 package jtest.org.onap.ccsdk.sli.plugins.restapicall;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
@@ -31,6 +34,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.junit.Test;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.plugins.restapicall.XmlParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,6 +66,48 @@ public class TestXmlParser {
         in.close();
     }
 
+    @Test
+    public void testValidLength() throws Exception {
+        BufferedReader in = new BufferedReader(
+            new InputStreamReader(ClassLoader.getSystemResourceAsStream("test3.xml"))
+        );
+        StringBuilder b = new StringBuilder();
+        String line;
+        while ((line = in.readLine()) != null)
+            b.append(line).append('\n');
+
+        Set<String> listNameList = new HashSet<String>();
+        listNameList.add("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfImport");
+        listNameList.add("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfExport");
+
+        Map<String, String> mm = XmlParser.convertToProperties(b.toString(), listNameList);
+
+        assertThat(mm.get("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfExport[5]"), is("SET_RESET_LP"));
+        assertThat(mm.get("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfImport[0]"), is("SET_BVOIP_IN"));
+
+        logProperties(mm);
+        in.close();
+    }
+
+    @Test(expected = SvcLogicException.class)
+    public void testInvalidLength() throws Exception {
+        BufferedReader in = new BufferedReader(
+            new InputStreamReader(ClassLoader.getSystemResourceAsStream("invalidlength.xml"))
+        );
+        StringBuilder b = new StringBuilder();
+        String line;
+        while ((line = in.readLine()) != null)
+            b.append(line).append('\n');
+
+        Set<String> listNameList = new HashSet<String>();
+        listNameList.add("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfImport");
+        listNameList.add("ApplyGroupResponse.ApplyGroupResponseData.VrfDetails.VrfExport");
+
+        Map<String, String> mm = XmlParser.convertToProperties(b.toString(), listNameList);
+        logProperties(mm);
+        in.close();
+    }
+
     private void logProperties(Map<String, String> mm) {
         List<String> ll = new ArrayList<>();
         for (Object o : mm.keySet())
diff --git a/restapi-call-node/provider/src/test/resources/invalidlength.xml b/restapi-call-node/provider/src/test/resources/invalidlength.xml
new file mode 100644 (file)
index 0000000..c086d56
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ============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=========================================================
+  -->
+
+<ApplyGroupResponse xmlns="http://onap.org/vpn/schema/v1"
+    xmlns:ns2="http://onap.org/prov/vpn/schema/v2">
+    <ApplyGroupResponseData>
+        <ServiceInstanceId>ICOREPVC-81114561</ServiceInstanceId>
+        <VrfDetails>
+            <End2EndVpnKey>VPNL811182</End2EndVpnKey>
+            <VpnId>811182</VpnId>
+            <VrfName>21302:811182</VrfName>
+            <VrfImport>SET_BVOIP_IN</VrfImport>
+            <VrfImport>SET6_BVOIP_IN</VrfImport>
+            <VrfExport_length>a</VrfExport_length>
+            <VrfExport>SET6_DSU</VrfExport>
+            <VrfExport>SET_DSU</VrfExport>
+            <VrfExport>SET6_MANAGED</VrfExport>
+            <VrfExport>SET_MANAGED</VrfExport>
+            <VrfExport>SET_LOVRF_COMMUNITY</VrfExport>
+            <VrfExport>SET_RESET_LP</VrfExport>
+            <ApplyGroup>
+                <ns2:ApplyGroup>AG_MAX_MCASTROUTES</ns2:ApplyGroup>
+            </ApplyGroup>
+        </VrfDetails>
+    </ApplyGroupResponseData>
+    <response-code>200</response-code>
+    <response-message>Success</response-message>
+    <ack-final-indicator>Y</ack-final-indicator>
+</ApplyGroupResponse>
+