diff options
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java')
-rw-r--r-- | catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java | 121 |
1 files changed, 91 insertions, 30 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java index 9c7e3848c6..cfdd774f67 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/OutputsBusinessLogicTest.java @@ -20,10 +20,13 @@ package org.openecomp.sdc.be.components.impl; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyMap; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -31,11 +34,13 @@ import static org.mockito.Mockito.when; import fj.data.Either; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import javax.ws.rs.core.Response.Status; import org.apache.commons.collections.CollectionUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -48,18 +53,19 @@ import org.openecomp.sdc.be.components.impl.exceptions.ComponentException; import org.openecomp.sdc.be.components.validation.UserValidations; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; -import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao; +import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.impl.ComponentsUtils; +import org.openecomp.sdc.be.model.AttributeDefinition; import org.openecomp.sdc.be.model.ComponentInstOutputsMap; import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentInstanceOutput; import org.openecomp.sdc.be.model.ComponentInstanceAttribOutput; +import org.openecomp.sdc.be.model.ComponentInstanceOutput; import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.LifecycleStateEnum; +import org.openecomp.sdc.be.model.OutputDefinition; import org.openecomp.sdc.be.model.Service; import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; @@ -92,31 +98,24 @@ class OutputsBusinessLogicTest { @Mock private ComponentsUtils componentsUtilsMock; - @Mock private UserBusinessLogic userAdminMock; - @Mock private ToscaOperationFacade toscaOperationFacadeMock; - @Mock private UserValidations userValidations; - @Mock private IGraphLockOperation graphLockOperation; - @Mock private AttributeDeclarationOrchestrator attributeDeclarationOrchestrator; - @Mock private ApplicationDataTypeCache applicationDataTypeCache; - @Mock private AttributeOperation attributeOperation; - @Mock private JanusGraphDao janusGraphDao; - + @Mock + private ResponseFormatManager responseFormatManager; @InjectMocks private OutputsBusinessLogic testInstance; @@ -126,7 +125,7 @@ class OutputsBusinessLogicTest { private List<ComponentInstanceOutput> outputsList; @BeforeEach - public void setUp() { + void setUp() { MockitoAnnotations.openMocks(this); service = new Service(); service.setUniqueId(COMPONENT_ID); @@ -145,6 +144,10 @@ class OutputsBusinessLogicTest { // add a ComponentInstance final ComponentInstance componentInstance = new ComponentInstance(); componentInstance.setUniqueId(COMPONENT_INSTANCE_ID); + componentInstance.setName(COMPONENT_INSTANCE_ID); + final AttributeDefinition attributeDefinition = new AttributeDefinition(); + attributeDefinition.setName("attribName"); + componentInstance.setAttributes(Collections.singletonList(attributeDefinition)); service.setComponentInstances(Collections.singletonList(componentInstance)); instanceOutputMap = new HashMap<>(); @@ -235,10 +238,8 @@ class OutputsBusinessLogicTest { } private void initMockitoStubbings(List<OutputDefinition> declaredPropertiesToOutputs) { - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn( - Either.left(service)); - when(attributeDeclarationOrchestrator.declareAttributesToOutputs(any(), any())).thenReturn(Either.left( - declaredPropertiesToOutputs)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); + when(attributeDeclarationOrchestrator.declareAttributesToOutputs(any(), any())).thenReturn(Either.left(declaredPropertiesToOutputs)); when(toscaOperationFacadeMock.addOutputsToComponent(any(), any())).thenReturn(Either.left(declaredPropertiesToOutputs)); when(janusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK); when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK); @@ -299,8 +300,7 @@ class OutputsBusinessLogicTest { service.setOutputs(Collections.singletonList(listOutput)); final String NONEXIST_OUTPUT_NAME = "myOutput"; - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); try { testInstance.deleteOutput(COMPONENT_ID, USER_ID, NONEXIST_OUTPUT_NAME); @@ -319,8 +319,7 @@ class OutputsBusinessLogicTest { listOutput.setUniqueId(outputId); service.setOutputs(Collections.singletonList(listOutput)); - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.NOT_FOUND); when(componentsUtilsMock.convertFromStorageResponse(StorageOperationStatus.NOT_FOUND, ComponentTypeEnum.SERVICE)) .thenReturn(ActionStatus.SERVICE_NOT_FOUND); @@ -343,8 +342,7 @@ class OutputsBusinessLogicTest { listOutput.setUniqueId(outputId); service.setOutputs(Collections.singletonList(listOutput)); - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK); when(toscaOperationFacadeMock.deleteOutputOfResource(service, listOutput.getName())).thenReturn(StorageOperationStatus.BAD_REQUEST); when(componentsUtilsMock.convertFromStorageResponse(StorageOperationStatus.BAD_REQUEST)).thenReturn(ActionStatus.INVALID_CONTENT); @@ -368,8 +366,7 @@ class OutputsBusinessLogicTest { listOutput.setUniqueId(outputId); service.setOutputs(Collections.singletonList(listOutput)); - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK); when(toscaOperationFacadeMock.deleteOutputOfResource(service, listOutput.getName())).thenReturn(StorageOperationStatus.OK); when(attributeDeclarationOrchestrator.unDeclareAttributesAsOutputs(service, listOutput)).thenReturn(StorageOperationStatus.BAD_REQUEST); @@ -392,8 +389,7 @@ class OutputsBusinessLogicTest { listOutput.setUniqueId(outputId); service.setOutputs(Collections.singletonList(listOutput)); - when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK); when(toscaOperationFacadeMock.deleteOutputOfResource(service, listOutput.getName())).thenReturn(StorageOperationStatus.OK); when(attributeDeclarationOrchestrator.unDeclareAttributesAsOutputs(service, listOutput)).thenReturn(StorageOperationStatus.OK); @@ -402,4 +398,69 @@ class OutputsBusinessLogicTest { verify(attributeDeclarationOrchestrator, times(1)).unDeclareAttributesAsOutputs(service, listOutput); } + @Test + void testCreateOutputsInGraph_OK() { + final Map<String, OutputDefinition> outputs = new HashMap<>(); + final var out_1 = new OutputDefinition(); + out_1.setName("out-1"); + out_1.setValue("{ get_attribute: [ instanceId, attribName ] }"); + final var out_2 = new OutputDefinition(); + out_2.setName("out-2"); + out_2.setValue("{ get_attribute: [ SELF, oneMoreAttribute ] }"); + outputs.put(out_1.getName(), out_1); + outputs.put(out_2.getName(), out_2); + + final List<OutputDefinition> serviceOutputs = new ArrayList<>(); + final var out_3 = new OutputDefinition(); + out_3.setName("out-3"); + serviceOutputs.add(out_3); + service.setOutputs(serviceOutputs); + + final List<OutputDefinition> list = Arrays.asList(out_1, out_2, out_3); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); + when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK); + when(attributeDeclarationOrchestrator.declareAttributesToOutputs(eq(service), any(ComponentInstOutputsMap.class))) + .thenReturn(Either.left(list)); + when(toscaOperationFacadeMock.addOutputsToComponent(anyMap(), anyString())).thenReturn(Either.left(list)); + + final var result = testInstance.createOutputsInGraph(outputs, service, USER_ID); + assertTrue(result.isLeft()); + assertEquals(3, result.left().value().size()); + assertEquals(list, result.left().value()); + } + + @Test + void testCreateOutputsInGraph_NegativeCreateAndAssociateOutputsStatus() { + final Map<String, OutputDefinition> outputs = new HashMap<>(); + final var out_1 = new OutputDefinition(); + out_1.setName("out-1"); + out_1.setValue("{ get_attribute: [ instanceId, attribName ] }"); + final var out_2 = new OutputDefinition(); + out_2.setName("out-2"); + out_2.setValue("{ get_attribute: [ SELF, oneMoreAttribute ] }"); + outputs.put(out_1.getName(), out_1); + outputs.put(out_2.getName(), out_2); + + final List<OutputDefinition> serviceOutputs = new ArrayList<>(); + final var out_3 = new OutputDefinition(); + out_3.setName("out-3"); + serviceOutputs.add(out_3); + service.setOutputs(serviceOutputs); + + final var list = Arrays.asList(out_1, out_2, out_3); + when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service)); + when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK); + when(attributeDeclarationOrchestrator.declareAttributesToOutputs(eq(service), any(ComponentInstOutputsMap.class))) + .thenReturn(Either.left(list)); + when(toscaOperationFacadeMock.addOutputsToComponent(anyMap(), eq(COMPONENT_ID))) + .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR)); + when(componentsUtilsMock.convertFromStorageResponse(StorageOperationStatus.GENERAL_ERROR)).thenReturn(ActionStatus.GENERAL_ERROR); + when(componentsUtilsMock.getResponseFormat(StorageOperationStatus.GENERAL_ERROR)) + .thenReturn(new ResponseFormat(Status.INTERNAL_SERVER_ERROR.getStatusCode())); + + final var result = testInstance.createOutputsInGraph(outputs, service, USER_ID); + assertNotNull(result); + assertTrue(result.isRight()); + assertEquals(500, result.right().value().getStatus()); + } } |