diff options
author | Gaurav Agrawal <gaurav.agrawal@huawei.com> | 2017-09-20 12:43:42 +0530 |
---|---|---|
committer | Gaurav Agrawal <gaurav.agrawal@huawei.com> | 2017-09-20 12:43:42 +0530 |
commit | 72e394582ceeb86e35d2c5cb34b244b38ae5659f (patch) | |
tree | fed5e0395ea15d35e48f77a52677abec726a0a03 /restapi-call-node | |
parent | ba209b4de55c56e5c427e3389518966f2c896661 (diff) |
Refinements and test additions to XmlParser
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>
Diffstat (limited to 'restapi-call-node')
3 files changed, 96 insertions, 1 deletions
diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java index 7ef776da1..9aede5b7e 100644 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java +++ b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java @@ -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(); diff --git a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestXmlParser.java b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestXmlParser.java index e8567d591..c6bf4a8b9 100644 --- a/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestXmlParser.java +++ b/restapi-call-node/provider/src/test/java/jtest/org/onap/ccsdk/sli/plugins/restapicall/TestXmlParser.java @@ -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 index 000000000..c086d564e --- /dev/null +++ b/restapi-call-node/provider/src/test/resources/invalidlength.xml @@ -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> + |