From d4f93c398c370a099b7b5537dbc86672200ebe19 Mon Sep 17 00:00:00 2001 From: Tomasz Golabek Date: Wed, 4 Sep 2019 12:56:12 +0200 Subject: unit tests - NetworkPackageHealer Additional junit tests using mockito Change-Id: I1a48d0dd15a3319dc096816ea36346f4b13322fc Issue-ID: SDC-2326 Signed-off-by: Tomasz Golabek --- .../healing/healers/NetworkPackageHealerTest.java | 212 ++++++++++++++------- 1 file changed, 142 insertions(+), 70 deletions(-) (limited to 'openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test') 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 index d94d10cf0f..cf813f8363 100644 --- 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 @@ -12,12 +12,22 @@ * 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. + * ================================================================================ + * Modifications copyright (c) 2019 Nokia + * ================================================================================ */ package org.openecomp.sdc.healing.healers; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.datatypes.Id; import com.amdocs.zusammen.datatypes.item.Info; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -27,6 +37,8 @@ import org.mockito.Mock; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import static org.mockito.Mockito.any; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplateCandidateValidationData; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplateValidationData; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @@ -35,82 +47,142 @@ 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.OrchestrationTemplateCandidateData; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; +import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder; 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 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 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())); - } + private static final String ITEM_ID = "ITEM_ID"; + private static final String ANY = "ANY"; + private static final String UTF_8 = "UTF-8"; + private static final String FILE_SUFFIX = "fileSuffix"; + private static final String FILE_NAME = "fileName"; + private static final String OTHER_THAN_ANY = "OTHER_THAN_ANY"; + private static final String NETWORK_PACKAGE = "NetworkPackage"; + + @Mock + private VendorSoftwareProductInfoDao vspInfoDaoMock; + @Mock + private ZusammenAdaptor zusammenAdaptorMock; + @Mock + private Element element; + @Mock + private Element subElement; + @Mock + private ElementInfo elementInfo; + @Mock + private Element subElement2; + @Mock + private CandidateEntityBuilder candidateEntityBuilder; + @Mock + private OrchestrationTemplateCandidateData orchestrationData; + + 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, candidateEntityBuilder); + } + + @After + public void tearDown() { + SessionContextProviderFactory.getInstance().createInterface().close(); + } + + @Test + public void testIsHealingNeeded_Positive() { + VspDetails vspDetails = new VspDetails(ITEM_ID, new Version()); + vspDetails.setOnboardingMethod(NETWORK_PACKAGE); + Mockito.when(vspInfoDaoMock.get(any())).thenReturn(vspDetails); + Collection 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(NETWORK_PACKAGE); + Mockito.when(vspInfoDaoMock.get(any())).thenReturn(vspDetails); + Collection 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(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())); + } + + @Test + public void shouldHeal() throws Exception { + Mockito.when(zusammenAdaptorMock.getElementByName(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(Optional.of(element)); + Mockito.when(zusammenAdaptorMock.saveElement(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(element); + Mockito.when(element.getSubElements()).thenReturn(Collections.singletonList(subElement)); + Mockito.when( + zusammenAdaptorMock.getElementInfoByName(Mockito.any(), Mockito.any(), Mockito.isNull(), Mockito.any())).thenReturn(Optional.of(elementInfo)); + ArrayList subElements = new ArrayList<>(); + Mockito.when(element.getData()).thenReturn(IOUtils.toInputStream(ANY, UTF_8)); + Mockito.when(subElement2.getData()).thenReturn(IOUtils.toInputStream(ANY, UTF_8)); + subElements.add(subElement); + subElements.add(subElement2); + Mockito.when(zusammenAdaptorMock.listElementData(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(subElements); + Info info = new Info(); + info.setName(OrchestrationTemplateCandidateValidationData.name()); + Mockito.when(element.getInfo()).thenReturn(info); + Id id = new Id(); + Mockito.when(element.getElementId()).thenReturn(id); + Info subinfo = new Info(); + Info subinfo2 = new Info(); + Map props2 = new HashMap<>(); + props2.put(FILE_SUFFIX, ANY); + props2.put(FILE_NAME, ANY); + subinfo2.setProperties(props2); + subinfo2.setName(ElementType.OrchestrationTemplateCandidateContent.name()); + Map props = new HashMap<>(); + props.put(FILE_SUFFIX, ANY); + props.put(FILE_NAME, OTHER_THAN_ANY); + subinfo.setProperties(props); + subinfo.setName(OrchestrationTemplateValidationData.name()); + Mockito.when(subElement.getInfo()).thenReturn(subinfo); + Mockito.when(subElement2.getInfo()).thenReturn(subinfo2); + Mockito.when(candidateEntityBuilder.buildCandidateEntityFromZip(Mockito.isNull(), Mockito.any(), Mockito.any(), Mockito.isNull())).thenReturn(orchestrationData); + Mockito.when(orchestrationData.getFilesDataStructure()).thenReturn(ANY); + + networkPackageHealer.heal(ITEM_ID, Version.valueOf("1.1")); + + Mockito.verify(zusammenAdaptorMock, Mockito.times(3)).saveElement(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); + } } -- cgit 1.2.3-korg