8262d54bc4d1b30e5f646e2fa5acf14c6014c2f4
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.model.operations.impl;
22
23 import fj.data.Either;
24 import org.apache.commons.lang3.tuple.ImmutablePair;
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.BeforeClass;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mockito;
32 import org.mockito.MockitoAnnotations;
33 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
34 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
35 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
36 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
37 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
38 import org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition;
39 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
40 import org.openecomp.sdc.be.model.InterfaceDefinition;
41 import org.openecomp.sdc.be.model.ModelTestBase;
42 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
43 import org.openecomp.sdc.be.model.operations.impl.util.OperationTestsUtil;
44 import org.openecomp.sdc.be.resources.data.InterfaceData;
45 import org.openecomp.sdc.be.resources.data.OperationData;
46 import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
47 import org.openecomp.sdc.be.resources.data.UserData;
48 import org.openecomp.sdc.be.resources.data.category.CategoryData;
49 import org.springframework.test.context.ContextConfiguration;
50 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
51
52 import java.util.ArrayList;
53 import java.util.Collections;
54 import java.util.List;
55 import java.util.Map;
56
57 import static org.junit.Assert.assertNotNull;
58 import static org.junit.Assert.assertTrue;
59 import static org.mockito.ArgumentMatchers.any;
60 import static org.mockito.ArgumentMatchers.eq;
61 import static org.mockito.Mockito.when;
62
63 @RunWith(SpringJUnit4ClassRunner.class)
64 @ContextConfiguration("classpath:application-context-test.xml")
65 public class InterfaceLifecycleOperationTest {
66     private static String USER_ID = "muUserId";
67     private static String CATEGORY_NAME = "category/mycategory";
68
69     JanusGraphGenericDao janusGraphGenericDao = Mockito.mock(JanusGraphGenericDao.class);
70     @InjectMocks
71     private InterfaceLifecycleOperation interfaceLifecycleOperation = new InterfaceLifecycleOperation();
72
73     @Before
74     public void createUserAndCategory() {
75         MockitoAnnotations.initMocks(this);
76         CategoryData categoryData = new CategoryData(NodeTypeEnum.ResourceCategory);
77         when(janusGraphGenericDao.createNode(any(),any())).thenReturn(Either.left(categoryData));
78         deleteAndCreateCategory(CATEGORY_NAME);
79         deleteAndCreateUser(USER_ID, "first_" + USER_ID, "last_" + USER_ID);
80     }
81
82     @BeforeClass
83     public static void setupBeforeClass() {
84         ModelTestBase.init();
85     }
86
87     @Test
88     public void testDummy() {
89         assertNotNull(interfaceLifecycleOperation);
90     }
91
92     private InterfaceDefinition buildInterfaceDefinition() {
93         InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
94         interfaceDefinition.setType("tosca.interfaces.standard");
95         interfaceDefinition.setCreationDate(101232L);
96
97         return interfaceDefinition;
98     }
99
100     private void deleteAndCreateCategory(String category) {
101         String[] names = category.split("/");
102         OperationTestsUtil.deleteAndCreateResourceCategory(names[0], names[1], janusGraphGenericDao);
103     }
104
105     private UserData deleteAndCreateUser(String userId, String firstName, String lastName) {
106         UserData userData = new UserData();
107         userData.setUserId(userId);
108         userData.setFirstName(firstName);
109         userData.setLastName(lastName);
110
111         janusGraphGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), userId,
112             UserData.class);
113         janusGraphGenericDao.createNode(userData, UserData.class);
114         janusGraphGenericDao.commit();
115
116         return userData;
117     }
118
119     @Test
120     public void createInterfaceOnResourceTest() {
121         when(janusGraphGenericDao.getChildrenNodes(any(), any(), any(), any(), eq(InterfaceData.class))).thenReturn(Either.right(JanusGraphOperationStatus.GRAPH_IS_NOT_AVAILABLE));
122         when(janusGraphGenericDao.getChild(any(), any(), any(), eq(NodeTypeEnum.Resource), eq(ResourceMetadataData.class))).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
123         when(janusGraphGenericDao.getNode(any(), any(), eq(InterfaceData.class))).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
124         when(janusGraphGenericDao.createNode(any(), eq(InterfaceData.class))).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
125         when(janusGraphGenericDao.createRelation(any(), any(), eq(GraphEdgeLabels.INTERFACE), any())).thenReturn(Either.right(JanusGraphOperationStatus.OK));
126         Assert.assertTrue(interfaceLifecycleOperation.createInterfaceOnResource(buildInterfaceDefinition(), "", "", false, false).isRight());
127         when(janusGraphGenericDao.createRelation(any(), any(), eq(GraphEdgeLabels.INTERFACE), any())).thenReturn(Either.left(Mockito.mock(GraphRelation.class)));
128         Assert.assertTrue(interfaceLifecycleOperation.createInterfaceOnResource(buildInterfaceDefinition(), "", "", false, false).isRight());
129     }
130
131     @Test
132     public void getAllInterfacesOfResourceTest() {
133         assertTrue(interfaceLifecycleOperation.getAllInterfacesOfResource(null, true).isRight());
134         when(janusGraphGenericDao.getChildrenNodes(any(), any(), any(), any(), eq(InterfaceData.class))).thenReturn(Either.right(JanusGraphOperationStatus.GRAPH_IS_NOT_AVAILABLE));
135         when(janusGraphGenericDao.getChild(any(), any(), any(), eq(NodeTypeEnum.Resource), eq(ResourceMetadataData.class))).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
136         assertTrue(interfaceLifecycleOperation.getAllInterfacesOfResource("null", true).isLeft());
137
138         when(janusGraphGenericDao.getChild(any(), any(), any(), eq(NodeTypeEnum.Resource), eq(ResourceMetadataData.class))).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
139         assertTrue(interfaceLifecycleOperation.getAllInterfacesOfResource("null", true).isRight());
140
141         ResourceMetadataData key = Mockito.mock(ResourceMetadataData.class);
142         ComponentMetadataDataDefinition def = Mockito.mock(ComponentMetadataDataDefinition.class);
143         when(def.getUniqueId()).thenReturn("UNIIIIIIQUE IDDDD");
144         when(key.getMetadataDataDefinition()).thenReturn(def);
145         ImmutablePair<ResourceMetadataData, GraphEdge> pair = new ImmutablePair<>(key, Mockito.mock(GraphEdge.class));
146         when(janusGraphGenericDao.getChild(any(), any(), any(), eq(NodeTypeEnum.Resource), eq(ResourceMetadataData.class)))
147                 .thenReturn(Either.left(pair))
148                 .thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
149         assertTrue(interfaceLifecycleOperation.getAllInterfacesOfResource("null", true).isLeft());
150     }
151
152     @Test
153     public void testGetAllInterfaceLifecycleTypes_TypesNotFound() {
154         when(janusGraphGenericDao.getByCriteria(NodeTypeEnum.Interface, Collections.emptyMap(),
155             InterfaceData.class)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
156         Either<Map<String, InterfaceDefinition>, StorageOperationStatus> types = interfaceLifecycleOperation.getAllInterfaceLifecycleTypes();
157         Assert.assertEquals(types.isRight(), Boolean.TRUE);
158     }
159
160     @Test
161     public void testGetAllInterfaceLifecycleTypes_Success() {
162         final String UNIQUE_ID = "UNIQUE_ID";
163         final String TYPE = "UNIQUE_ID";
164         InterfaceData interfaceData = new InterfaceData();
165         interfaceData.getInterfaceDataDefinition().setUniqueId(UNIQUE_ID);
166         interfaceData.getInterfaceDataDefinition().setType(TYPE);
167         List<InterfaceData> interfaceDataList = new ArrayList<>();
168         interfaceDataList.add(interfaceData);
169         Either<List<InterfaceData>, JanusGraphOperationStatus> allInterfaceTypes = Either.left(interfaceDataList);
170         when(janusGraphGenericDao
171             .getByCriteria(NodeTypeEnum.Interface, Collections.emptyMap(), InterfaceData.class)).thenReturn(allInterfaceTypes);
172
173         List<ImmutablePair<OperationData, GraphEdge>> list = new ArrayList<>();
174         Either<List<ImmutablePair<OperationData, GraphEdge>>, JanusGraphOperationStatus> childrenNodes = Either.left(list);
175         when(janusGraphGenericDao.getChildrenNodes(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId(), GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class)).thenReturn(childrenNodes);
176
177         Either<Map<String, InterfaceDefinition>, StorageOperationStatus> types = interfaceLifecycleOperation.getAllInterfaceLifecycleTypes();
178         Assert.assertEquals(types.left().value().size(),1);
179     }
180
181 }