diff options
author | Joanna Jeremicz <joanna.jeremicz@nokia.com> | 2018-07-23 12:10:41 +0200 |
---|---|---|
committer | Takamune Cho <tc012c@att.com> | 2018-08-09 18:01:41 +0000 |
commit | 5008b80497d3256b724d54e0b26ad398f050571e (patch) | |
tree | 2cba735259e1ff33d6d5b647d10de253403152c2 /appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test | |
parent | dc87c8cea2a6b6f68a8d7521db325fec4319b71a (diff) |
Improve LicenseManagerImpl implementation
- Use STAX API for XML processing instead of parsing it manually
- Rearrange code for clarity and testing
- Adjust JUnits accordingly
Issue-ID: APPC-1024
Change-Id: I9d655b581adb401b0c20bc29eda6a2bce1f2ef89
Signed-off-by: Joanna Jeremicz <joanna.jeremicz@nokia.com>
Diffstat (limited to 'appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test')
3 files changed, 157 insertions, 21 deletions
diff --git a/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/LicenseManagerImplTest.java b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/LicenseManagerImplTest.java index c025c987b..9d2fb87b4 100644 --- a/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/LicenseManagerImplTest.java +++ b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/LicenseManagerImplTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP : APPC * ================================================================================ - * Copyright (C) 2018 Nokia. + * Modifications Copyright (C) 2018 Nokia * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,14 +24,15 @@ package org.onap.appc.licmgr.impl; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; import static org.mockito.BDDMockito.given; import static org.onap.appc.licmgr.Constants.SDC_ARTIFACTS_FIELDS.ARTIFACT_CONTENT; +import java.io.InputStream; import java.util.Collections; -import java.util.Map; import java.util.HashMap; import org.junit.Before; +import java.util.Map; +import java.util.Scanner; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -53,6 +54,7 @@ public class LicenseManagerImplTest { @Before public void setUp() { licenseManager = new LicenseManagerImpl(); + licenseManager.setDAService(licenseDataAccessService); } @Test @@ -65,15 +67,13 @@ public class LicenseManagerImplTest { .willReturn(Collections.emptyMap()); // WHEN THEN - licenseManager.setDAService(licenseDataAccessService); - assertThatExceptionOfType(DataAccessException.class) .isThrownBy(() -> licenseManager.retrieveLicenseModel(VNF_TYPE, VNF_VERSION)) .withMessage(expectedMessage); } @Test - public void retrieveLicenseModel_shouldReturnLicenseModelWithNullValues_whenXmlIsMalformed() { + public void retrieveLicenseModel_shouldThrowException_whenXmlIsMalformed() { // GIVEN String malformedXml = "xyz"; @@ -83,27 +83,21 @@ public class LicenseManagerImplTest { given(licenseDataAccessService.retrieveLicenseModelData(VNF_TYPE, VNF_VERSION)) .willReturn(licenseModelData); - // WHEN - licenseManager.setDAService(licenseDataAccessService); - LicenseModel licenseModel = licenseManager.retrieveLicenseModel(VNF_TYPE, VNF_VERSION); - - // THEN - assertNull(licenseModel.getEntitlementPoolUuid()); - assertNull(licenseModel.getLicenseKeyGroupUuid()); + // WHEN THEN + assertThatExceptionOfType(DataAccessException.class) + .isThrownBy(() -> licenseManager.retrieveLicenseModel(VNF_TYPE, VNF_VERSION)); } @Test public void retrieveLicenseModel_shouldReturnCorrectLicenseModel_whenCorrectXmlExists() { // GIVEN - String expectedEntitlementPool = "default_entitlement_pool"; - String expectedKeyGroup = "default_key_group"; + String expectedEntitlementPool = "default_entitlement_pool_uuid"; + String expectedKeyGroup = "default_lkg_uuid"; - String correctlyFormedXml = String.format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" - + "<parent>\n" - + "<entitlement-pool-uuid>%s</entitlement-pool-uuid>\n" - + "<license-key-group-uuid>%s</license-key-group-uuid>\n" - + "</parent>", expectedEntitlementPool, expectedKeyGroup); + ClassLoader classLoader = getClass().getClassLoader(); + InputStream inputStream = classLoader.getResourceAsStream("test-vf-license-model.xml"); + String correctlyFormedXml = new Scanner(inputStream).useDelimiter("\\A").next(); Map<String, String> licenseModelData = new HashMap<>(); licenseModelData.put(ARTIFACT_CONTENT.name(), correctlyFormedXml); @@ -111,7 +105,6 @@ public class LicenseManagerImplTest { .willReturn(licenseModelData); // WHEN - licenseManager.setDAService(licenseDataAccessService); LicenseModel licenseModel = licenseManager.retrieveLicenseModel(VNF_TYPE, VNF_VERSION); // THEN diff --git a/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/XmlToLicenseModelConverterTest.java b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/XmlToLicenseModelConverterTest.java new file mode 100644 index 000000000..d0c48cc93 --- /dev/null +++ b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/java/org/onap/appc/licmgr/impl/XmlToLicenseModelConverterTest.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018 Nokia + * ============================================================================= + * 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========================================================= + */ + +package org.onap.appc.licmgr.impl; + +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; + +import java.io.IOException; +import java.io.InputStream; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + + +@RunWith(MockitoJUnitRunner.class) +public class XmlToLicenseModelConverterTest { + + @Mock + private XMLStreamReader xmlStreamReader; + + @Mock + private XMLInputFactory xmlInputFactory; + + @Test + public void apply_shouldCloseXMLStreamReader_whenNoExceptionIsThrown() + throws XMLStreamException, IOException { + + // GIVEN + XmlToLicenseModelConverter converter = new XmlToLicenseModelConverter(xmlInputFactory); + given(xmlInputFactory.createXMLStreamReader(any(InputStream.class))).willReturn(xmlStreamReader); + + // WHEN + converter.convert((a, b) -> { + }, anyString(), null); + + // THEN + then(xmlStreamReader).should().close(); + } + + @Test + public void apply_shouldCloseXMLStreamReader_whenExceptionIsThrown() + throws XMLStreamException { + // GIVEN + XmlToLicenseModelConverter converter = new XmlToLicenseModelConverter(xmlInputFactory); + given(xmlInputFactory.createXMLStreamReader(any(InputStream.class))).willReturn(xmlStreamReader); + + // WHEN THEN + assertThatExceptionOfType(XMLStreamException.class) + .isThrownBy(() -> converter.convert((a, b) -> { + throw new XMLStreamException(); + }, anyString(), null)); + then(xmlStreamReader).should().close(); + } +}
\ No newline at end of file diff --git a/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/resources/test-vf-license-model.xml b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/resources/test-vf-license-model.xml new file mode 100644 index 000000000..6f32f50b8 --- /dev/null +++ b/appc-dispatcher/appc-license-manager/appc-license-manager-core/src/test/resources/test-vf-license-model.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- + ============LICENSE_START======================================================= + ONAP : APPC + ================================================================================ + Copyright (C) 2018 Nokia + ============================================================================= + 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========================================================= + --> +<vf-license-model> + <vnf-id>default_vnf_id</vnf-id> + <vendor-name>default_vendor_name</vendor-name> + <feature-group-list> + <feature-group> + <feature-group-uuid>default_feature_group_uuid</feature-group-uuid> + <name>default_fg_name</name> + <description>default_fg_ description</description> + <att-part-number>default_part_number</att-part-number> + <entitlement-pool-list> + <entitlement-pool> + <entitlement-pool-uuid>default_entitlement_pool_uuid</entitlement-pool-uuid> + <name>default_ep_name</name> + <description>default_ep_description</description> + <manufacturer-reference-number>default_manufacturer_reference_number</manufacturer-reference-number> + <threshold-value> + <value>1</value> + <unit>default_unit</unit> + </threshold-value> + <entitlement-metric> + <value>default_em_value</value> + </entitlement-metric> + <increments>default_increments</increments> + <aggregation-function> + <value>default_af_value</value> + </aggregation-function> + <time> + <value>default_time</value> + </time> + </entitlement-pool> + </entitlement-pool-list> + <license-key-group-list> + <license-key-group> + <license-key-group-uuid>default_lkg_uuid</license-key-group-uuid> + <name>default_lkg_name</name> + <description>default_lkg_description</description> + <type>default_lkg_type</type> + </license-key-group> + </license-key-group-list> + </feature-group> + </feature-group-list> +</vf-license-model>
\ No newline at end of file |