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