Support Outputs during Import Service
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / TopologyTemplateOperationTest.java
index 82560b0..f14089e 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
 
 package org.openecomp.sdc.be.model.jsonjanusgraph.operations;
 
-import org.janusgraph.core.JanusGraphVertex;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import fj.data.Either;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.janusgraph.core.JanusGraphVertex;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
-import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
+import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.MapCapabilityProperty;
 import org.openecomp.sdc.be.datatypes.elements.MapListCapabilityDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.MapListRequirementDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
+import org.openecomp.sdc.be.model.ComponentParametersView;
 import org.openecomp.sdc.be.model.DistributionStatusEnum;
+import org.openecomp.sdc.be.model.OutputDefinition;
 import org.openecomp.sdc.be.model.PolicyDefinition;
 import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
-import org.openecomp.sdc.be.model.ComponentParametersView;
-import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
-
-import java.util.*;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
-//error scenarios
-public class TopologyTemplateOperationTest {
+@ExtendWith(MockitoExtension.class)
+class TopologyTemplateOperationTest {
 
     private static final String CONTAINER_ID = "containerId";
     @InjectMocks
@@ -71,57 +76,63 @@ public class TopologyTemplateOperationTest {
     private JanusGraphDao janusGraphDao;
 
     @Test
-    public void overrideToscaDataOfToscaElement_failedToFetchContainerVertex() {
+    void overrideToscaDataOfToscaElement_failedToFetchContainerVertex() {
         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(
             JanusGraphOperationStatus.INVALID_ID));
-        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
+        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID,
+            EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
     }
 
     @Test
-    public void overrideToscaDataOfToscaElement_failedToFetchDataVertex() {
+    void overrideToscaDataOfToscaElement_failedToFetchDataVertex() {
         GraphVertex containerVertex = new GraphVertex();
         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
-        when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(
-            JanusGraphOperationStatus.NOT_FOUND));
-        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
+        when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(
+            Either.right(
+                JanusGraphOperationStatus.NOT_FOUND));
+        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID,
+            EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
     }
 
     @Test
-    public void updateToscaDataDeepElements_failedToFetchContainerVertex() {
+    void updateToscaDataDeepElements_failedToFetchContainerVertex() {
         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(
             JanusGraphOperationStatus.INVALID_ID));
-        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
+        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID,
+            EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
     }
 
     @Test
-    public void updateToscaDataDeepElements_failedToFetchDataVertex() {
+    void updateToscaDataDeepElements_failedToFetchDataVertex() {
         GraphVertex containerVertex = new GraphVertex();
         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
-        when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(
-            JanusGraphOperationStatus.NOT_FOUND));
-        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
+        when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(
+            Either.right(
+                JanusGraphOperationStatus.NOT_FOUND));
+        StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID,
+            EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
     }
 
     @Test
-    public void addPolicyToToscaElementSuccessTest(){
+    void addPolicyToToscaElementSuccessTest() {
         JanusGraphOperationStatus status = JanusGraphOperationStatus.OK;
         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
         assertThat(result).isEqualTo(StorageOperationStatus.OK);
     }
 
     @Test
-    public void addPolicyToToscaElementFailureTest(){
+    void addPolicyToToscaElementFailureTest() {
         JanusGraphOperationStatus status = JanusGraphOperationStatus.ALREADY_EXIST;
         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
         assertThat(result).isEqualTo(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
     }
 
     @Test
-    public void testAssociateOrAddCalcCapReqToComponent() {
+    void testAssociateOrAddCalcCapReqToComponent() {
         StorageOperationStatus result;
         GraphVertex graphVertex = new GraphVertex();
         Map<String, MapListRequirementDataDefinition> calcRequirements = new HashMap<>();
@@ -133,7 +144,7 @@ public class TopologyTemplateOperationTest {
     }
 
     @Test
-    public void testSetDataTypesFromGraph() {
+    void testSetDataTypesFromGraph() {
         GraphVertex containerVertex = new GraphVertex();
         ComponentParametersView filter = new ComponentParametersView(true);
         filter.setIgnoreComponentInstancesInterfaces(true);
@@ -151,7 +162,7 @@ public class TopologyTemplateOperationTest {
     }
 
     @Test
-    public void testSetOutputsFromGraph() {
+    void testSetOutputsFromGraph() {
         final GraphVertex containerVertex = new GraphVertex();
         final ComponentParametersView filter = new ComponentParametersView(true);
         filter.setIgnoreOutputs(false);
@@ -170,7 +181,7 @@ public class TopologyTemplateOperationTest {
     }
 
     @Test
-    public void testUpdateDistributionStatus() {
+    void testUpdateDistributionStatus() {
         Either<GraphVertex, StorageOperationStatus> result;
         String uniqueId = "uniqueId";
         User user = new User();
@@ -192,7 +203,8 @@ public class TopologyTemplateOperationTest {
         when(graphVertex.getVertex()).thenReturn(janusGraphVertex);
         when(janusGraphVertex.edges(Direction.IN, EdgeLabelEnum.LAST_DISTRIBUTION_STATE_MODIFIER.name())).thenReturn(edgeIterator);
         when(janusGraphDao
-            .getVertexByPropertyAndLabel(GraphPropertyEnum.USERID, userId, VertexTypeEnum.USER, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(graphVertex));
+            .getVertexByPropertyAndLabel(GraphPropertyEnum.USERID, userId, VertexTypeEnum.USER, JsonParseFlagEnum.NoParse)).thenReturn(
+            Either.left(graphVertex));
         when(janusGraphDao.getVertexById(uniqueId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(graphVertex));
         when(janusGraphDao.createEdge(graphVertex, graphVertex, EdgeLabelEnum.LAST_DISTRIBUTION_STATE_MODIFIER, null)).thenReturn(
             JanusGraphOperationStatus.OK);
@@ -201,6 +213,44 @@ public class TopologyTemplateOperationTest {
         assertThat(result.isLeft()).isTrue();
     }
 
+    @Test
+    void testAssociateOutputsToComponent_OK() {
+        GraphVertex containerVertex = new GraphVertex();
+        String componentName = "componentName";
+        String componentId = UniqueIdBuilder.buildResourceUniqueId();
+        containerVertex.setVertex(Mockito.mock(JanusGraphVertex.class));
+        containerVertex.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
+        containerVertex.setUniqueId(componentId);
+        containerVertex.setLabel(VertexTypeEnum.TOPOLOGY_TEMPLATE);
+        final Map<String, AttributeDataDefinition> outputs = new HashMap<>();
+        outputs.put("out-1", new OutputDefinition());
+
+        when(janusGraphDao.createVertex(any(GraphVertex.class))).thenReturn(Either.left(containerVertex));
+        when(janusGraphDao.createEdge(any(Vertex.class), any(Vertex.class), eq(EdgeLabelEnum.OUTPUTS), anyMap()))
+            .thenReturn(JanusGraphOperationStatus.OK);
+
+        final StorageOperationStatus result = topologyTemplateOperation.associateOutputsToComponent(containerVertex, outputs, CONTAINER_ID);
+        assertEquals(StorageOperationStatus.OK, result);
+    }
+
+    @Test
+    void testAssociateOutputsToComponent_Fail_createVertex() {
+        GraphVertex containerVertex = new GraphVertex();
+        String componentName = "componentName";
+        String componentId = UniqueIdBuilder.buildResourceUniqueId();
+        containerVertex.setVertex(Mockito.mock(JanusGraphVertex.class));
+        containerVertex.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
+        containerVertex.setUniqueId(componentId);
+        containerVertex.setLabel(VertexTypeEnum.TOPOLOGY_TEMPLATE);
+        final Map<String, AttributeDataDefinition> outputs = new HashMap<>();
+        outputs.put("out-1", new OutputDefinition());
+
+        when(janusGraphDao.createVertex(any(GraphVertex.class))).thenReturn(Either.right(JanusGraphOperationStatus.NOT_CREATED));
+
+        final StorageOperationStatus result = topologyTemplateOperation.associateOutputsToComponent(containerVertex, outputs, CONTAINER_ID);
+        assertEquals(StorageOperationStatus.SCHEMA_ERROR, result);
+    }
+
     @SuppressWarnings("unchecked")
     private StorageOperationStatus addPolicyToToscaElementWithStatus(JanusGraphOperationStatus status) {
         GraphVertex componentV = new GraphVertex();
@@ -220,7 +270,8 @@ public class TopologyTemplateOperationTest {
         when(janusGraphDao.getChildVertex(componentV, EdgeLabelEnum.POLICIES, JsonParseFlagEnum.ParseJson)).thenReturn(toscaDataVertexRes);
         Either<GraphVertex, JanusGraphOperationStatus> createVertex = Either.left(dataV);
         when(janusGraphDao.createVertex(any(GraphVertex.class))).thenReturn(createVertex);
-        when(janusGraphDao.createEdge(any(JanusGraphVertex.class), any(JanusGraphVertex.class), any(EdgeLabelEnum.class), any(HashMap.class))).thenReturn(status);
+        when(janusGraphDao.createEdge(any(JanusGraphVertex.class), any(JanusGraphVertex.class), any(EdgeLabelEnum.class),
+            any(HashMap.class))).thenReturn(status);
         return topologyTemplateOperation.addPolicyToToscaElement(componentV, policy, counter);
     }