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