diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl')
6 files changed, 287 insertions, 11 deletions
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml index 07e3226006..9904b97858 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml @@ -75,7 +75,11 @@ <version>${project.version}</version> <scope>runtime</scope> </dependency> - + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealer.java index 4bb5bc865a..0416cc9479 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealer.java @@ -33,10 +33,19 @@ import java.util.Set; public class ManufacturerReferenceNumberHealer implements Healer { private static final String MANUFACTURER_REFERENCE_NUMBER = "MRN"; - private VendorLicenseFacade vendorLicenseFacade = VendorLicenseFacadeFactory.getInstance() - .createInterface(); - private static final FeatureGroupDao featureGroupDao = - FeatureGroupDaoFactory.getInstance().createInterface(); + private final VendorLicenseFacade vendorLicenseFacade; + private final FeatureGroupDao featureGroupDao; + + public ManufacturerReferenceNumberHealer() { + this(VendorLicenseFacadeFactory.getInstance().createInterface(), FeatureGroupDaoFactory + .getInstance().createInterface()); + } + + public ManufacturerReferenceNumberHealer(VendorLicenseFacade vendorLicenseFacade, + FeatureGroupDao featureGroupDao) { + this.vendorLicenseFacade = vendorLicenseFacade; + this.featureGroupDao = featureGroupDao; + } @Override public boolean isHealingNeeded(String itemId, Version version) { diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NetworkPackageHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NetworkPackageHealer.java index 5ff90ae1c1..e1807bafad 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NetworkPackageHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NetworkPackageHealer.java @@ -75,14 +75,22 @@ public class NetworkPackageHealer implements Healer { "Vsp with invalid structure: does not contain element OrchestrationTemplateValidationData" + " under OrchestrationTemplate element"; - private VendorSoftwareProductInfoDao vspInfoDao; - private ZusammenAdaptor zusammenAdaptor; - private CandidateService candidateService; + private final VendorSoftwareProductInfoDao vspInfoDao; + private final ZusammenAdaptor zusammenAdaptor; + private final CandidateService candidateService; public NetworkPackageHealer() { - this.vspInfoDao = VendorSoftwareProductInfoDaoFactory.getInstance().createInterface(); - this.zusammenAdaptor = ZusammenAdaptorFactory.getInstance().createInterface(); - this.candidateService = CandidateServiceFactory.getInstance().createInterface(); + this(VendorSoftwareProductInfoDaoFactory.getInstance().createInterface(), + ZusammenAdaptorFactory.getInstance().createInterface(), CandidateServiceFactory + .getInstance().createInterface()); + } + + public NetworkPackageHealer(VendorSoftwareProductInfoDao vspInfoDao, + ZusammenAdaptor zusammenAdaptor, + CandidateService candidateService) { + this.vspInfoDao = vspInfoDao; + this.zusammenAdaptor = zusammenAdaptor; + this.candidateService = candidateService; } @Override diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealerTest.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealerTest.java new file mode 100644 index 0000000000..2d432fcee5 --- /dev/null +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ManufacturerReferenceNumberHealerTest.java @@ -0,0 +1,126 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.healing.healers; + +import static java.lang.Boolean.FALSE; +import static java.lang.Boolean.TRUE; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.openecomp.sdc.vendorlicense.dao.FeatureGroupDao; +import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; +import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; +import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity; +import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +public class ManufacturerReferenceNumberHealerTest { + + @Mock + private VendorLicenseFacade vendorLicenseFacade; + @Mock + private FeatureGroupDao featureGroupDao; + private ManufacturerReferenceNumberHealer manufacturerReferenceNumberHealer; + + private final String ITEM_ID = "ITEM_ID"; + private final Version version = new Version(); + + @Before + public void init(){ + MockitoAnnotations.initMocks(this); + manufacturerReferenceNumberHealer = new ManufacturerReferenceNumberHealer + (vendorLicenseFacade, featureGroupDao); + } + + @Test + public void testIsHealingNeeded_Positive() { + Collection<EntitlementPoolEntity> entitlementPoolEntities = new ArrayList<>(); + entitlementPoolEntities.add(new EntitlementPoolEntity(ITEM_ID, version, "")); + + when(vendorLicenseFacade.listEntitlementPools(ITEM_ID, version )).thenReturn(entitlementPoolEntities); + Assert.assertEquals(TRUE, manufacturerReferenceNumberHealer.isHealingNeeded("ITEM_ID", version)); + } + + @Test + public void testIsHealingNeeded_Negative() { + Collection<EntitlementPoolEntity> entitlementPoolEntities = new ArrayList<>(); + EntitlementPoolEntity entitlementPoolEntity = new EntitlementPoolEntity(ITEM_ID, version, ""); + entitlementPoolEntity.setManufacturerReferenceNumber("MRN"); + entitlementPoolEntities.add(entitlementPoolEntity); + + when(vendorLicenseFacade.listEntitlementPools(ITEM_ID, version )).thenReturn(entitlementPoolEntities); + Assert.assertEquals(FALSE, manufacturerReferenceNumberHealer.isHealingNeeded("ITEM_ID", version)); + } + + @Test + public void testHeal() throws Exception { + + Collection<EntitlementPoolEntity> entitlementPoolEntities = getEntitlementPoolEntities(); + when(vendorLicenseFacade.listEntitlementPools(ITEM_ID, version)).thenReturn(entitlementPoolEntities); + doNothing().when(vendorLicenseFacade).updateEntitlementPool(any()); + Collection<LicenseKeyGroupEntity> licenseKeyGroupEntities = getLicenseKeyGroupEntities(); + when(vendorLicenseFacade.listLicenseKeyGroups(ITEM_ID, version)).thenReturn + (licenseKeyGroupEntities); + doNothing().when(vendorLicenseFacade).updateLicenseKeyGroup(any()); + + FeatureGroupEntity featureGroupEntity = new FeatureGroupEntity(); + when(vendorLicenseFacade.getFeatureGroup(any())).thenReturn(featureGroupEntity); + + Collection<FeatureGroupEntity> featureGroupEntities = new ArrayList<>(); + featureGroupEntities.add(featureGroupEntity); + when(vendorLicenseFacade.listFeatureGroups(ITEM_ID, version)).thenReturn + (featureGroupEntities); + doNothing().when(featureGroupDao).update(any()); + + manufacturerReferenceNumberHealer.heal(ITEM_ID, version); + + verify(vendorLicenseFacade, times(1)).updateEntitlementPool(any()); + verify(vendorLicenseFacade,times(1)).updateLicenseKeyGroup(any()); + } + + private Collection<EntitlementPoolEntity> getEntitlementPoolEntities() { + Set<String> oneReferencingFeatureGroups = new HashSet<String>(Arrays.asList("1")); + Collection<EntitlementPoolEntity> entitlementPoolEntities = new ArrayList<>(); + EntitlementPoolEntity entitlementPoolEntity = new EntitlementPoolEntity(); + entitlementPoolEntity.setReferencingFeatureGroups(oneReferencingFeatureGroups); + entitlementPoolEntities.add(entitlementPoolEntity); + return entitlementPoolEntities; + } + + private Collection<LicenseKeyGroupEntity> getLicenseKeyGroupEntities() { + Set<String> oneReferencingFeatureGroups = new HashSet<String>(Arrays.asList("1")); + Collection<LicenseKeyGroupEntity> licenseKeyGroupEntities = new ArrayList<>(); + LicenseKeyGroupEntity licenseKeyGroupEntity = new LicenseKeyGroupEntity(); + licenseKeyGroupEntity.setReferencingFeatureGroups(oneReferencingFeatureGroups); + licenseKeyGroupEntities.add(licenseKeyGroupEntity); + return licenseKeyGroupEntities; + } +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/NetworkPackageHealerTest.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/NetworkPackageHealerTest.java new file mode 100644 index 0000000000..d94d10cf0f --- /dev/null +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/NetworkPackageHealerTest.java @@ -0,0 +1,116 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.healing.healers; + +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.datatypes.item.Info; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; + +import static java.lang.Boolean.FALSE; +import static java.lang.Boolean.TRUE; +import static org.mockito.Mockito.any; + +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.openecomp.core.zusammen.api.ZusammenAdaptor; +import org.openecomp.sdc.common.session.SessionContextProviderFactory; +import org.openecomp.sdc.datatypes.model.ElementType; +import org.openecomp.sdc.healing.healers.NetworkPackageHealer; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.versioning.dao.types.Version; +import java.util.ArrayList; +import java.util.Collection; + +public class NetworkPackageHealerTest { + + @Mock + private VendorSoftwareProductInfoDao vspInfoDaoMock; + @Mock + private ZusammenAdaptor zusammenAdaptorMock; + @Mock + private CandidateService candidateService; + + private NetworkPackageHealer networkPackageHealer; + private static final String tenant = "dox"; + + @Before + public void init() { + SessionContextProviderFactory.getInstance().createInterface().create("test", tenant); + MockitoAnnotations.initMocks(this); + networkPackageHealer = new NetworkPackageHealer(vspInfoDaoMock, zusammenAdaptorMock, candidateService); + } + + @After + public void tearDown(){ + SessionContextProviderFactory.getInstance().createInterface().close(); + } + + @Test + public void testIsHealingNeeded_Positive() { + VspDetails vspDetails = new VspDetails("ITEM_ID",new Version()); + vspDetails.setOnboardingMethod("NetworkPackage"); + Mockito.when(vspInfoDaoMock.get(any())).thenReturn(vspDetails); + Collection<ElementInfo> elementInfos = new ArrayList<>(); + ElementInfo elementInfo = new ElementInfo(); + Info info = new Info(); + info.setName(ElementType.OrchestrationTemplateCandidate.name()); + elementInfo.setInfo(info); + elementInfos.add(elementInfo); + Mockito.when(zusammenAdaptorMock.listElementsByName(any(),any(),any(),any())).thenReturn + (elementInfos); + Assert.assertEquals(TRUE,networkPackageHealer.isHealingNeeded("ITEM_ID", new Version())); +} + + @Test + public void testIsHealingNeeded_Negative() { + VspDetails vspDetails = new VspDetails("ITEM_ID",new Version()); + vspDetails.setOnboardingMethod("NetworkPackage"); + Mockito.when(vspInfoDaoMock.get(any())).thenReturn(vspDetails); + Collection<ElementInfo> elementInfos = new ArrayList<>(); + + ElementInfo elementInfo = new ElementInfo(); + Info info = new Info(); + info.setName(ElementType.OrchestrationTemplateCandidate.name()); + elementInfo.setInfo(info); + elementInfos.add(elementInfo); + + ElementInfo elementInfo1 = new ElementInfo(); + Info info1 = new Info(); + info1.setName(ElementType.OrchestrationTemplateCandidateValidationData.name()); + elementInfo1.setInfo(info1); + elementInfos.add(elementInfo1); + + Mockito.when(zusammenAdaptorMock.listElementsByName(any(),any(),any(),any())).thenReturn + (elementInfos); + Assert.assertEquals(FALSE,networkPackageHealer.isHealingNeeded("ITEM_ID", new Version())); + } + + @Test + public void testIsHealingNeeded_OnboardingMethod() { + VspDetails vspDetails = new VspDetails("ITEM_ID",new Version()); + vspDetails.setOnboardingMethod("Manual"); + Mockito.when(vspInfoDaoMock.get(any())).thenReturn(vspDetails); + + Assert.assertEquals(FALSE,networkPackageHealer.isHealingNeeded("ITEM_ID", new Version())); + } +} diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/logback-test.xml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..04378bf3ad --- /dev/null +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/logback-test.xml @@ -0,0 +1,13 @@ +<configuration> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <root level="off"> + <appender-ref ref="STDOUT" /> + </root> + +</configuration>
\ No newline at end of file |