Release version 1.13.7
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / ToscaElementLifecycleOperationTest.java
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.jsonjanusgraph.operations;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25
26 import fj.data.Either;
27 import java.util.HashMap;
28 import java.util.Map;
29 import org.junit.jupiter.api.DisplayName;
30 import org.junit.jupiter.api.Test;
31 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
32 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
33 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
34 import org.openecomp.sdc.be.model.ComponentParametersView;
35 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
36 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
37 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
38
39 public class ToscaElementLifecycleOperationTest {
40
41     @Test
42     @DisplayName("handleFailureToGetVertices - Golden Path")
43     public void handleFailureToGetVertices_GoldenPath() {
44         //Given
45         Map<JanusGraphOperationStatus, StorageOperationStatus> map = getStatusMap();
46
47         for (JanusGraphOperationStatus janusStatus : map.keySet()) {
48             //When
49             StorageOperationStatus result = ToscaElementLifecycleOperation
50                 .handleFailureToPrepareParameters(janusStatus, "testToscaElementId");
51
52             //Then
53             assertEquals(map.get(janusStatus), result);
54         }
55     }
56
57     @Test
58     @DisplayName("handleFailureToGetVertices - Null `toscaElementId`")
59     public void handleFailureToGetVertices_NullToscaElementId() {
60         //Given
61         Map<JanusGraphOperationStatus, StorageOperationStatus> map = getStatusMap();
62
63         for (JanusGraphOperationStatus janusStatus : map.keySet()) {
64             //When
65             StorageOperationStatus result = ToscaElementLifecycleOperation
66                 .handleFailureToPrepareParameters(janusStatus, "testToscaElementId");
67
68             //Then
69             assertEquals(map.get(janusStatus), result);
70         }
71     }
72
73     @Test
74     @DisplayName("handleFailureToGetVertices - Null `janusGraphOperationStatus`")
75     public void handleFailureToGetVertices_NullJanusGraphOperationStatus() {
76         //Given
77         JanusGraphOperationStatus status = null;
78
79         //When
80         StorageOperationStatus result = ToscaElementLifecycleOperation
81             .handleFailureToPrepareParameters(status, "testToscaElementId");
82
83         //Then
84         assertEquals(StorageOperationStatus.GENERAL_ERROR, result);
85     }
86
87     @Test
88     @DisplayName("getToscaElementFromOperation - should call `operation.getToscaElement`")
89     public void getToscaElementFromOperation_GoldenPath() {
90         //Given
91         String uniqueId = "uniqueId";
92         String toscaElementId = "toscaElementId";
93
94         Either<ToscaElement, StorageOperationStatus> expectedLeftResult = Either.left(
95             new ToscaElement(ToscaElementTypeEnum.NODE_TYPE) {
96             }
97         );
98         ToscaElementOperation leftResultOperation = getPseudoToscaOperation(expectedLeftResult);
99
100         //When
101         Either<ToscaElement, StorageOperationStatus> leftResult = ToscaElementLifecycleOperation
102             .getToscaElementFromOperation(leftResultOperation, uniqueId, toscaElementId);
103
104         //Then
105         assertTrue(leftResult.isLeft());
106         assertEquals(expectedLeftResult, leftResult);
107
108         //Given
109         Either<ToscaElement, StorageOperationStatus> expectedRightResult = Either
110             .right(StorageOperationStatus.GENERAL_ERROR);
111         ToscaElementOperation rightResultOperation = getPseudoToscaOperation(expectedRightResult);
112
113         //When
114         Either<ToscaElement, StorageOperationStatus> rightResult = ToscaElementLifecycleOperation
115             .getToscaElementFromOperation(rightResultOperation, uniqueId, toscaElementId);
116
117         //Then
118         assertTrue(rightResult.isRight());
119         assertEquals(expectedRightResult, rightResult);
120     }
121
122     ToscaElementOperation getPseudoToscaOperation(
123         Either<ToscaElement, StorageOperationStatus> expectedResult) {
124         return new ToscaElementOperation() {
125             @Override
126             public Either<ToscaElement, StorageOperationStatus> getToscaElement(String uniqueId,
127                 ComponentParametersView componentParametersView) {
128                 return expectedResult;
129             }
130
131             @Override
132             public <T extends ToscaElement> Either<T, StorageOperationStatus> getToscaElement(
133                 GraphVertex toscaElementVertex, ComponentParametersView componentParametersView) {
134                 return null;
135             }
136
137             @Override
138             public <T extends ToscaElement> Either<T, StorageOperationStatus> deleteToscaElement(
139                 GraphVertex toscaElementVertex) {
140                 return null;
141             }
142
143             @Override
144             public <T extends ToscaElement> Either<T, StorageOperationStatus> createToscaElement(
145                 ToscaElement toscaElement) {
146                 return null;
147             }
148
149             @Override
150             protected <T extends ToscaElement> JanusGraphOperationStatus setCategoriesFromGraph(
151                 GraphVertex vertexComponent, T toscaElement) {
152                 return null;
153             }
154
155             @Override
156             protected <T extends ToscaElement> JanusGraphOperationStatus setCapabilitiesFromGraph(
157                 GraphVertex componentV, T toscaElement) {
158                 return null;
159             }
160
161             @Override
162             protected <T extends ToscaElement> JanusGraphOperationStatus setRequirementsFromGraph(
163                 GraphVertex componentV, T toscaElement) {
164                 return null;
165             }
166
167             @Override
168             protected <T extends ToscaElement> StorageOperationStatus validateCategories(T toscaElementToUpdate,
169                 GraphVertex elementV) {
170                 return null;
171             }
172
173             @Override
174             protected <T extends ToscaElement> StorageOperationStatus updateDerived(T toscaElementToUpdate,
175                 GraphVertex updateElementV) {
176                 return null;
177             }
178
179             @Override
180             public <T extends ToscaElement> void fillToscaElementVertexData(GraphVertex elementV,
181                 T toscaElementToUpdate, JsonParseFlagEnum flag) {
182
183             }
184         };
185     }
186
187     Map<JanusGraphOperationStatus, StorageOperationStatus> getStatusMap() {
188         Map<JanusGraphOperationStatus, StorageOperationStatus> map = new HashMap<>();
189         map.put(JanusGraphOperationStatus.OK, StorageOperationStatus.OK);
190         map.put(JanusGraphOperationStatus.NOT_CONNECTED, StorageOperationStatus.CONNECTION_FAILURE);
191         map.put(JanusGraphOperationStatus.NOT_FOUND, StorageOperationStatus.NOT_FOUND);
192         map.put(JanusGraphOperationStatus.NOT_CREATED, StorageOperationStatus.SCHEMA_ERROR);
193         map.put(JanusGraphOperationStatus.INDEX_CANNOT_BE_CHANGED, StorageOperationStatus.SCHEMA_ERROR);
194         map.put(JanusGraphOperationStatus.MISSING_UNIQUE_ID, StorageOperationStatus.BAD_REQUEST);
195         map.put(JanusGraphOperationStatus.ALREADY_LOCKED, StorageOperationStatus.FAILED_TO_LOCK_ELEMENT);
196         map.put(JanusGraphOperationStatus.JANUSGRAPH_SCHEMA_VIOLATION, StorageOperationStatus.SCHEMA_VIOLATION);
197         map.put(JanusGraphOperationStatus.INVALID_ID, StorageOperationStatus.INVALID_ID);
198         map.put(JanusGraphOperationStatus.MATCH_NOT_FOUND, StorageOperationStatus.MATCH_NOT_FOUND);
199         map.put(JanusGraphOperationStatus.ILLEGAL_ARGUMENT, StorageOperationStatus.BAD_REQUEST);
200         map.put(JanusGraphOperationStatus.ALREADY_EXIST, StorageOperationStatus.ENTITY_ALREADY_EXISTS);
201         map.put(JanusGraphOperationStatus.PROPERTY_NAME_ALREADY_EXISTS,
202             StorageOperationStatus.PROPERTY_NAME_ALREADY_EXISTS);
203         map.put(JanusGraphOperationStatus.INVALID_PROPERTY, StorageOperationStatus.INVALID_PROPERTY);
204         map.put(JanusGraphOperationStatus.INVALID_QUERY, StorageOperationStatus.GENERAL_ERROR);
205
206         return map;
207     }
208 }