diff options
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance')
13 files changed, 561 insertions, 352 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceArtifactsMergeTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceArtifactsMergeTest.java index 3f3fc26558..d4d79b94ce 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceArtifactsMergeTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceArtifactsMergeTest.java @@ -1,13 +1,6 @@ package org.openecomp.sdc.be.components.merge.instance; -import static junit.framework.TestCase.assertEquals; -import static org.mockito.Mockito.when; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; @@ -16,17 +9,18 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic; import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo; -import org.openecomp.sdc.be.model.ArtifactDefinition; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.Operation; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum; import org.openecomp.sdc.exception.ResponseFormat; -import fj.data.Either; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import static junit.framework.TestCase.assertEquals; +import static org.mockito.Mockito.when; public class ComponentInstanceArtifactsMergeTest { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesMergeBLTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesMergeBLTest.java index adf19011db..af6b72ef5d 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesMergeBLTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesMergeBLTest.java @@ -1,21 +1,7 @@ package org.openecomp.sdc.be.components.merge.instance; -import static java.util.Collections.emptyMap; -import static java.util.Collections.singletonList; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - +import com.google.common.collect.ImmutableMap; +import fj.data.Either; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -34,20 +20,24 @@ import org.openecomp.sdc.be.components.utils.ResourceBuilder; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.impl.ComponentsUtils; -import org.openecomp.sdc.be.model.CapabilityDefinition; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentInstanceProperty; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.common.api.ConfigurationSource; import org.openecomp.sdc.common.impl.ExternalConfiguration; import org.openecomp.sdc.common.impl.FSConfigurationSource; -import com.google.common.collect.ImmutableMap; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; -import fj.data.Either; +import static java.util.Collections.emptyMap; +import static java.util.Collections.singletonList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class ComponentInstanceCapabilitiesMergeBLTest { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabiliteisPropertiesMergeTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesPropertiesMergeTest.java index 9b88ecb157..4c803a6148 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabiliteisPropertiesMergeTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceCapabilitiesPropertiesMergeTest.java @@ -1,11 +1,6 @@ package org.openecomp.sdc.be.components.merge.instance; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -import java.util.Collections; -import java.util.List; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -14,21 +9,20 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.impl.ComponentsUtils; -import org.openecomp.sdc.be.model.CapabilityDefinition; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.exception.ResponseFormat; -import fj.data.Either; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) -public class ComponentInstanceCapabiliteisPropertiesMergeTest { +public class ComponentInstanceCapabilitiesPropertiesMergeTest { @InjectMocks - private ComponentInstanceCapabiliteisPropertiesMerge testInstance; + private ComponentInstanceCapabilitiesPropertiesMerge testInstance; @Mock private ComponentCapabilitiesPropertiesMergeBL capabilitiesPropertiesMergeBL; diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceHeatEnvMergeTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceHeatEnvMergeTest.java index f5cd924957..89843420d3 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceHeatEnvMergeTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceHeatEnvMergeTest.java @@ -1,13 +1,6 @@ package org.openecomp.sdc.be.components.merge.instance; -import static org.mockito.Mockito.when; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; @@ -26,7 +19,14 @@ import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum; import org.openecomp.sdc.common.api.ArtifactTypeEnum; -import fj.data.Either; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.when; public class ComponentInstanceHeatEnvMergeTest { @@ -71,7 +71,7 @@ public class ComponentInstanceHeatEnvMergeTest { when(artifactsBusinessLogicMock.updateResourceInstanceArtifactNoContent(Mockito.eq(instanceId), Mockito.eq(resource), Mockito.eq(USER), Mockito.eq(json), Mockito.refEq(artifactUpdateOperation), - Mockito.isNull(ArtifactDefinition.class))) + isNull())) .thenReturn(Either.left(Either.left(new ArtifactDefinition()))); } } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandlerTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandlerTest.java new file mode 100644 index 0000000000..2e5128c180 --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandlerTest.java @@ -0,0 +1,132 @@ +package org.openecomp.sdc.be.components.merge.instance; + +import fj.data.Either; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.openecomp.sdc.be.auditing.impl.AuditingManager; +import org.openecomp.sdc.be.components.merge.input.DeclaredInputsResolver; +import org.openecomp.sdc.be.components.merge.input.InputsValuesMergingBusinessLogic; +import org.openecomp.sdc.be.components.utils.AnnotationBuilder; +import org.openecomp.sdc.be.components.utils.InputsBuilder; +import org.openecomp.sdc.be.components.utils.ResourceBuilder; +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.datatypes.elements.Annotation; +import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; +import org.openecomp.sdc.be.impl.ComponentsUtils; +import org.openecomp.sdc.be.model.InputDefinition; +import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.openecomp.sdc.be.components.utils.Conditions.hasPropertiesWithNames; + +@RunWith(MockitoJUnitRunner.class) +public class ComponentInstanceInputsRedeclareHandlerTest { + + private static final String RESOURCE_ID = "resourceID"; + private ComponentInstanceInputsRedeclareHandler testInstance; + @Mock + private ToscaOperationFacade toscaOperationFacade; + @Mock + private DeclaredInputsResolver declaredInputsResolver; + @Mock + private InputsValuesMergingBusinessLogic inputsValuesMergingBusinessLogic; + @Captor + private ArgumentCaptor<Map<String, List<PropertyDataDefinition>>> getInputPropertiesCaptor; + private Resource currContainer; + private List<InputDefinition> prevDeclaredInputs; + private Annotation annotation1, annotation2, annotation3; + + @Before + public void setUp() throws Exception { + testInstance = new ComponentInstanceInputsRedeclareHandler(declaredInputsResolver, toscaOperationFacade, new ComponentsUtils(mock(AuditingManager.class)), inputsValuesMergingBusinessLogic); + currContainer = new ResourceBuilder() + .addInstanceProperty("inst1", "prop1") + .addInstanceProperty("inst1", "prop2") + .addInstanceInput("inst2", "prop3") + .setUniqueId(RESOURCE_ID) + .build(); + + annotation1 = AnnotationBuilder.create() + .setName("annotation1") + .build(); + + annotation2 = AnnotationBuilder.create() + .setName("annotation2") + .build(); + + annotation3 = AnnotationBuilder.create() + .setName("annotation3") + .build(); + + InputDefinition declaredInput1 = InputsBuilder.create() + .setPropertyId("prop1") + .setName("input1") + .addAnnotation(annotation1) + .addAnnotation(annotation2) + .build(); + + InputDefinition declaredInput2 = InputsBuilder.create() + .setPropertyId("prop2") + .setName("input2") + .addAnnotation(annotation3) + .build(); + + prevDeclaredInputs = asList(declaredInput1, declaredInput2); + } + + @Test + public void redeclareOnlyPropertiesForGivenInstance() { + Resource originInstanceType = new Resource(); + when(declaredInputsResolver.getPreviouslyDeclaredInputsToMerge(anyList(), eq(currContainer), getInputPropertiesCaptor.capture())).thenReturn(prevDeclaredInputs); + when(toscaOperationFacade.updateInputsToComponent(prevDeclaredInputs, RESOURCE_ID)).thenReturn(Either.left(null)); + ActionStatus actionStatus = testInstance.redeclareComponentInputsForInstance(currContainer, "inst1", originInstanceType, Collections.emptyList()); + assertThat(actionStatus).isEqualTo(ActionStatus.OK); + verifyInstanceSpecificPropertiesPassedToDeclaredInputsResolver(); + } + + @Test + public void updateInputsWithAnnotationsFromOriginInstanceType() { + InputDefinition input1 = InputsBuilder.create() + .addAnnotation(annotation2) + .addAnnotation(annotation3) + .setName("prop1") + .build(); + + InputDefinition input2 = InputsBuilder.create() + .setName("prop2") + .build(); + Resource originInstanceType = new ResourceBuilder() + .addInput(input1) + .addInput(input2) + .build(); + + when(declaredInputsResolver.getPreviouslyDeclaredInputsToMerge(anyList(), eq(currContainer), getInputPropertiesCaptor.capture())).thenReturn(prevDeclaredInputs); + when(toscaOperationFacade.updateInputsToComponent(prevDeclaredInputs, RESOURCE_ID)).thenReturn(Either.left(null)); + ActionStatus actionStatus = testInstance.redeclareComponentInputsForInstance(currContainer, "inst1", originInstanceType, Collections.emptyList()); + assertThat(actionStatus).isEqualTo(ActionStatus.OK); + assertThat(prevDeclaredInputs) + .extracting("annotations") + .containsExactlyInAnyOrder(asList(annotation1, annotation3, annotation2), asList(annotation3)); + } + + private void verifyInstanceSpecificPropertiesPassedToDeclaredInputsResolver() { + Map<String, List<PropertyDataDefinition>> allResourceProps = getInputPropertiesCaptor.getValue(); + assertThat(allResourceProps) + .hasEntrySatisfying("inst1", hasPropertiesWithNames("prop1", "prop2")); + } +}
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogicTest.java index 79064bce50..345e93051e 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogicTest.java @@ -1,35 +1,23 @@ package org.openecomp.sdc.be.components.merge.instance; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import java.util.Arrays; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import org.mockito.*; import org.openecomp.sdc.be.components.utils.ResourceBuilder; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.impl.ComponentsUtils; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.exception.ResponseFormat; -import fj.data.Either; +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.mockito.Mockito.*; public class ComponentInstanceMergeDataBusinessLogicTest { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstancePropsAndInputsMergeTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstancePropsAndInputsMergeTest.java index 0efbf5fc5b..c6e5bed950 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstancePropsAndInputsMergeTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstancePropsAndInputsMergeTest.java @@ -1,42 +1,25 @@ package org.openecomp.sdc.be.components.merge.instance; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.anyListOf; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import java.util.List; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.openecomp.sdc.be.components.merge.input.ComponentInputsMergeBL; +import org.mockito.*; import org.openecomp.sdc.be.components.utils.ObjectGenerator; import org.openecomp.sdc.be.components.utils.ResourceBuilder; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.impl.ComponentsUtils; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstanceInput; -import org.openecomp.sdc.be.model.ComponentInstanceProperty; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.InputDefinition; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.exception.ResponseFormat; -import fj.data.Either; +import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; public class ComponentInstancePropsAndInputsMergeTest { private static final String INSTANCE_ID1 = "inst1"; @@ -58,7 +41,7 @@ public class ComponentInstancePropsAndInputsMergeTest { private ComponentInstanceInputsMergeBL componentInstanceInputsMergeBL; @Mock - private ComponentInputsMergeBL componentInputsMergeBL; + private ComponentInstanceInputsRedeclareHandler componentInstanceInputsRedeclareHandler; private Resource resourceToUpdate; @@ -95,13 +78,15 @@ public class ComponentInstancePropsAndInputsMergeTest { dataForMergeHolder.setOrigComponentInputs(oldInputs); dataForMergeHolder.setOrigComponentInstanceProperties(oldInstProps); dataForMergeHolder.setOrigComponentInstanceInputs(oldInstInputs); + Resource currInstanceOriginType = new Resource(); + dataForMergeHolder.setCurrInstanceNode(currInstanceOriginType); ArgumentCaptor<ComponentParametersView> parametersViewCaptor = ArgumentCaptor.forClass(ComponentParametersView.class); when(toscaOperationFacade.getToscaElement(Mockito.eq("resourceId"), parametersViewCaptor.capture())).thenReturn(Either.left(resourceToUpdate)); when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(oldInstInputs, oldInputs, resourceToUpdate, INSTANCE_ID1)).thenReturn(ActionStatus.OK); when(componentInstancePropertiesMergeBL.mergeComponentInstanceProperties(oldInstProps, oldInputs, resourceToUpdate, INSTANCE_ID1)).thenReturn(ActionStatus.OK); - when(componentInputsMergeBL.redeclareComponentInputsForInstance(oldInputs, resourceToUpdate, INSTANCE_ID1)).thenReturn(ActionStatus.OK); + when(componentInstanceInputsRedeclareHandler.redeclareComponentInputsForInstance(resourceToUpdate, INSTANCE_ID1, currInstanceOriginType, oldInputs)).thenReturn(ActionStatus.OK); Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, dataForMergeHolder, resourceToUpdate, INSTANCE_ID1); assertEquals(mergeResult.left().value(), resourceToUpdate); assertComponentFilter(parametersViewCaptor.getValue()); @@ -111,10 +96,10 @@ public class ComponentInstancePropsAndInputsMergeTest { public void mergeDataAfterCreate_failedToMergeComponentInstanceInputs() throws Exception { ResponseFormat errorResponse = new ResponseFormat(); when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(errorResponse); - when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(anyListOf(ComponentInstanceInput.class), anyListOf(InputDefinition.class), any(Component.class), anyString())).thenReturn(ActionStatus.GENERAL_ERROR); + when(componentInstanceInputsMergeBL.mergeComponentInstanceInputs(anyList(), anyList(), any(Component.class), anyString())).thenReturn(ActionStatus.GENERAL_ERROR); Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, new DataForMergeHolder(), new Service(), "inst1"); assertEquals(errorResponse, mergeResult.right().value()); - verifyZeroInteractions(componentInputsMergeBL, componentInstancePropertiesMergeBL, toscaOperationFacade); + verifyZeroInteractions(componentInstanceInputsRedeclareHandler, componentInstancePropertiesMergeBL, toscaOperationFacade); } @Test @@ -125,7 +110,7 @@ public class ComponentInstancePropsAndInputsMergeTest { when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(errorResponse); Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, new DataForMergeHolder(), new Service(), "inst1"); assertEquals(errorResponse, mergeResult.right().value()); - verifyZeroInteractions(componentInputsMergeBL, toscaOperationFacade); + verifyZeroInteractions(componentInstanceInputsRedeclareHandler, toscaOperationFacade); } @Test @@ -140,7 +125,7 @@ public class ComponentInstancePropsAndInputsMergeTest { dataHolder.setOrigComponentInputs(ObjectGenerator.buildInputs("input1", "input2")); Either<Component, ResponseFormat> mergeResult = testInstance.mergeDataAfterCreate(USER, dataHolder, new Service(), "inst1"); assertEquals(errorResponse, mergeResult.right().value()); - verifyZeroInteractions(componentInputsMergeBL); + verifyZeroInteractions(componentInstanceInputsRedeclareHandler); } private void assertComponentFilter(ComponentParametersView value) { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceRelationMergeTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceRelationMergeTest.java index b341052d9e..1b6aa00c69 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceRelationMergeTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceRelationMergeTest.java @@ -1,18 +1,6 @@ package org.openecomp.sdc.be.components.merge.instance; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.stream.IntStream; - +import fj.data.Either; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -21,24 +9,27 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.openecomp.sdc.be.components.impl.utils.ExceptionUtils; import org.openecomp.sdc.be.components.merge.utils.MergeInstanceUtils; +import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder; +import org.openecomp.sdc.be.components.utils.ResourceBuilder; +import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; -import org.openecomp.sdc.be.model.CapabilityDefinition; -import org.openecomp.sdc.be.model.CapabilityRequirementRelationship; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.RelationshipImpl; -import org.openecomp.sdc.be.model.RelationshipInfo; -import org.openecomp.sdc.be.model.RequirementCapabilityRelDef; -import org.openecomp.sdc.be.model.RequirementDefinition; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.impl.ComponentsUtils; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; +import org.openecomp.sdc.exception.ResponseFormat; -import fj.data.Either; +import java.util.*; +import java.util.stream.IntStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.tuple; +import static org.junit.Assert.*; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ComponentInstanceRelationMergeTest { @@ -53,26 +44,29 @@ public class ComponentInstanceRelationMergeTest { private RequirementCapabilityRelDef requirementDef2; private RequirementCapabilityRelDef capabilityDef1; private RequirementCapabilityRelDef capabilityDef2; - + private RequirementCapabilityRelDef capabilityDef3; + + @Mock + private ComponentsUtils componentsUtils; + @Mock private ToscaOperationFacade toscaOperationFacade; @Mock private User user; + @Mock + private ExceptionUtils exceptionUtils; + @Captor - ArgumentCaptor<VfRelationsMergeInfo> argumentCaptor; - - + private ArgumentCaptor<ContainerRelationsMergeInfo> argumentCaptor; + + @Before public void startUp() { - compInstanceRelationMerge = new ComponentInstanceRelationMerge(); - compInstanceRelationMerge.setToscaOperationFacade(toscaOperationFacade); - - MergeInstanceUtils mergeInstanceUtils = new MergeInstanceUtils(); - mergeInstanceUtils.setToscaOperationFacade(toscaOperationFacade); - compInstanceRelationMerge.setMergeInstanceUtils(mergeInstanceUtils); - + MergeInstanceUtils mergeInstanceUtils = new MergeInstanceUtils(toscaOperationFacade, exceptionUtils); + compInstanceRelationMerge = new ComponentInstanceRelationMerge(componentsUtils, mergeInstanceUtils, toscaOperationFacade); + containerComponent = new Service(); List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>(); @@ -80,26 +74,56 @@ public class ComponentInstanceRelationMergeTest { resourceInstancesRelations.add(requirementDef1); requirementDef2 = createRequirementDef("SRV1.VF1.VFI_1", "SRV1.VF3.VFI_1", "SRV1.VF1.VFC_2.VFCI_2", "Requirement2"); resourceInstancesRelations.add(requirementDef2); - - + + capabilityDef1 = createCapabilityDef("SRV1.VF4.VFI_1", "SRV1.VF1.VFI_1", "SRV1.VF1.VFC_3.VFCI_3", "Capability3"); resourceInstancesRelations.add(capabilityDef1); capabilityDef2 = createCapabilityDef("SRV1.VF5.VFI_1", "SRV1.VF1.VFI_1", "SRV1.VF1.VFC_4.VFCI_1", "Capability4"); resourceInstancesRelations.add(capabilityDef2); - containerComponent.setComponentInstancesRelations(resourceInstancesRelations ); + capabilityDef3 = createCapabilityDef("SRV1.VF5.VFI_1", "SRV1.VF1.VFI_1", "grp1Id", "Capability5"); + resourceInstancesRelations.add(capabilityDef3); + + containerComponent.setComponentInstancesRelations(resourceInstancesRelations ); + currentResourceInstance = new ComponentInstance(); currentResourceInstance.setUniqueId("SRV1.VF1.VFI_1"); currentResourceInstance.setComponentUid("SRV1.VF1"); currentResourceInstance.setIsProxy(false); - + updatedContainerComponent = new Service(); updatedContainerComponent.setUniqueId("123123123123123123"); } - + @Test public void testSaveDataBeforeMerge() { + Resource vf = new ResourceBuilder() + .setResourceType(ResourceTypeEnum.VF) + .setComponentType(ComponentTypeEnum.RESOURCE) + .addComponentInstance(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true)) + .addComponentInstance(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true)) + .addComponentInstance(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false)) + .addComponentInstance(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true)) + .addGroup(createGroup("grp1", "grp1Id")) + .build(); + + compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf); + + verify(dataHolder).setVfRelationsInfo(argumentCaptor.capture()); + ContainerRelationsMergeInfo relationsMergeInfo = argumentCaptor.getValue(); + List<RelationMergeInfo> fromRelationsMergeInfo = relationsMergeInfo.getFromRelationsInfo(); + List<RelationMergeInfo> toRelationsMergeInfo = relationsMergeInfo.getToRelationsInfo(); + + assertNotNull("Expected not null list of relations merge info", fromRelationsMergeInfo); + assertNotNull("Expected not null list of relations merge info", toRelationsMergeInfo); + + assertEquals("Expected 2 elements", 2, fromRelationsMergeInfo.size()); + assertEquals("Expected 2 elements", 2, toRelationsMergeInfo.size()); + } + + @Test + public void testSaveDataBeforeMerge_RelationsNull() { Resource vf = new Resource(); List<ComponentInstance> vfcInstances = new ArrayList<>(); @@ -110,32 +134,91 @@ public class ComponentInstanceRelationMergeTest { vf.setComponentInstances(vfcInstances); vf.setComponentType(ComponentTypeEnum.RESOURCE); vf.setResourceType(ResourceTypeEnum.VF); - + + containerComponent.setComponentInstancesRelations(null); compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf); - - verify(dataHolder).setVfRelationsInfo(argumentCaptor.capture()); - VfRelationsMergeInfo relationsMergeInfo = argumentCaptor.getValue(); - List<RelationMergeInfo> fromRelationsMergeInfo = relationsMergeInfo.getFromRelationsInfo(); - List<RelationMergeInfo> toRelationsMergeInfo = relationsMergeInfo.getToRelationsInfo(); - - assertNotNull("Expected not null list of relations merge info", fromRelationsMergeInfo); - assertNotNull("Expected not null list of relations merge info", toRelationsMergeInfo); - - assertEquals("Expected 2 elements", 2, fromRelationsMergeInfo.size()); - assertEquals("Expected 1 elements", 1, toRelationsMergeInfo.size()); + + verify(dataHolder, Mockito.never()).setVfRelationsInfo(Mockito.any()); } + + @Test + public void testSaveDataBeforeMerge_RelationsEmptyList() { + Resource vf = new Resource(); + List<ComponentInstance> vfcInstances = new ArrayList<>(); + vfcInstances.add(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true)); + vfcInstances.add(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true)); + vfcInstances.add(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false)); + vfcInstances.add(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true)); + vf.setComponentInstances(vfcInstances); + vf.setComponentType(ComponentTypeEnum.RESOURCE); + vf.setResourceType(ResourceTypeEnum.VF); + + containerComponent.setComponentInstancesRelations(Collections.emptyList()); + compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf); + + verify(dataHolder, Mockito.never()).setVfRelationsInfo(Mockito.any()); + } + @Test public void testMergeDataAfterCreate_NoSavedData() { + when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(null); compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); - - verify(dataHolder).getVfRelationsMergeInfo(); List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations(); assertNull("Expected no relations", relations); } @Test public void testMergeDataAfterCreate() { + Resource newInstanceOriginVf = new ResourceBuilder() + .setResourceType(ResourceTypeEnum.VF) + .setComponentType(ComponentTypeEnum.RESOURCE) + .addComponentInstance(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true)) + .addComponentInstance(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true)) + .addComponentInstance(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false)) + .addComponentInstance(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true)) + .addGroup(createGroup("grp1", "grp1Id")) + .build(); + + + List<ComponentInstance> componentInstances = new ArrayList<>(); + componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2")); + updatedContainerComponent.setComponentInstances(componentInstances); + + List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>(); + updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations); + + List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>(); + List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>(); + + RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1); + fromRelationsMergeInfo.add(relationMergeInfo1); + RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2); + toRelationsMergeInfo.add(relationMergeInfo2); + + RelationMergeInfo relationMergeInfo3 = new RelationMergeInfo("CapabilityType5", "capabilityE", "grp1", capabilityDef3); + toRelationsMergeInfo.add(relationMergeInfo3); + + ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); + + when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(Either.left(newInstanceOriginVf)); + when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo); + when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK); + Either<Component, ResponseFormat> mergeResult = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); + assertTrue(mergeResult.isLeft()); + List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations(); + assertThat(relations) + .containsExactlyInAnyOrder(requirementDef1, capabilityDef2, capabilityDef3) + .extracting(relation -> relation.resolveSingleRelationship().getRelation().getCapabilityOwnerId(), + relation -> relation.resolveSingleRelationship().getRelation().getRequirementOwnerId()) + .containsExactlyInAnyOrder(tuple("SRV1.VF1.VFC_4.VFCI_1", null), + tuple("grp1Id", null), + tuple(null, "SRV1.VF1.VFC_1.VFCI_1")); + } + + + @Test + public void testMergeDataAfterCreate_FailedToAssociateResourceInstances() { Resource vf = new Resource(); List<ComponentInstance> vfcInstances = new ArrayList<>(); @@ -146,23 +229,23 @@ public class ComponentInstanceRelationMergeTest { vf.setComponentInstances(vfcInstances); vf.setComponentType(ComponentTypeEnum.RESOURCE); vf.setResourceType(ResourceTypeEnum.VF); - + Either<Component, StorageOperationStatus> eitherVF = Either.left(vf); when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(eitherVF); - - + + List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>(); List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>(); - + RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1); fromRelationsMergeInfo.add(relationMergeInfo1); RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2); toRelationsMergeInfo.add(relationMergeInfo2); - - VfRelationsMergeInfo relationsMergeInfo = new VfRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); - - when(dataHolder.getVfRelationsMergeInfo()).thenReturn(relationsMergeInfo); - + + ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); + + when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo); + List<ComponentInstance> componentInstances = new ArrayList<>(); componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2")); componentInstances.add(createVfi("SRV1.VF2", "SRV1.VF2.VFI_1")); @@ -170,34 +253,40 @@ public class ComponentInstanceRelationMergeTest { componentInstances.add(createVfi("SRV1.VF4", "SRV1.VF4.VFI_1")); componentInstances.add(createVfi("SRV1.VF5", "SRV1.VF5.VFI_1")); updatedContainerComponent.setComponentInstances(componentInstances); - + List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>(); updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations); - - when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK); - - compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); - - verify(dataHolder).getVfRelationsMergeInfo(); - verify(toscaOperationFacade).associateResourceInstances(Mockito.anyString(), Mockito.anyList()); - - List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations(); - assertEquals("Expected 2 relations", 2, relations.size()); - - - RequirementCapabilityRelDef capabilityRelDef = relations.get(0); - assertEquals("SRV1.VF1.VFC_4.VFCI_1", capabilityRelDef.resolveSingleRelationship().getRelation().getCapabilityOwnerId()); - assertEquals("SRV1.VF5.VFI_1", capabilityRelDef.getFromNode()); - assertEquals("SRV1.VF1.VFI_2", capabilityRelDef.getToNode()); - - RequirementCapabilityRelDef requirementRelDef = relations.get(1); - assertEquals("SRV1.VF1.VFC_1.VFCI_1", requirementRelDef.resolveSingleRelationship().getRelation().getRequirementOwnerId()); - assertEquals("SRV1.VF1.VFI_2", requirementRelDef.getFromNode()); - assertEquals("SRV1.VF2.VFI_1", requirementRelDef.getToNode()); + + when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.GENERAL_ERROR); + when(componentsUtils.convertFromStorageResponse(Mockito.any())).thenReturn(ActionStatus.GENERAL_ERROR); + + ResponseFormat expectedRresponseFormat = new ResponseFormat(); + when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR, updatedContainerComponent.getUniqueId())).thenReturn(expectedRresponseFormat ); + + Either<Component, ResponseFormat> result = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); + assertTrue(result.isRight()); + assertEquals(expectedRresponseFormat, result.right().value()); } - - - + + @Test + public void testMergeDataAfterCreate_UpdatedContainerEmpty() { + List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>(); + List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>(); + + RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1); + fromRelationsMergeInfo.add(relationMergeInfo1); + RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2); + toRelationsMergeInfo.add(relationMergeInfo2); + + ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); + + when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo); + + Either<Component, ResponseFormat> result = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); + assertTrue(result.isLeft()); + assertEquals(updatedContainerComponent, result.left().value()); + } + @Test public void testMergeDataAfterCreate_OwnerChanged() { Resource vf = new Resource(); @@ -210,23 +299,23 @@ public class ComponentInstanceRelationMergeTest { vf.setComponentInstances(vfcInstances); vf.setComponentType(ComponentTypeEnum.RESOURCE); vf.setResourceType(ResourceTypeEnum.VF); - + Either<Component, StorageOperationStatus> eitherVF = Either.left(vf); when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(eitherVF); - - + + List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>(); List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>(); - + RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1); fromRelationsMergeInfo.add(relationMergeInfo1); RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2); toRelationsMergeInfo.add(relationMergeInfo2); - - VfRelationsMergeInfo relationsMergeInfo = new VfRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); - - when(dataHolder.getVfRelationsMergeInfo()).thenReturn(relationsMergeInfo); - + + ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo); + + when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo); + List<ComponentInstance> componentInstances = new ArrayList<>(); componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2")); componentInstances.add(createVfi("SRV1.VF2", "SRV1.VF2.VFI_1")); @@ -234,26 +323,26 @@ public class ComponentInstanceRelationMergeTest { componentInstances.add(createVfi("SRV1.VF4", "SRV1.VF4.VFI_1")); componentInstances.add(createVfi("SRV1.VF5", "SRV1.VF5.VFI_1")); updatedContainerComponent.setComponentInstances(componentInstances); - + List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>(); updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations); - + when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK); - + compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2"); - - verify(dataHolder).getVfRelationsMergeInfo(); + + verify(dataHolder).getContainerRelationsMergeInfo(); verify(toscaOperationFacade).associateResourceInstances(Mockito.anyString(), Mockito.anyList()); - + List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations(); assertEquals("Expected 2 relations", 2, relations.size()); - - + + RequirementCapabilityRelDef capabilityRelDef = relations.get(0); assertEquals("SRV1.VF1.VFC_4.VFCI_2", capabilityRelDef.resolveSingleRelationship().getRelation().getCapabilityOwnerId()); assertEquals("SRV1.VF5.VFI_1", capabilityRelDef.getFromNode()); assertEquals("SRV1.VF1.VFI_2", capabilityRelDef.getToNode()); - + RequirementCapabilityRelDef requirementRelDef = relations.get(1); assertEquals("SRV1.VF1.VFC_1.VFCI_2", requirementRelDef.resolveSingleRelationship().getRelation().getRequirementOwnerId()); assertEquals("SRV1.VF1.VFI_2", requirementRelDef.getFromNode()); @@ -270,18 +359,18 @@ public class ComponentInstanceRelationMergeTest { ComponentInstance vfi = new ComponentInstance(); vfi.setUniqueId(vfiUniqueId); vfi.setComponentUid(vfId); - + Resource vf = new Resource(); vf.setUniqueId(vfId); return vfi; } - + private ComponentInstance createVfci(String name, String uniqueId, String componentUid, boolean foundVfc) { ComponentInstance compInst = new ComponentInstance(); compInst.setName(name); compInst.setUniqueId(uniqueId); compInst.setComponentUid(componentUid); - + if(foundVfc) { createVfc(componentUid); } @@ -291,6 +380,14 @@ public class ComponentInstanceRelationMergeTest { return compInst; } + public GroupDefinition createGroup(String name, String id) { + return GroupDefinitionBuilder.create() + .setUniqueId(id) + .setInvariantName(name) + .build(); + + } + private void failLoadVfc(String uid) { Either<Component, StorageOperationStatus> eitherVFC = Either.right(StorageOperationStatus.NOT_FOUND); when(toscaOperationFacade.getToscaElement(uid)).thenReturn(eitherVFC); @@ -298,12 +395,13 @@ public class ComponentInstanceRelationMergeTest { private Component createVfc(String uid) { Resource vfc = new Resource(); + vfc.setComponentType(ComponentTypeEnum.RESOURCE); vfc.setUniqueId(uid); - + Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>(); Map<String, List<RequirementDefinition>> requirements = new HashMap<>();; IntStream.range(0, 5).forEach(i -> { - + List<CapabilityDefinition> capList = new LinkedList<>(); capList.add(null); CapabilityDefinition capDef = new CapabilityDefinition(); @@ -312,7 +410,7 @@ public class ComponentInstanceRelationMergeTest { capDef.setType("CapabilityType" + i); capList.add(capDef); capabilities.put("Key" + i, capList); - + List<RequirementDefinition> reqList = new LinkedList<>(); reqList.add(null); RequirementDefinition reqDef = new RequirementDefinition(); @@ -321,59 +419,59 @@ public class ComponentInstanceRelationMergeTest { reqDef.setCapability("CapabilityType" + i); reqList.add(reqDef); requirements.put("Key" + i, reqList); - + }); vfc.setCapabilities(capabilities ); vfc.setRequirements(requirements); - + Either<Component, StorageOperationStatus> eitherVFC = Either.left(vfc); when(toscaOperationFacade.getToscaElement(uid)).thenReturn(eitherVFC); - + return vfc; } - + private RequirementCapabilityRelDef createRequirementCapabilityDef(String fromNode, String toNode) { RequirementCapabilityRelDef reqCapDef = new RequirementCapabilityRelDef(); - + reqCapDef.setFromNode(fromNode); reqCapDef.setToNode(toNode); - + List<CapabilityRequirementRelationship> relationships = new ArrayList<>(); CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship(); relationships.add(capabilityRequirementRelationship); reqCapDef.setRelationships(relationships); - + return reqCapDef; } private RequirementCapabilityRelDef createRequirementDef(String fromNode, String toNode, String ownerId, String requirementUid) { RequirementCapabilityRelDef reqCapDef = createRequirementCapabilityDef(fromNode, toNode); CapabilityRequirementRelationship capabilityRequirementRelationship = reqCapDef.resolveSingleRelationship(); - + RelationshipInfo relationshipInfo = new RelationshipInfo(); relationshipInfo.setRequirementOwnerId(ownerId); relationshipInfo.setRequirementUid(requirementUid); relationshipInfo.setRelationships(new RelationshipImpl()); capabilityRequirementRelationship.setRelation(relationshipInfo ); - - - + + + return reqCapDef; } - + private RequirementCapabilityRelDef createCapabilityDef(String fromNode, String toNode, String ownerId, String capabilityUid) { RequirementCapabilityRelDef reqCapDef = createRequirementCapabilityDef(fromNode, toNode); CapabilityRequirementRelationship capabilityRequirementRelationship = reqCapDef.resolveSingleRelationship(); - + RelationshipInfo relationshipInfo = new RelationshipInfo(); relationshipInfo.setCapabilityOwnerId(ownerId); relationshipInfo.setCapabilityUid(capabilityUid); relationshipInfo.setRelationships(new RelationshipImpl()); capabilityRequirementRelationship.setRelation(relationshipInfo ); - + return reqCapDef; } - + } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ContainerRelationsMergeInfoTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ContainerRelationsMergeInfoTest.java new file mode 100644 index 0000000000..ba207c83de --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ContainerRelationsMergeInfoTest.java @@ -0,0 +1,34 @@ +package org.openecomp.sdc.be.components.merge.instance; + +import org.junit.Test; + +import java.util.List; + +public class ContainerRelationsMergeInfoTest { + + private ContainerRelationsMergeInfo createTestSubject() { + return new ContainerRelationsMergeInfo(null, null); + } + + @Test + public void testGetFromRelationsInfo() throws Exception { + ContainerRelationsMergeInfo testSubject; + List<RelationMergeInfo> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getFromRelationsInfo(); + } + + + @Test + public void testGetToRelationsInfo() throws Exception { + ContainerRelationsMergeInfo testSubject; + List<RelationMergeInfo> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getToRelationsInfo(); + } + +}
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolderTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolderTest.java index 8c265a6be3..1b09e629b2 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolderTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolderTest.java @@ -1,17 +1,12 @@ package org.openecomp.sdc.be.components.merge.instance; +import org.junit.Test; +import org.openecomp.sdc.be.model.*; + import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.junit.Test; -import org.openecomp.sdc.be.model.ArtifactDefinition; -import org.openecomp.sdc.be.model.CapabilityDefinition; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstanceInput; -import org.openecomp.sdc.be.model.ComponentInstanceProperty; -import org.openecomp.sdc.be.model.InputDefinition; - public class DataForMergeHolderTest { private DataForMergeHolder createTestSubject() { @@ -144,7 +139,7 @@ public class DataForMergeHolderTest { @Test public void testSetVfRelationsInfo() throws Exception { DataForMergeHolder testSubject; - VfRelationsMergeInfo vfRelationsMergeInfo = null; + ContainerRelationsMergeInfo vfRelationsMergeInfo = null; // default test testSubject = createTestSubject(); @@ -154,11 +149,11 @@ public class DataForMergeHolderTest { @Test public void testGetVfRelationsMergeInfo() throws Exception { DataForMergeHolder testSubject; - VfRelationsMergeInfo result; + ContainerRelationsMergeInfo result; // default test testSubject = createTestSubject(); - result = testSubject.getVfRelationsMergeInfo(); + result = testSubject.getContainerRelationsMergeInfo(); } @Test diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ExternalRefsMergeBLTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ExternalRefsMergeBLTest.java new file mode 100644 index 0000000000..65f88358a5 --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/ExternalRefsMergeBLTest.java @@ -0,0 +1,97 @@ +package org.openecomp.sdc.be.components.merge.instance; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.openecomp.sdc.be.components.impl.exceptions.ComponentException; +import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.jsontitan.operations.ExternalReferencesOperation; + +import javax.annotation.Resource; +import java.util.*; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +@RunWith(MockitoJUnitRunner.class) +public class ExternalRefsMergeBLTest { + + private static final String NEW_INSTANCE_ID = "NEW_INSTANCE_ID"; + @Resource + private ExternalRefsMergeBL externalRefsMergeBL; + @Mock + private ExternalReferencesOperation externalReferencesOperation; + + private final Map<String, List<String>> externalRefs = new HashMap<>(); + + @Before + public void setUp() throws Exception { + externalRefsMergeBL = new ExternalRefsMergeBL(externalReferencesOperation); + externalRefs.put("a", Arrays.asList("1", "2")); + } + + @Test + public void testExternalArtifactsSaveData_noArtifactsExist() { + Component containerComponent = new org.openecomp.sdc.be.model.Resource(); + ComponentInstance componentInstance = new ComponentInstance(); + when(externalReferencesOperation.getAllExternalReferences(any(), any())) + .thenReturn(new HashMap<>()); + + DataForMergeHolder dataForMergeHolder = new DataForMergeHolder(); + externalRefsMergeBL.saveDataBeforeMerge(dataForMergeHolder, containerComponent, componentInstance, containerComponent); + Map<String, List<String>> originalComponentDeploymentArtifactsCreatedOnTheInstance = dataForMergeHolder.getOrigCompInstExternalRefs(); + + assertThat(originalComponentDeploymentArtifactsCreatedOnTheInstance.size()).isZero(); + } + + @Test + public void testExternalArtifactsSaveData_artifactsExist() { + Component containerComponent = new org.openecomp.sdc.be.model.Resource(); + ComponentInstance componentInstance = new ComponentInstance(); + when(externalReferencesOperation.getAllExternalReferences(any(), any())) + .thenReturn(externalRefs); + + DataForMergeHolder dataForMergeHolder = new DataForMergeHolder(); + externalRefsMergeBL.saveDataBeforeMerge(dataForMergeHolder, containerComponent, componentInstance, containerComponent); + Map<String, List<String>> origCompInstExternalRefs = dataForMergeHolder.getOrigCompInstExternalRefs(); + + assertThat(origCompInstExternalRefs.size()).isEqualTo(1); + assertThat(origCompInstExternalRefs.containsKey("a")).isTrue(); + } + + @Test + public void testExternalArtifactsRestoreData_noArtifacts() { + Component containerComponent = new org.openecomp.sdc.be.model.Resource(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId(NEW_INSTANCE_ID); + containerComponent.setComponentInstances(Collections.singletonList(ci)); + DataForMergeHolder dataForMergeHolder = new DataForMergeHolder(); + externalRefsMergeBL.mergeDataAfterCreate(new User(), dataForMergeHolder, containerComponent, NEW_INSTANCE_ID); + verifyZeroInteractions(externalReferencesOperation); + } + + @Test + public void testExternalArtifactsRestoreData_hasArtifacts() { + Component containerComponent = new org.openecomp.sdc.be.model.Resource(); + ComponentInstance ci = new ComponentInstance(); + ci.setUniqueId(NEW_INSTANCE_ID); + containerComponent.setComponentInstances(Collections.singletonList(ci)); + DataForMergeHolder dataForMergeHolder = new DataForMergeHolder(); + dataForMergeHolder.setOrigComponentInstanceExternalRefs(externalRefs); + externalRefsMergeBL.mergeDataAfterCreate(new User(), dataForMergeHolder, containerComponent, NEW_INSTANCE_ID); + verify(externalReferencesOperation, times(1)).addAllExternalReferences(any(), eq(NEW_INSTANCE_ID), eq(externalRefs)); + } + + @Test(expected=ComponentException.class) + public void testExternalArtifactsRestoreData_noCI() { + Component containerComponent = new org.openecomp.sdc.be.model.Resource(); + DataForMergeHolder dataForMergeHolder = new DataForMergeHolder(); + externalRefsMergeBL.mergeDataAfterCreate(new User(), dataForMergeHolder, containerComponent, NEW_INSTANCE_ID); + } +}
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/RelationMergeInfoTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/RelationMergeInfoTest.java index 7173af3d4c..27aec7191a 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/RelationMergeInfoTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/RelationMergeInfoTest.java @@ -19,35 +19,6 @@ public class RelationMergeInfoTest { result = testSubject.getCapReqType(); } - @Test - public void testSetCapReqType() throws Exception { - RelationMergeInfo testSubject; - String type = ""; - - // default test - testSubject = createTestSubject(); - testSubject.setCapReqType(type); - } - - @Test - public void testGetVfcInstanceName() throws Exception { - RelationMergeInfo testSubject; - String result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getVfcInstanceName(); - } - - @Test - public void testSetVfcInstanceName() throws Exception { - RelationMergeInfo testSubject; - String vfcInstanceName = ""; - - // default test - testSubject = createTestSubject(); - testSubject.setVfcInstanceName(vfcInstanceName); - } @Test public void testGetRelDef() throws Exception { @@ -59,15 +30,7 @@ public class RelationMergeInfoTest { result = testSubject.getRelDef(); } - @Test - public void testSetRelDef() throws Exception { - RelationMergeInfo testSubject; - RequirementCapabilityRelDef relDef = null; - // default test - testSubject = createTestSubject(); - testSubject.setRelDef(relDef); - } @Test public void testGetCapReqName() throws Exception { @@ -79,13 +42,4 @@ public class RelationMergeInfoTest { result = testSubject.getCapReqName(); } - @Test - public void testSetCapReqName() throws Exception { - RelationMergeInfo testSubject; - String capReqName = ""; - - // default test - testSubject = createTestSubject(); - testSubject.setCapReqName(capReqName); - } }
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/VfRelationsMergeInfoTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/VfRelationsMergeInfoTest.java deleted file mode 100644 index 40a5ea5ee3..0000000000 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/instance/VfRelationsMergeInfoTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.openecomp.sdc.be.components.merge.instance; - -import java.util.List; - -import org.junit.Test; - -public class VfRelationsMergeInfoTest { - - private VfRelationsMergeInfo createTestSubject() { - return new VfRelationsMergeInfo(null, null); - } - - @Test - public void testGetFromRelationsInfo() throws Exception { - VfRelationsMergeInfo testSubject; - List<RelationMergeInfo> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getFromRelationsInfo(); - } - - @Test - public void testSetFromRelationsInfo() throws Exception { - VfRelationsMergeInfo testSubject; - List<RelationMergeInfo> fromRelationsInfo = null; - - // default test - testSubject = createTestSubject(); - testSubject.setFromRelationsInfo(fromRelationsInfo); - } - - @Test - public void testGetToRelationsInfo() throws Exception { - VfRelationsMergeInfo testSubject; - List<RelationMergeInfo> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getToRelationsInfo(); - } - - @Test - public void testSetToRelationsInfo() throws Exception { - VfRelationsMergeInfo testSubject; - List<RelationMergeInfo> toRelationsInfo = null; - - // default test - testSubject = createTestSubject(); - testSubject.setToRelationsInfo(toRelationsInfo); - } -}
\ No newline at end of file |