2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 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.jupiter.api.Assertions.assertEquals;
24 import static org.junit.jupiter.api.Assertions.assertFalse;
25 import static org.junit.jupiter.api.Assertions.assertTrue;
26 import static org.mockito.Mockito.CALLS_REAL_METHODS;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.mock;
29 import static org.mockito.Mockito.times;
30 import static org.mockito.Mockito.verify;
32 import fj.data.Either;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.List;
37 import org.junit.jupiter.api.Test;
38 import org.mockito.Mockito;
39 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
40 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
41 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
42 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
43 import org.openecomp.sdc.be.datatypes.elements.InterfaceDataDefinition;
44 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
45 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
46 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
47 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
48 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
49 import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
50 import org.openecomp.sdc.be.model.ArtifactDefinition;
51 import org.openecomp.sdc.be.model.Resource;
52 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
53 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
55 public class ArtifactsOperationsTest {
57 private static final String SERVICE_ID = "serviceId";
58 private static final String INSTANCE_ID = "instanceId";
59 private ArtifactsOperations testInstance = mock(ArtifactsOperations.class, CALLS_REAL_METHODS);
62 public void addArtifactToComponent() {
63 ArtifactDefinition artifactDef = new ArtifactDefinition();
64 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
65 final Resource resource = new Resource();
66 resource.setUniqueId(INSTANCE_ID);
67 Map<String, ToscaDataDefinition> instanceArtifacts = Collections.singletonMap(INSTANCE_ID, getArtifactsByInstance("name1"));
68 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
69 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
71 Map<String, ArtifactDefinition> artMap = new HashMap<>();
72 artMap.put(INSTANCE_ID, artifactDef);
73 doReturn(Either.left(artifactDef)).when(testInstance).updateArtifactOnGraph(resource,
74 artifactDef, NodeTypeEnum.Resource, null, INSTANCE_ID, false,
77 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.addArtifactToComponent(
78 artifactDef, resource, NodeTypeEnum.Resource, false, "instanceId");
80 assertTrue(ret.isLeft());
84 public void addArtifactToComponentEsId() {
85 ArtifactDefinition artifactDef = new ArtifactDefinition();
86 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
87 artifactDef.setUniqueId(null);
88 artifactDef.setEsId(INSTANCE_ID);
89 final Resource resource = new Resource();
90 resource.setUniqueId(INSTANCE_ID);
91 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
92 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
93 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
95 Map<String, ArtifactDefinition> artMap = new HashMap<>();
96 artMap.put(INSTANCE_ID, artifactDef);
97 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
98 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
99 doReturn(Either.left(artifactDef)).when(testInstance).updateArtifactOnGraph(resource,
100 artifactDef, NodeTypeEnum.Resource, null, INSTANCE_ID, false,
103 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.addArtifactToComponent(
104 artifactDef, resource, NodeTypeEnum.Resource, false, "instanceId");
106 assertTrue(ret.isLeft());
110 public void addArtifactToComponentFail() {
111 ArtifactDefinition artifactDef = new ArtifactDefinition();
112 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
113 final Resource resource = new Resource();
114 resource.setUniqueId(INSTANCE_ID);
115 Map<String, ToscaDataDefinition> instanceArtifacts = Collections.singletonMap(INSTANCE_ID, getArtifactsByInstance("name1"));
116 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
117 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
119 Map<String, ArtifactDefinition> artMap = new HashMap<>();
120 artMap.put(INSTANCE_ID, artifactDef);
121 doReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND)).when(testInstance).updateArtifactOnGraph(resource,
122 artifactDef, NodeTypeEnum.Resource, null, INSTANCE_ID, false,
125 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.addArtifactToComponent(
126 artifactDef, resource, NodeTypeEnum.Resource, false, "instanceId");
128 assertTrue(ret.isRight());
132 public void updateArtifactOnResource() {
133 ArtifactDefinition artifactDef = new ArtifactDefinition();
134 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
135 final Resource resource = new Resource();
136 resource.setUniqueId(INSTANCE_ID);
137 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
138 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
139 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
141 Map<String, ArtifactDefinition> artMap = new HashMap<>();
142 artMap.put(INSTANCE_ID, artifactDef);
143 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
144 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
145 doReturn(Either.left(artifactDef)).when(testInstance).updateArtifactOnGraph(resource,
146 artifactDef, NodeTypeEnum.Resource, null, INSTANCE_ID, false,
149 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateArtifactOnResource(
150 artifactDef, resource, "instanceId", NodeTypeEnum.Resource, "instanceId", false);
152 assertTrue(ret.isLeft());
156 public void updateArtifactOnResourceFail() {
157 ArtifactDefinition artifactDef = new ArtifactDefinition();
158 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
159 final Resource resource = new Resource();
160 resource.setUniqueId(INSTANCE_ID);
161 Map<String, ToscaDataDefinition> instanceArtifacts = Collections.singletonMap(INSTANCE_ID, getArtifactsByInstance("name1"));
162 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
163 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
165 Map<String, ArtifactDefinition> artMap = new HashMap<>();
166 artMap.put(INSTANCE_ID, artifactDef);
168 doReturn(Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND)).when(testInstance).updateArtifactOnGraph(resource,
169 artifactDef, NodeTypeEnum.Resource, INSTANCE_ID, INSTANCE_ID, false,
172 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateArtifactOnResource(
173 artifactDef, resource, "instanceId", NodeTypeEnum.Resource, "instanceId", false);
175 assertTrue(ret.isRight());
179 public void isCloneNeeded() {
180 ArtifactDefinition artifactDef = new ArtifactDefinition();
181 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
182 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
185 Either<Boolean, StorageOperationStatus> ret = testInstance.isCloneNeeded(
186 INSTANCE_ID, artifactDef, NodeTypeEnum.Resource);
188 assertTrue(ret.isLeft());
192 public void getArtifactById() {
193 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
194 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
195 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
196 INSTANCE_ID, "artifactDefId");
198 assertTrue(ret.isLeft());
202 public void getArtifactById2() {
203 Map<String, ToscaDataDefinition> instanceArtifacts =
204 Collections.singletonMap(INSTANCE_ID, getArtifactsByInstanceSettingUniqueId("artifactDefId"));
205 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph("containerId",
206 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
207 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
208 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
210 assertTrue(ret.isLeft());
214 public void getArtifactById3() {
215 Map<String, ToscaDataDefinition> instanceArtifacts =
216 Collections.singletonMap(INSTANCE_ID, getArtifactsByInstanceSettingUniqueId("artifactDefId"));
217 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
218 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
219 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph("containerId", EdgeLabelEnum.INSTANCE_ARTIFACTS);
220 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
221 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
223 assertTrue(ret.isLeft());
227 public void getArtifactById4() {
228 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
229 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
230 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
231 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
232 EdgeLabelEnum.INSTANCE_ARTIFACTS);
233 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
234 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
235 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
236 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
237 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
239 assertTrue(ret.isLeft());
243 public void getArtifactById5() {
244 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
245 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
246 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
247 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
248 EdgeLabelEnum.INSTANCE_ARTIFACTS);
249 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
250 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
251 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
252 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
253 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
254 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
256 assertTrue(ret.isLeft());
260 public void getArtifactById6() {
261 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
262 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
263 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
264 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
265 EdgeLabelEnum.INSTANCE_ARTIFACTS);
266 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
267 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
268 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
269 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
270 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.SERVICE_API_ARTIFACTS);
271 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
272 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
274 assertTrue(ret.isLeft());
278 public void getArtifactById7_NotFound1() {
279 Map<String, InterfaceDataDefinition> interfaceDefinitions = getInterfaceDataDefinitionsByName("artifactDefId");
280 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
281 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
282 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
283 EdgeLabelEnum.INSTANCE_ARTIFACTS);
284 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
285 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
286 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
287 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
288 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
289 EdgeLabelEnum.SERVICE_API_ARTIFACTS);
290 doReturn(Either.left(interfaceDefinitions)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INTERFACE);
291 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
292 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
294 assertTrue(ret.isRight());
298 public void getArtifactById7_NotFound2() {
299 Map<String, InterfaceDataDefinition> interfaceDefinitions = getInterfaceDataDefinitionsByName("artifactDefId");
300 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
301 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
302 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
303 EdgeLabelEnum.INSTANCE_ARTIFACTS);
304 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
305 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
306 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
307 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
308 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
309 EdgeLabelEnum.SERVICE_API_ARTIFACTS);
310 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INTERFACE);
311 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
312 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
314 assertTrue(ret.isRight());
318 public void getArtifactById7_NotFound3() {
319 Map<String, InterfaceDataDefinition> interfaceDefinitions =
320 getInterfaceDataDefinitionsWithOperationsByNameNotFound("artifactDefId");
321 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
322 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
323 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
324 EdgeLabelEnum.INSTANCE_ARTIFACTS);
325 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
326 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
327 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
328 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
329 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
330 EdgeLabelEnum.SERVICE_API_ARTIFACTS);
331 doReturn(Either.left(interfaceDefinitions)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INTERFACE);
332 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
333 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
335 assertTrue(ret.isRight());
339 public void getArtifactById7() {
340 Map<String, InterfaceDataDefinition> interfaceDefinitions = getInterfaceDataDefinitionsWithOperationsByName("artifactDefId");
341 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
342 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
343 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph("containerId",
344 EdgeLabelEnum.INSTANCE_ARTIFACTS);
345 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
346 EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
347 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
348 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
349 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID,
350 EdgeLabelEnum.SERVICE_API_ARTIFACTS);
351 doReturn(Either.left(interfaceDefinitions)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INTERFACE);
352 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getArtifactById(
353 INSTANCE_ID, "artifactDefId", ComponentTypeEnum.RESOURCE_INSTANCE, "containerId");
355 assertTrue(ret.isLeft());
359 public void removeArtifactFromResource() {
360 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName2("artifactDefId");
361 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
362 doReturn(StorageOperationStatus.OK).when(testInstance).deleteToscaDataElement(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS, VertexTypeEnum.ARTIFACTS,
363 null, JsonPresentationFields.ARTIFACT_LABEL);
364 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.removeArifactFromResource(
365 INSTANCE_ID, "instanceId", NodeTypeEnum.Resource, false);
367 assertTrue(ret.isLeft());
371 public void removeArtifactFromResource_Mandatory() {
372 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName2("artifactDefId");
373 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
374 doReturn(StorageOperationStatus.OK).when(testInstance).deleteToscaDataElement(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS, VertexTypeEnum.ARTIFACTS,
375 null, JsonPresentationFields.ARTIFACT_LABEL);
376 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.removeArifactFromResource(
377 INSTANCE_ID, "instanceId", NodeTypeEnum.Resource, true);
379 assertTrue(ret.isLeft());
383 public void removeArtifactFromResource_NotFound() {
384 doReturn(Either.right(StorageOperationStatus.NOT_FOUND)).when(testInstance).getArtifactById(INSTANCE_ID, INSTANCE_ID);
385 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.removeArifactFromResource(
386 INSTANCE_ID, "instanceId", NodeTypeEnum.Resource, false);
388 assertTrue(ret.isRight());
392 public void removeArtifactFromResource_NotFound2() {
393 doReturn(Either.right(StorageOperationStatus.NOT_FOUND)).when(testInstance).removeArtifactOnGraph(INSTANCE_ID, INSTANCE_ID,
394 NodeTypeEnum.Resource, false);
395 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.removeArifactFromResource(
396 INSTANCE_ID, "instanceId", NodeTypeEnum.Resource, false);
398 assertTrue(ret.isRight());
402 public void getArtifacts() {
403 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName2("artifactDefId");
404 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
406 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> ret = testInstance.getArtifacts(INSTANCE_ID, NodeTypeEnum.Resource,
407 ArtifactGroupTypeEnum.INFORMATIONAL, INSTANCE_ID);
409 assertTrue(ret.isLeft());
413 public void getArtifacts_NotFound() {
414 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
416 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> ret = testInstance.getArtifacts(INSTANCE_ID, NodeTypeEnum.Resource,
417 ArtifactGroupTypeEnum.INFORMATIONAL, INSTANCE_ID);
419 assertTrue(ret.isRight());
423 public void getArtifacts2() {
424 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName2("artifactDefId");
425 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
426 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
427 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
429 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> ret = testInstance.getArtifacts(INSTANCE_ID);
431 assertTrue(ret.isLeft());
435 public void addHeatEnvArtifact() {
436 ArtifactDefinition artifactDef = new ArtifactDefinition();
437 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
438 ArtifactDefinition artifactDefHeat = new ArtifactDefinition();
439 artifactDefHeat.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
440 final Resource resource = new Resource();
441 resource.setUniqueId(INSTANCE_ID);
442 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
444 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
445 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
446 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
447 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
448 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.addHeatEnvArtifact(artifactDef, artifactDefHeat,
449 resource, NodeTypeEnum.Resource, false, INSTANCE_ID);
451 assertTrue(ret.isLeft());
455 public void getHeatArtifactByHeatEnvId() {
456 Map<String, InterfaceDataDefinition> interfaceDefinitions = getInterfaceDataDefinitionsByName("artifactDefId");
457 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
458 ArtifactDefinition artifactDefHeat = new ArtifactDefinition();
459 artifactDefHeat.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
460 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
461 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.TOSCA_ARTIFACTS);
462 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
463 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.SERVICE_API_ARTIFACTS);
464 doReturn(Either.left(interfaceDefinitions)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INTERFACE);
465 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.getHeatArtifactByHeatEnvId(
466 INSTANCE_ID, artifactDefHeat, "containerId", ComponentTypeEnum.RESOURCE);
468 assertTrue(ret.isRight());
472 public void updateHeatEnvArtifact() {
473 ArtifactDefinition artifactDef = new ArtifactDefinition();
474 artifactDef.setUniqueId("artifactId");
475 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
476 ArtifactDefinition artifactDefHeat = new ArtifactDefinition();
477 artifactDefHeat.setUniqueId("newArtifactId");
478 artifactDefHeat.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
479 final Resource resource = new Resource();
480 resource.setUniqueId(INSTANCE_ID);
481 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
482 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
483 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
485 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
486 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
487 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
489 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateHeatEnvArtifact(
490 resource, artifactDef, "artifactId", "newArtifactId", NodeTypeEnum.Resource, INSTANCE_ID);
492 assertTrue(ret.isLeft());
496 public void updateHeatEnvArtifact_NotFound() {
497 ArtifactDefinition artifactDef = new ArtifactDefinition();
498 artifactDef.setUniqueId("artifactId");
499 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
500 ArtifactDefinition artifactDefHeat = new ArtifactDefinition();
501 artifactDefHeat.setUniqueId("newArtifactId");
502 artifactDefHeat.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
503 final Resource resource = new Resource();
504 resource.setUniqueId(INSTANCE_ID);
505 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
506 doReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
507 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateHeatEnvArtifact(
508 resource, artifactDef, "artifactId", "newArtifactId", NodeTypeEnum.Resource, INSTANCE_ID);
510 assertTrue(ret.isRight());
514 public void updateHeatEnvArtifactOnInstance() {
515 ArtifactDefinition artifactDef = new ArtifactDefinition();
516 artifactDef.setUniqueId("artifactId");
517 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
518 ArtifactDefinition artifactDefHeat = new ArtifactDefinition();
519 artifactDefHeat.setUniqueId("newArtifactId");
520 artifactDefHeat.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
521 final Resource resource = new Resource();
522 resource.setUniqueId(INSTANCE_ID);
523 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
524 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
525 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.DEPLOYMENT_ARTIFACTS);
526 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
528 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
529 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
530 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
532 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateHeatEnvArtifactOnInstance(
533 resource, artifactDef, "artifactId", "newArtifactId", NodeTypeEnum.Resource, INSTANCE_ID);
535 assertTrue(ret.isLeft());
539 public void updateHeatEnvPlaceholder() {
540 ArtifactDefinition artifactDef = new ArtifactDefinition();
541 artifactDef.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
542 final Resource resource = new Resource();
543 resource.setUniqueId(INSTANCE_ID);
544 Map<String, ArtifactDataDefinition> instanceArtifacts = getMapArtifactsByName("artifactDefId");
545 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(INSTANCE_ID, EdgeLabelEnum.ARTIFACTS);
546 doReturn(Either.left(false)).when(testInstance).isCloneNeeded(Mockito.any(),
548 Map<String, ArtifactDefinition> artMap = new HashMap<>();
549 artMap.put(INSTANCE_ID, artifactDef);
550 doReturn(StorageOperationStatus.OK).when(testInstance).updateToscaDataOfToscaElement(Mockito.anyString(),
551 Mockito.any(), Mockito.any(), (List<ToscaDataDefinition>) Mockito.any(), Mockito.any());
552 doReturn(Either.left(artifactDef)).when(testInstance).updateArtifactOnGraph(resource,
553 artifactDef, NodeTypeEnum.Resource, null, INSTANCE_ID, false,
556 Either<ArtifactDefinition, StorageOperationStatus> ret = testInstance.updateHeatEnvPlaceholder(
557 artifactDef, resource, NodeTypeEnum.Resource);
559 assertTrue(ret.isLeft());
563 public void getInstanceArtifacts_collectAllInstanceArtifacts() throws Exception {
564 Map<String, ToscaDataDefinition> instanceArtifacts = Collections.singletonMap(INSTANCE_ID, getArtifactsByInstance("name1"));
566 Map<String, ToscaDataDefinition> instanceDeploymentArtifacts = new HashMap<>();
567 instanceDeploymentArtifacts.put(INSTANCE_ID, getArtifactsByInstance("name2", "name3"));
568 instanceDeploymentArtifacts.put("instanceId2", getArtifactsByInstance("name4"));
570 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INSTANCE_ARTIFACTS);
571 doReturn(Either.left(instanceDeploymentArtifacts)).when(testInstance).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
572 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> allInstArtifacts =
573 testInstance.getAllInstanceArtifacts(SERVICE_ID, INSTANCE_ID);
575 assertTrue(allInstArtifacts.isLeft());
576 assertEquals(allInstArtifacts.left().value().size(), 3);
577 assertTrue(allInstArtifacts.left().value().containsKey("name1"));
578 assertTrue(allInstArtifacts.left().value().containsKey("name2"));
579 assertTrue(allInstArtifacts.left().value().containsKey("name3"));
580 assertFalse(allInstArtifacts.left().value().containsKey("name4"));//this key is of different instance
584 public void getInstanceArtifacts_noArtifactsForInstance() throws Exception {
585 Map<String, ToscaDataDefinition> instanceArtifacts = Collections.singletonMap(INSTANCE_ID, getArtifactsByInstance("name1"));
587 doReturn(Either.left(instanceArtifacts)).when(testInstance).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INSTANCE_ARTIFACTS);
588 doReturn(Either.left(new HashMap<>())).when(testInstance).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
589 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> allInstArtifacts =
590 testInstance.getAllInstanceArtifacts(SERVICE_ID, "someOtherInstance");
592 assertTrue(allInstArtifacts.isLeft());
593 assertTrue(allInstArtifacts.left().value().isEmpty());
597 public void getInstanceArtifacts_errorGettingInstanceArtifacts() throws Exception {
598 doReturn(Either.right(JanusGraphOperationStatus.GENERAL_ERROR)).when(testInstance)
599 .getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INSTANCE_ARTIFACTS);
600 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> allInstArtifacts =
601 testInstance.getAllInstanceArtifacts(SERVICE_ID, INSTANCE_ID);
602 verify(testInstance, times(0)).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
603 assertTrue(allInstArtifacts.isRight());
607 public void getAllInstanceArtifacts_errorGettingDeploymentArtifacts() throws Exception {
608 doReturn(Either.left(new HashMap<>())).when(testInstance).getDataFromGraph(SERVICE_ID, EdgeLabelEnum.INSTANCE_ARTIFACTS);
609 doReturn(Either.right(JanusGraphOperationStatus.GENERAL_ERROR)).when(testInstance).getDataFromGraph(SERVICE_ID,
610 EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS);
611 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> allInstArtifacts =
612 testInstance.getAllInstanceArtifacts(SERVICE_ID, INSTANCE_ID);
613 assertTrue(allInstArtifacts.isRight());
616 private ToscaDataDefinition getArtifactsByInstance(String ... artifactsNames) {
617 MapArtifactDataDefinition artifactsByInstance = new MapArtifactDataDefinition();
618 Map<String, ArtifactDataDefinition> artifactsByName = new HashMap<>();
619 for (String artifactName : artifactsNames) {
620 artifactsByName.put(artifactName, new ArtifactDataDefinition());
622 artifactsByInstance.setMapToscaDataDefinition(artifactsByName);
623 return artifactsByInstance;
626 private ToscaDataDefinition getArtifactsByInstanceSettingUniqueId(String ... artifactsNames) {
627 MapArtifactDataDefinition artifactsByInstance = new MapArtifactDataDefinition();
628 Map<String, ArtifactDataDefinition> artifactsByName = new HashMap<>();
629 for (String artifactName : artifactsNames) {
630 ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
631 artifactDataDefinition.setUniqueId(artifactName);
632 artifactsByName.put(artifactName, artifactDataDefinition);
634 artifactsByInstance.setMapToscaDataDefinition(artifactsByName);
635 return artifactsByInstance;
638 private Map<String, ArtifactDataDefinition> getMapArtifactsByName(String ... artifactsNames) {
639 Map<String, ArtifactDataDefinition> artifactsByName = new HashMap<>();
640 for (String artifactName : artifactsNames) {
641 ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
642 artifactDataDefinition.setUniqueId(artifactName);
643 artifactDataDefinition.setGeneratedFromId("artifactId");
644 artifactDataDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
645 artifactsByName.put(artifactName, artifactDataDefinition);
647 return artifactsByName;
650 private Map<String, ArtifactDataDefinition> getMapArtifactsByName2(String ... artifactsNames) {
651 Map<String, ArtifactDataDefinition> artifactsByName = new HashMap<>();
652 for (String artifactName : artifactsNames) {
653 ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
654 artifactDataDefinition.setUniqueId(INSTANCE_ID);
655 artifactDataDefinition.setMandatory(true);
656 artifactDataDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
657 artifactsByName.put(artifactName, artifactDataDefinition);
659 return artifactsByName;
662 private Map<String, InterfaceDataDefinition> getInterfaceDataDefinitionsByName(String ... artifactsNames) {
663 Map<String, InterfaceDataDefinition> interfaceDataDefinitionsByName = new HashMap<>();
664 for (String artifactName : artifactsNames) {
665 InterfaceDataDefinition interfaceDataDefinition = new InterfaceDataDefinition();
666 interfaceDataDefinition.setUniqueId(artifactName);
667 interfaceDataDefinitionsByName.put(artifactName, interfaceDataDefinition);
669 return interfaceDataDefinitionsByName;
672 private Map<String, InterfaceDataDefinition> getInterfaceDataDefinitionsWithOperationsByName(String ... artifactsNames) {
673 Map<String, InterfaceDataDefinition> interfaceDataDefinitionsByName = new HashMap<>();
674 for (String artifactName : artifactsNames) {
675 Map<String, OperationDataDefinition> operations = new HashMap<>();
676 OperationDataDefinition operation1 = new OperationDataDefinition();
677 operation1.setName("operation1");
678 ArtifactDataDefinition impl1 = new ArtifactDataDefinition();
679 impl1.setUniqueId(artifactName);
680 operation1.setImplementation(impl1);
681 operations.put(artifactName, operation1);
682 InterfaceDataDefinition interfaceDataDefinition = new InterfaceDataDefinition();
683 interfaceDataDefinition.setUniqueId(artifactName);
684 interfaceDataDefinition.setOperations(operations);
685 interfaceDataDefinitionsByName.put(artifactName, interfaceDataDefinition);
687 return interfaceDataDefinitionsByName;
690 private Map<String, InterfaceDataDefinition> getInterfaceDataDefinitionsWithOperationsByNameNotFound(String ... artifactsNames) {
691 Map<String, InterfaceDataDefinition> interfaceDataDefinitionsByName = new HashMap<>();
692 for (String artifactName : artifactsNames) {
693 Map<String, OperationDataDefinition> operations = new HashMap<>();
694 OperationDataDefinition operation1 = new OperationDataDefinition();
695 operation1.setName("operation1");
696 ArtifactDataDefinition impl1 = new ArtifactDataDefinition();
697 impl1.setUniqueId("implementation1");
698 operation1.setImplementation(impl1);
699 operations.put(artifactName, operation1);
700 InterfaceDataDefinition interfaceDataDefinition = new InterfaceDataDefinition();
701 interfaceDataDefinition.setUniqueId(artifactName);
702 interfaceDataDefinition.setOperations(operations);
703 interfaceDataDefinitionsByName.put(artifactName, interfaceDataDefinition);
705 return interfaceDataDefinitionsByName;