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