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.components.impl;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.ArgumentMatchers.anyBoolean;
26 import static org.mockito.ArgumentMatchers.anyString;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
31 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
32 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
34 import com.fasterxml.jackson.annotation.JsonInclude;
35 import com.fasterxml.jackson.databind.DeserializationFeature;
36 import com.fasterxml.jackson.databind.ObjectMapper;
37 import com.fasterxml.jackson.databind.SerializationFeature;
38 import com.google.gson.Gson;
39 import com.google.gson.GsonBuilder;
40 import com.google.gson.JsonElement;
41 import fj.data.Either;
42 import java.io.IOException;
43 import java.util.ArrayList;
44 import java.util.Collections;
45 import java.util.HashMap;
46 import java.util.List;
48 import java.util.Optional;
49 import org.junit.Before;
50 import org.junit.Test;
51 import org.junit.runner.RunWith;
52 import org.mockito.InjectMocks;
53 import org.mockito.Mock;
54 import org.mockito.Mockito;
55 import org.mockito.MockitoAnnotations;
56 import org.mockito.junit.MockitoJUnitRunner;
57 import org.openecomp.sdc.be.components.ArtifactsResolver;
58 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
59 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
60 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
61 import org.openecomp.sdc.be.config.ArtifactConfigManager;
62 import org.openecomp.sdc.be.config.ArtifactConfiguration;
63 import org.openecomp.sdc.be.config.ComponentType;
64 import org.openecomp.sdc.be.dao.api.ActionStatus;
65 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
66 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
67 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
68 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
69 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
70 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
71 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
72 import org.openecomp.sdc.be.impl.ComponentsUtils;
73 import org.openecomp.sdc.be.model.ArtifactDefinition;
74 import org.openecomp.sdc.be.model.HeatParameterDefinition;
75 import org.openecomp.sdc.be.model.InterfaceDefinition;
76 import org.openecomp.sdc.be.model.Operation;
77 import org.openecomp.sdc.be.model.Resource;
78 import org.openecomp.sdc.be.model.Service;
79 import org.openecomp.sdc.be.model.User;
80 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
81 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
82 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
83 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
84 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
85 import org.openecomp.sdc.be.model.operations.impl.ArtifactTypeOperation;
86 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
87 import org.openecomp.sdc.be.servlets.RepresentationUtils;
88 import org.openecomp.sdc.be.tosca.CsarUtils;
89 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
90 import org.openecomp.sdc.be.user.UserBusinessLogic;
91 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
92 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
93 import org.openecomp.sdc.exception.ResponseFormat;
95 @RunWith(MockitoJUnitRunner.class)
96 public class ArtifactBusinessLogicTest extends BaseBusinessLogicMock{
98 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
99 private static final String RESOURCE_INSTANCE_NAME = "Service-111";
100 private static final String INSTANCE_ID = "S-123-444-ghghghg";
102 private static final String ARTIFACT_NAME = "service-Myservice-template.yml";
103 private static final String ARTIFACT_LABEL = "assettoscatemplate";
104 private static final String ES_ARTIFACT_ID = "123123dfgdfgd0";
105 private static final byte[] PAYLOAD = "some payload".getBytes();
108 private ArtifactsBusinessLogic artifactBL;
110 private UserBusinessLogic userBusinessLogic;
112 public ComponentsUtils componentsUtils;
114 private ArtifactCassandraDao artifactCassandraDao;
116 public ToscaOperationFacade toscaOperationFacade;
118 private NodeTemplateOperation nodeTemplateOperation;
120 private IGraphLockOperation graphLockOperation;
122 JanusGraphDao janusGraphDao;
124 private IInterfaceLifecycleOperation interfaceLifecycleOperation;
126 private ToscaExportHandler toscaExportHandler;
128 private CsarUtils csarUtils;
130 private LifecycleBusinessLogic lifecycleBusinessLogic;
132 private ArtifactsResolver artifactsResolver;
134 private ArtifactTypeOperation artifactTypeOperation;
136 public static final Resource resource = Mockito.mock(Resource.class);
137 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
140 public void initMocks() {
141 MockitoAnnotations.openMocks(this);
142 when(userBusinessLogic.getUser(eq("jh0003"), anyBoolean())).thenReturn(USER);
143 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
147 public void testValidJson() {
148 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
150 String jsonArtifact = "";
152 ObjectMapper mapper = new ObjectMapper();
153 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
154 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
155 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
158 jsonArtifact = mapper.writeValueAsString(ad);
159 } catch (IOException e) {
160 // TODO Auto-generated catch block
164 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class, false);
165 assertThat(afterConvert).isEqualTo(ad);
168 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
169 ArtifactDefinition ad = new ArtifactDefinition();
170 ad.setArtifactName(artifactName);
171 ad.setArtifactLabel("label1");
172 ad.setDescription("description");
173 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
174 ad.setArtifactGroupType(groupTypeEnum);
175 ad.setCreationDate(System.currentTimeMillis());
176 ad.setMandatory(false);
182 public void testInvalidStringGroupType() {
183 ArtifactDefinition ad = new ArtifactDefinition();
184 ad.setArtifactName("artifact1");
185 ad.setCreationDate(System.currentTimeMillis());
186 ad.setMandatory(false);
189 JsonElement jsonArtifact = gson.toJsonTree(ad);
190 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
191 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
192 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
193 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
195 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
196 assertThat(afterConvert).isNull();
200 public void testInvalidNumberGroupType() {
201 ArtifactDefinition ad = new ArtifactDefinition();
202 ad.setArtifactName("artifact1");
203 ad.setCreationDate(System.currentTimeMillis());
204 ad.setMandatory(false);
207 JsonElement jsonArtifact = gson.toJsonTree(ad);
208 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
209 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
210 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
211 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
213 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
214 assertThat(afterConvert).isNull();
218 public void testInvalidGroupTypeWithSpace() {
219 ArtifactDefinition ad = new ArtifactDefinition();
220 ad.setArtifactName("artifact1");
221 ad.setCreationDate(System.currentTimeMillis());
222 ad.setMandatory(false);
225 JsonElement jsonArtifact = gson.toJsonTree(ad);
226 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
227 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
228 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
229 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
231 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
232 assertThat(afterConvert).isNull();
236 public void testInvalidTimeoutWithSpace() {
237 ArtifactDefinition ad = new ArtifactDefinition();
238 ad.setArtifactName("artifact1");
239 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
240 ad.setCreationDate(System.currentTimeMillis());
241 ad.setMandatory(false);
243 JsonElement jsonArtifact = gson.toJsonTree(ad);
244 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
245 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
246 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
247 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
249 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, true);
250 assertThat(afterConvert).isNull();
254 public void validateArtifactNameUniqueness_Unique() {
256 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
257 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
258 ArtifactGroupTypeEnum.INFORMATIONAL);
259 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
260 ArtifactGroupTypeEnum.DEPLOYMENT);
262 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
263 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
264 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
266 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
267 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
269 Resource parent = new Resource();
270 parent.setUniqueId("uniqueId");
272 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
273 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
277 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
279 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
280 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
281 ArtifactGroupTypeEnum.INFORMATIONAL);
282 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
283 ArtifactGroupTypeEnum.DEPLOYMENT);
285 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
286 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
287 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
289 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
290 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
293 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
294 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
295 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
296 .thenReturn(allInterfacesOfResource);
298 Resource parent = new Resource();
299 parent.setUniqueId("uniqueId");
301 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
302 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
306 public void validateArtifactNameUniqueness_UniqueInterface() {
308 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
309 artifactInfo.setArtifactLabel("uniqueLabel");
310 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
311 ArtifactGroupTypeEnum.INFORMATIONAL);
312 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
313 ArtifactGroupTypeEnum.DEPLOYMENT);
315 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
316 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
317 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
319 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
320 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
323 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
324 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
326 Resource parent = new Resource();
327 parent.setUniqueId("uniqueId");
329 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
330 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
334 public void validateArtifactNameUniqueness_updateName() {
335 //artifacts with the same name have the same label
336 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
337 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
338 ArtifactGroupTypeEnum.INFORMATIONAL);
339 informationArtifactDefinition1.setArtifactLabel("label2");
340 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
341 ArtifactGroupTypeEnum.DEPLOYMENT);
343 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
344 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
345 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
346 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
348 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
349 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
351 Resource parent = new Resource();
352 parent.setUniqueId("uniqueId");
354 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
355 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
359 public void validateArtifactNameUniqueness_UniqueInGroupType() {
361 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
362 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
363 ArtifactGroupTypeEnum.INFORMATIONAL);
364 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
365 ArtifactGroupTypeEnum.DEPLOYMENT);
367 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
368 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
369 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
371 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
372 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
374 Resource parent = new Resource();
375 parent.setUniqueId("uniqueId");
377 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
378 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
382 public void validateArtifactNameUniqueness_NonUnique() {
384 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
385 artifactInfo.setArtifactLabel("artifactLabel");
386 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
387 ArtifactGroupTypeEnum.INFORMATIONAL);
388 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
389 ArtifactGroupTypeEnum.DEPLOYMENT);
391 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
392 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
393 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
395 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
396 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
398 Resource parent = new Resource();
399 parent.setUniqueId("uniqueId");
401 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
402 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
406 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
408 InterfaceDefinition id1 = new InterfaceDefinition();
409 Map<String, Operation> operationMap = new HashMap<>();
410 Operation operation1 = new Operation();
411 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
412 dataImplementation.setArtifactName(artifactName);
413 operation1.setImplementation(dataImplementation);
414 operationMap.put("operation1", operation1);
415 id1.setOperationsMap(operationMap);
416 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
417 interfaceDefMap.put("id1",id1);
418 return interfaceDefMap;
422 public void testValidMibArtifactsConfiguration() {
423 final ArtifactConfigManager artifactConfigManager = ArtifactConfigManager.getInstance();
424 Optional<ArtifactConfiguration> artifactConfiguration = artifactConfigManager
425 .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
426 assertThat(artifactConfiguration.isPresent()).isTrue();
428 artifactConfiguration = artifactConfigManager
429 .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
430 assertThat(artifactConfiguration.isPresent()).isTrue();
432 artifactConfiguration = artifactConfigManager
433 .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
434 assertThat(artifactConfiguration.isPresent()).isTrue();
435 artifactConfiguration = artifactConfigManager
436 .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
437 assertThat(artifactConfiguration.isPresent()).isTrue();
441 public void testDownloadServiceArtifactByNames() {
442 Service service = new Service();
443 String serviceName = "myService";
444 String serviceVersion = "1.0";
445 String serviceId = "serviceId";
446 service.setName(serviceName);
447 service.setVersion(serviceVersion);
448 service.setUniqueId(serviceId);
450 String artifactName = "service-Myservice-template.yml";
451 String artifactLabel = "assettoscatemplate";
452 String esArtifactId = "123123dfgdfgd0";
453 byte[] payload = "some payload".getBytes();
454 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
455 toscaTemplateArtifact.setArtifactName(artifactName);
456 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
457 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
458 toscaTemplateArtifact.setEsId(esArtifactId);
459 toscaTemplateArtifact.setPayload(payload);
461 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
462 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
463 service.setToscaArtifacts(toscaArtifacts);
465 DAOArtifactData DAOArtifactData =new DAOArtifactData(esArtifactId);
466 DAOArtifactData.setDataAsArray(payload);
467 Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
468 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
469 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
470 serviceList.add(service);
471 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
472 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
473 byte[] downloadServiceArtifactByNamesRes =
474 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
475 assertThat(downloadServiceArtifactByNamesRes !=null &&
476 downloadServiceArtifactByNamesRes.length == payload.length).isTrue();
480 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
481 ArtifactDefinition heatArtifact = new ArtifactBuilder()
482 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
483 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
486 Resource component = new Resource();
487 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
488 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
489 .thenReturn(Either.left(new ArtifactDefinition()));
490 ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
491 assertThat(heatEnvPlaceHolder.getListHeatParameters()).isNull();
495 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
496 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
497 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
498 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
499 ArtifactDefinition heatArtifact = new ArtifactBuilder()
500 .addHeatParam(heatParam1)
501 .addHeatParam(heatParam2)
502 .addHeatParam(heatParam3)
505 Resource component = new Resource();
508 ArtifactDefinition heatEnvArtifact = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
509 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
510 assertThat(listHeatParameters.size()).isEqualTo(3);
511 verifyHeatParam(listHeatParameters.get(0), heatParam1);
512 verifyHeatParam(listHeatParameters.get(1), heatParam2);
513 verifyHeatParam(listHeatParameters.get(2), heatParam3);
517 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
518 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
519 artifactDefinition.setArtifactName(ARTIFACT_NAME);
520 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
521 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
522 artifactDefinition.setEsId(ES_ARTIFACT_ID);
523 artifactDefinition.setPayload(PAYLOAD);
524 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
526 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
527 //TODO Remove if passes
528 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
529 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
530 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
531 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
532 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
533 USER, INSTANCE_ID, true, true);
534 assertThat(result.isLeft()).isTrue();
538 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
539 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
540 artifactDefinition.setArtifactName(ARTIFACT_NAME);
541 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
542 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
543 artifactDefinition.setEsId(ES_ARTIFACT_ID);
544 artifactDefinition.setPayload(PAYLOAD);
545 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
547 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
548 //TODO Remove if passes
549 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
550 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
551 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
552 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
553 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
554 USER, INSTANCE_ID, true, false);
555 verify(janusGraphDao, times(1)).commit();
556 assertThat(result.isLeft()).isTrue();
560 public void testDeleteComponent_ArtifactNotFound(){
561 Resource resource = new Resource();
562 String uniqueId = "uniqueId";
563 resource.setUniqueId(uniqueId);
564 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
565 ArtifactDefinition artifact = new ArtifactDefinition();
566 artifact.setArtifactName("artifactName");
567 artifact.setEsId("esId");
568 artifact.setArtifactUUID("artifactUUID");
569 artifact.setArtifactType("YANG");
570 artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
571 artifact.setDescription("description");
572 artifact.setArtifactLabel("artifactLabel");
573 toscaArtifacts.put("artifactId", artifact);
574 resource.setArtifacts(toscaArtifacts);
575 resource.setToscaArtifacts(toscaArtifacts);
576 when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
577 .thenReturn(StorageOperationStatus.OK);
578 when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
579 .thenReturn(StorageOperationStatus.OK);
580 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.handleDelete(
581 "parentId", "artifactId", USER,
582 resource, true, false);
583 assertThat(result.isRight()).isTrue();
586 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
587 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
588 assertThat(heatEnvParam.getCurrentValue()).isNull();