Sync Integ to Master
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsontitan / operations / TopologyTemplateOperationTest.java
1 package org.openecomp.sdc.be.model.jsontitan.operations;
2
3 import fj.data.Either;
4
5 import org.apache.tinkerpop.gremlin.structure.Direction;
6 import org.apache.tinkerpop.gremlin.structure.Edge;
7 import org.apache.tinkerpop.gremlin.structure.Property;
8 import org.apache.tinkerpop.gremlin.structure.Vertex;
9 import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality;
10 import org.junit.Test;
11 import org.junit.runner.RunWith;
12 import org.mockito.InjectMocks;
13 import org.mockito.Mock;
14 import org.mockito.Mockito;
15 import org.mockito.junit.MockitoJUnitRunner;
16 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
17 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
18 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
19 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
20 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
21 import org.openecomp.sdc.be.datatypes.elements.MapCapabiltyProperty;
22 import org.openecomp.sdc.be.datatypes.elements.MapDataDefinition;
23 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
24 import org.openecomp.sdc.be.model.PolicyDefinition;
25 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
26 import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
27 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
28
29 import com.thinkaurelius.titan.core.PropertyKey;
30 import com.thinkaurelius.titan.core.TitanEdge;
31 import com.thinkaurelius.titan.core.TitanTransaction;
32 import com.thinkaurelius.titan.core.TitanVertex;
33 import com.thinkaurelius.titan.core.TitanVertexProperty;
34 import com.thinkaurelius.titan.core.TitanVertexQuery;
35 import com.thinkaurelius.titan.core.VertexLabel;
36 import com.thinkaurelius.titan.diskstorage.EntryMetaData.Map;
37
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.Iterator;
41
42 import static org.assertj.core.api.Assertions.assertThat;
43 import static org.mockito.ArgumentMatchers.any;
44 import static org.mockito.ArgumentMatchers.eq;
45 import static org.mockito.Mockito.when;
46
47 @RunWith(MockitoJUnitRunner.class)
48 //error scenarios
49 public class TopologyTemplateOperationTest {
50
51     private static final String CONTAINER_ID = "containerId";
52     @InjectMocks
53     private TopologyTemplateOperation topologyTemplateOperation;
54     @Mock
55     private TitanDao titanDao;
56
57     @Test
58     public void overrideToscaDataOfToscaElement_failedToFetchContainerVertex() {
59         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(TitanOperationStatus.INVALID_ID));
60         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
61         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
62     }
63
64     @Test
65     public void overrideToscaDataOfToscaElement_failedToFetchDataVertex() {
66         GraphVertex containerVertex = new GraphVertex();
67         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
68         when(titanDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
69         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
70         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
71     }
72
73     @Test
74     public void updateToscaDataDeepElements_failedToFetchContainerVertex() {
75         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(TitanOperationStatus.INVALID_ID));
76         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabiltyProperty(), "");
77         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
78     }
79
80     @Test
81     public void updateToscaDataDeepElements_failedToFetchDataVertex() {
82         GraphVertex containerVertex = new GraphVertex();
83         when(titanDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
84         when(titanDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
85         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabiltyProperty(), "");
86         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
87     }
88     
89         @Test
90     public void addPolicyToToscaElementSuccessTest(){
91         TitanOperationStatus status = TitanOperationStatus.OK;
92         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
93         assertThat(result).isEqualTo(StorageOperationStatus.OK);
94     }
95     
96         @Test
97     public void addPolicyToToscaElementFailureTest(){
98         TitanOperationStatus status = TitanOperationStatus.ALREADY_EXIST;
99         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
100         assertThat(result).isEqualTo(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
101     }
102
103         @SuppressWarnings("unchecked")
104         private StorageOperationStatus addPolicyToToscaElementWithStatus(TitanOperationStatus status) {
105                 GraphVertex componentV = new GraphVertex();
106         componentV.setVertex(Mockito.mock(TitanVertex.class));
107         GraphVertex dataV = new GraphVertex();
108         dataV.setVertex(Mockito.mock(TitanVertex.class));
109         String componentName = "componentName";
110         String componentId = UniqueIdBuilder.buildResourceUniqueId();
111         String policyTypeName = "org.openecomp.policies.placement.valet.Affinity";
112         componentV.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
113         componentV.setUniqueId(componentId);
114         PolicyDefinition policy = new PolicyDefinition();
115         policy.setPolicyTypeName(policyTypeName);
116         int counter = 0;
117         Either<GraphVertex, TitanOperationStatus> toscaDataVertexRes = Either.right(TitanOperationStatus.NOT_FOUND);
118         when(titanDao.getChildVertex(eq(componentV), eq(EdgeLabelEnum.POLICIES), eq(JsonParseFlagEnum.ParseJson))).thenReturn(toscaDataVertexRes);
119                 Either<GraphVertex, TitanOperationStatus> createVertex = Either.left(dataV);
120                 when(titanDao.createVertex(any(GraphVertex.class))).thenReturn(createVertex);
121                 when(titanDao.createEdge(any(TitanVertex.class), any(TitanVertex.class), any(EdgeLabelEnum.class), any(HashMap.class))).thenReturn(status);
122         return topologyTemplateOperation.addPolicyToToscaElement(componentV, policy, counter);
123         }
124     
125 }