2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.model.jsonjanusgraph.operations;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
26 import fj.data.Either;
27 import java.util.HashMap;
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;
39 public class ToscaElementLifecycleOperationTest {
42 @DisplayName("handleFailureToGetVertices - Golden Path")
43 public void handleFailureToGetVertices_GoldenPath() {
45 Map<JanusGraphOperationStatus, StorageOperationStatus> map = getStatusMap();
47 for (JanusGraphOperationStatus janusStatus : map.keySet()) {
49 StorageOperationStatus result = ToscaElementLifecycleOperation
50 .handleFailureToPrepareParameters(janusStatus, "testToscaElementId");
53 assertEquals(map.get(janusStatus), result);
58 @DisplayName("handleFailureToGetVertices - Null `toscaElementId`")
59 public void handleFailureToGetVertices_NullToscaElementId() {
61 Map<JanusGraphOperationStatus, StorageOperationStatus> map = getStatusMap();
63 for (JanusGraphOperationStatus janusStatus : map.keySet()) {
65 StorageOperationStatus result = ToscaElementLifecycleOperation
66 .handleFailureToPrepareParameters(janusStatus, "testToscaElementId");
69 assertEquals(map.get(janusStatus), result);
74 @DisplayName("handleFailureToGetVertices - Null `janusGraphOperationStatus`")
75 public void handleFailureToGetVertices_NullJanusGraphOperationStatus() {
77 JanusGraphOperationStatus status = null;
80 StorageOperationStatus result = ToscaElementLifecycleOperation
81 .handleFailureToPrepareParameters(status, "testToscaElementId");
84 assertEquals(StorageOperationStatus.GENERAL_ERROR, result);
88 @DisplayName("getToscaElementFromOperation - should call `operation.getToscaElement`")
89 public void getToscaElementFromOperation_GoldenPath() {
91 String uniqueId = "uniqueId";
92 String toscaElementId = "toscaElementId";
94 Either<ToscaElement, StorageOperationStatus> expectedLeftResult = Either.left(
95 new ToscaElement(ToscaElementTypeEnum.NODE_TYPE) {
98 ToscaElementOperation leftResultOperation = getPseudoToscaOperation(expectedLeftResult);
101 Either<ToscaElement, StorageOperationStatus> leftResult = ToscaElementLifecycleOperation
102 .getToscaElementFromOperation(leftResultOperation, uniqueId, toscaElementId);
105 assertTrue(leftResult.isLeft());
106 assertEquals(expectedLeftResult, leftResult);
109 Either<ToscaElement, StorageOperationStatus> expectedRightResult = Either
110 .right(StorageOperationStatus.GENERAL_ERROR);
111 ToscaElementOperation rightResultOperation = getPseudoToscaOperation(expectedRightResult);
114 Either<ToscaElement, StorageOperationStatus> rightResult = ToscaElementLifecycleOperation
115 .getToscaElementFromOperation(rightResultOperation, uniqueId, toscaElementId);
118 assertTrue(rightResult.isRight());
119 assertEquals(expectedRightResult, rightResult);
122 ToscaElementOperation getPseudoToscaOperation(
123 Either<ToscaElement, StorageOperationStatus> expectedResult) {
124 return new ToscaElementOperation() {
126 public Either<ToscaElement, StorageOperationStatus> getToscaElement(String uniqueId,
127 ComponentParametersView componentParametersView) {
128 return expectedResult;
132 public <T extends ToscaElement> Either<T, StorageOperationStatus> getToscaElement(
133 GraphVertex toscaElementVertex, ComponentParametersView componentParametersView) {
138 public <T extends ToscaElement> Either<T, StorageOperationStatus> deleteToscaElement(
139 GraphVertex toscaElementVertex) {
144 public <T extends ToscaElement> Either<T, StorageOperationStatus> createToscaElement(
145 ToscaElement toscaElement) {
150 protected <T extends ToscaElement> JanusGraphOperationStatus setCategoriesFromGraph(
151 GraphVertex vertexComponent, T toscaElement) {
156 protected <T extends ToscaElement> JanusGraphOperationStatus setCapabilitiesFromGraph(
157 GraphVertex componentV, T toscaElement) {
162 protected <T extends ToscaElement> JanusGraphOperationStatus setRequirementsFromGraph(
163 GraphVertex componentV, T toscaElement) {
168 protected <T extends ToscaElement> StorageOperationStatus validateCategories(T toscaElementToUpdate,
169 GraphVertex elementV) {
174 protected <T extends ToscaElement> StorageOperationStatus updateDerived(T toscaElementToUpdate,
175 GraphVertex updateElementV) {
180 public <T extends ToscaElement> void fillToscaElementVertexData(GraphVertex elementV,
181 T toscaElementToUpdate, JsonParseFlagEnum flag) {
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);