d2d26e79d596bde2b511492f47af5ff18cb2fd0c
[sdc.git] /
1 package org.openecomp.sdc.be.model.jsontitan.operations;
2
3 import fj.data.Either;
4 import org.junit.Before;
5 import org.junit.Test;
6 import org.junit.runner.RunWith;
7 import org.mockito.ArgumentCaptor;
8 import org.mockito.InjectMocks;
9 import org.mockito.Mock;
10 import org.mockito.Mockito;
11 import org.mockito.MockitoAnnotations;
12 import org.mockito.runners.MockitoJUnitRunner;
13 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
14 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
15 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
16 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
17 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
18 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
19 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
20 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
21 import org.openecomp.sdc.be.model.Component;
22 import org.openecomp.sdc.be.model.ComponentParametersView;
23 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
24 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
25 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
26
27 import java.util.HashMap;
28 import java.util.List;
29 import java.util.Map;
30 import java.util.stream.Collectors;
31 import java.util.stream.IntStream;
32
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertTrue;
35 import static org.mockito.Mockito.when;
36
37 @RunWith(MockitoJUnitRunner.class)
38 public class ToscaOperationFacadeTest {
39
40     @InjectMocks
41     private ToscaOperationFacade testInstance;
42
43     @Mock
44     private TitanDao titanDaoMock;
45
46     @Mock
47     private TopologyTemplateOperation topologyTemplateOperationMock;
48
49     @Before
50     public void setUp() throws Exception {
51         testInstance = new ToscaOperationFacade();
52         MockitoAnnotations.initMocks(this);
53     }
54
55
56     @SuppressWarnings("unchecked")
57     @Test
58     public void fetchMetaDataByResourceType() throws Exception {
59         ArgumentCaptor<Map> criteriaCapture = ArgumentCaptor.forClass(Map.class);
60         ComponentParametersView dataFilter = new ComponentParametersView();
61         List<GraphVertex> mockVertices = getMockVertices(2);
62         Either<List<GraphVertex>, TitanOperationStatus> returnedVertices = Either.left(mockVertices);
63
64         when(titanDaoMock.getByCriteria(Mockito.eq(null), criteriaCapture.capture(), Mockito.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(returnedVertices);
65         when(topologyTemplateOperationMock.getToscaElement(mockVertices.get(0), dataFilter)).thenReturn(Either.left(getResourceToscaElement("0")));
66         when(topologyTemplateOperationMock.getToscaElement(mockVertices.get(1), dataFilter)).thenReturn(Either.left(getResourceToscaElement("1")));
67         Either<List<Component>, StorageOperationStatus> fetchedComponents = testInstance.fetchMetaDataByResourceType(ResourceTypeEnum.VF.getValue(), dataFilter);
68
69         verifyCriteriaForHighestVersionAndVfResourceType(criteriaCapture);
70
71         assertTrue(fetchedComponents.isLeft());
72         List<Component> cmpts = fetchedComponents.left().value();
73         assertEquals(2, cmpts.size());
74         assertEquals("0", cmpts.get(0).getUniqueId());
75         assertEquals("1", cmpts.get(1).getUniqueId());
76     }
77
78     private void verifyCriteriaForHighestVersionAndVfResourceType(ArgumentCaptor<Map> criteriaCapture) {
79         Map<GraphPropertyEnum, Object> criteria = (Map<GraphPropertyEnum, Object>)criteriaCapture.getValue();
80         assertEquals(2, criteria.size());
81         assertEquals(criteria.get(GraphPropertyEnum.RESOURCE_TYPE), "VF");
82         assertEquals(criteria.get(GraphPropertyEnum.IS_HIGHEST_VERSION), true);
83     }
84
85     @SuppressWarnings("unchecked")
86     @Test
87     public void fetchMetaDataByResourceType_failedToGetData() throws Exception {
88         when(titanDaoMock.getByCriteria(Mockito.eq(null), Mockito.anyMap(), Mockito.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.right(TitanOperationStatus.GENERAL_ERROR));
89         Either<List<Component>, StorageOperationStatus> fetchedComponents = testInstance.fetchMetaDataByResourceType(ResourceTypeEnum.VF.getValue(), new ComponentParametersView());
90         assertTrue(fetchedComponents.isRight());
91         assertEquals(StorageOperationStatus.GENERAL_ERROR, fetchedComponents.right().value());
92     }
93
94     private List<GraphVertex> getMockVertices(int numOfVertices) {
95         return IntStream.range(0, numOfVertices).mapToObj(i -> getMockVertex()).collect(Collectors.toList());
96     }
97
98     private ToscaElement getResourceToscaElement(String id) {
99         ToscaElement toscaElement = new TopologyTemplate();
100         toscaElement.setMetadata(new HashMap<>());
101         toscaElement.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(), "RESOURCE");
102         toscaElement.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), id);
103         return toscaElement;
104     }
105
106     private GraphVertex getMockVertex() {
107         GraphVertex graphVertex = new GraphVertex();
108         graphVertex.setLabel(VertexTypeEnum.TOPOLOGY_TEMPLATE);
109         return graphVertex;
110     }
111 }