Add lombok support to simple classes
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / TopologyTemplateOperationTest.java
1 package org.openecomp.sdc.be.model.jsonjanusgraph.operations;
2
3 import org.janusgraph.core.JanusGraphVertex;
4 import fj.data.Either;
5 import org.apache.tinkerpop.gremlin.structure.Direction;
6 import org.apache.tinkerpop.gremlin.structure.Edge;
7 import org.junit.Test;
8 import org.junit.runner.RunWith;
9 import org.mockito.InjectMocks;
10 import org.mockito.Mock;
11 import org.mockito.Mockito;
12 import org.mockito.junit.MockitoJUnitRunner;
13 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
14 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
15 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
16 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
17 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
18 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
19 import org.openecomp.sdc.be.datatypes.elements.MapCapabilityProperty;
20 import org.openecomp.sdc.be.datatypes.elements.MapListCapabilityDataDefinition;
21 import org.openecomp.sdc.be.datatypes.elements.MapListRequirementDataDefinition;
22 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
23 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
24 import org.openecomp.sdc.be.model.DistributionStatusEnum;
25 import org.openecomp.sdc.be.model.PolicyDefinition;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
28 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
29 import org.openecomp.sdc.be.model.ComponentParametersView;
30 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
31
32 import java.util.*;
33
34 import static org.assertj.core.api.Assertions.assertThat;
35 import static org.junit.Assert.assertEquals;
36 import static org.mockito.ArgumentMatchers.any;
37 import static org.mockito.ArgumentMatchers.eq;
38 import static org.mockito.Mockito.when;
39
40 @RunWith(MockitoJUnitRunner.class)
41 //error scenarios
42 public class TopologyTemplateOperationTest {
43
44     private static final String CONTAINER_ID = "containerId";
45     @InjectMocks
46     private TopologyTemplateOperation topologyTemplateOperation;
47     @Mock
48     private JanusGraphDao janusGraphDao;
49
50     @Test
51     public void overrideToscaDataOfToscaElement_failedToFetchContainerVertex() {
52         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(
53             JanusGraphOperationStatus.INVALID_ID));
54         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
55         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
56     }
57
58     @Test
59     public void overrideToscaDataOfToscaElement_failedToFetchDataVertex() {
60         GraphVertex containerVertex = new GraphVertex();
61         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
62         when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(
63             JanusGraphOperationStatus.NOT_FOUND));
64         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.overrideToscaDataOfToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, Collections.emptyMap());
65         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
66     }
67
68     @Test
69     public void updateToscaDataDeepElements_failedToFetchContainerVertex() {
70         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.right(
71             JanusGraphOperationStatus.INVALID_ID));
72         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
73         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.INVALID_ID);
74     }
75
76     @Test
77     public void updateToscaDataDeepElements_failedToFetchDataVertex() {
78         GraphVertex containerVertex = new GraphVertex();
79         when(janusGraphDao.getVertexById(CONTAINER_ID, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(containerVertex));
80         when(janusGraphDao.getChildVertex(containerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, JsonParseFlagEnum.ParseJson)).thenReturn(Either.right(
81             JanusGraphOperationStatus.NOT_FOUND));
82         StorageOperationStatus storageOperationStatus = topologyTemplateOperation.updateToscaDataDeepElementsBlockToToscaElement(CONTAINER_ID, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, new MapCapabilityProperty(), "");
83         assertThat(storageOperationStatus).isEqualTo(StorageOperationStatus.NOT_FOUND);
84     }
85
86     @Test
87     public void addPolicyToToscaElementSuccessTest(){
88         JanusGraphOperationStatus status = JanusGraphOperationStatus.OK;
89         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
90         assertThat(result).isEqualTo(StorageOperationStatus.OK);
91     }
92
93     @Test
94     public void addPolicyToToscaElementFailureTest(){
95         JanusGraphOperationStatus status = JanusGraphOperationStatus.ALREADY_EXIST;
96         StorageOperationStatus result = addPolicyToToscaElementWithStatus(status);
97         assertThat(result).isEqualTo(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
98     }
99
100     @Test
101     public void testAssociateOrAddCalcCapReqToComponent() {
102         StorageOperationStatus result;
103         GraphVertex graphVertex = new GraphVertex();
104         Map<String, MapListRequirementDataDefinition> calcRequirements = new HashMap<>();
105         Map<String, MapListCapabilityDataDefinition> calcCapabilty = new HashMap<>();
106         Map<String, MapCapabilityProperty> calCapabilitiesProps = new HashMap<>();
107         addPolicyToToscaElementWithStatus(JanusGraphOperationStatus.OK);
108         result = topologyTemplateOperation.associateOrAddCalcCapReqToComponent(graphVertex, calcRequirements, calcCapabilty, calCapabilitiesProps);
109         assertEquals(StorageOperationStatus.OK, result);
110     }
111
112     @Test
113     public void testSetDataTypesFromGraph() {
114         GraphVertex containerVertex = new GraphVertex();
115         ComponentParametersView filter = new ComponentParametersView(true);
116         filter.setIgnoreComponentInstancesInterfaces(true);
117         filter.setIgnoreDataType(false);
118         String componentName = "componentName";
119         String componentId = UniqueIdBuilder.buildResourceUniqueId();
120         containerVertex.setVertex(Mockito.mock(JanusGraphVertex.class));
121         containerVertex.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
122         containerVertex.setUniqueId(componentId);
123         containerVertex.setLabel(VertexTypeEnum.TOPOLOGY_TEMPLATE);
124         when(janusGraphDao.getChildVertex(any(GraphVertex.class), any(EdgeLabelEnum.class), any(JsonParseFlagEnum.class))).thenReturn(Either.right(
125             JanusGraphOperationStatus.GENERAL_ERROR));
126         Either<ToscaElement, StorageOperationStatus> storageOperationStatus = topologyTemplateOperation.getToscaElement(containerVertex, filter);
127         assertThat(storageOperationStatus).isEqualTo(Either.right(StorageOperationStatus.GENERAL_ERROR));
128     }
129
130     @Test
131     public void testUpdateDistributionStatus() {
132         Either<GraphVertex, StorageOperationStatus> result;
133         String uniqueId = "uniqueId";
134         User user = new User();
135         String userId = "userId";
136         user.setUserId(userId);
137         Iterator<Edge> edgeIterator = new Iterator<Edge>() {
138             @Override
139             public boolean hasNext() {
140                 return false;
141             }
142
143             @Override
144             public Edge next() {
145                 return null;
146             }
147         };
148         GraphVertex graphVertex = Mockito.mock(GraphVertex.class);
149         JanusGraphVertex janusGraphVertex = Mockito.mock(JanusGraphVertex.class);
150         when(graphVertex.getVertex()).thenReturn(janusGraphVertex);
151         when(janusGraphVertex.edges(Direction.IN, EdgeLabelEnum.LAST_DISTRIBUTION_STATE_MODIFIER.name())).thenReturn(edgeIterator);
152         when(janusGraphDao
153             .getVertexByPropertyAndLabel(GraphPropertyEnum.USERID, userId, VertexTypeEnum.USER, JsonParseFlagEnum.NoParse)).thenReturn(Either.left(graphVertex));
154         when(janusGraphDao.getVertexById(uniqueId, JsonParseFlagEnum.ParseMetadata)).thenReturn(Either.left(graphVertex));
155         when(janusGraphDao.createEdge(graphVertex, graphVertex, EdgeLabelEnum.LAST_DISTRIBUTION_STATE_MODIFIER, null)).thenReturn(
156             JanusGraphOperationStatus.OK);
157         when(janusGraphDao.updateVertex(graphVertex)).thenReturn(Either.left(graphVertex));
158         result = topologyTemplateOperation.updateDistributionStatus(uniqueId, user, DistributionStatusEnum.DISTRIBUTED);
159         assertThat(result.isLeft());
160     }
161
162     @SuppressWarnings("unchecked")
163     private StorageOperationStatus addPolicyToToscaElementWithStatus(JanusGraphOperationStatus status) {
164         GraphVertex componentV = new GraphVertex();
165         componentV.setVertex(Mockito.mock(JanusGraphVertex.class));
166         GraphVertex dataV = new GraphVertex();
167         dataV.setVertex(Mockito.mock(JanusGraphVertex.class));
168         String componentName = "componentName";
169         String componentId = UniqueIdBuilder.buildResourceUniqueId();
170         String policyTypeName = "org.openecomp.policies.placement.valet.Affinity";
171         componentV.setJsonMetadataField(JsonPresentationFields.NAME, componentName);
172         componentV.setUniqueId(componentId);
173         PolicyDefinition policy = new PolicyDefinition();
174         policy.setPolicyTypeName(policyTypeName);
175         int counter = 0;
176         Either<GraphVertex, JanusGraphOperationStatus> toscaDataVertexRes = Either.right(
177             JanusGraphOperationStatus.NOT_FOUND);
178         when(janusGraphDao.getChildVertex(eq(componentV), eq(EdgeLabelEnum.POLICIES), eq(JsonParseFlagEnum.ParseJson))).thenReturn(toscaDataVertexRes);
179         Either<GraphVertex, JanusGraphOperationStatus> createVertex = Either.left(dataV);
180         when(janusGraphDao.createVertex(any(GraphVertex.class))).thenReturn(createVertex);
181         when(janusGraphDao.createEdge(any(JanusGraphVertex.class), any(JanusGraphVertex.class), any(EdgeLabelEnum.class), any(HashMap.class))).thenReturn(status);
182         return topologyTemplateOperation.addPolicyToToscaElement(componentV, policy, counter);
183     }
184
185 }