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 com.fasterxml.jackson.annotation.JsonInclude;
24 import com.fasterxml.jackson.databind.DeserializationFeature;
25 import com.fasterxml.jackson.databind.ObjectMapper;
26 import com.fasterxml.jackson.databind.SerializationFeature;
27 import com.google.gson.Gson;
28 import com.google.gson.GsonBuilder;
29 import com.google.gson.JsonElement;
30 import fj.data.Either;
31 import java.util.Optional;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.InjectMocks;
36 import org.mockito.Mock;
37 import org.mockito.Mockito;
38 import org.mockito.MockitoAnnotations;
39 import org.mockito.junit.MockitoJUnitRunner;
40 import org.openecomp.sdc.be.components.ArtifactsResolver;
41 import org.openecomp.sdc.be.config.ArtifactConfigManager;
42 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
43 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
44 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
45 import org.openecomp.sdc.be.config.ArtifactConfiguration;
46 import org.openecomp.sdc.be.config.ComponentType;
47 import org.openecomp.sdc.be.dao.api.ActionStatus;
48 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
49 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
50 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
51 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
52 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
53 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
54 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
55 import org.openecomp.sdc.be.impl.ComponentsUtils;
56 import org.openecomp.sdc.be.model.ArtifactDefinition;
57 import org.openecomp.sdc.be.model.HeatParameterDefinition;
58 import org.openecomp.sdc.be.model.InterfaceDefinition;
59 import org.openecomp.sdc.be.model.Operation;
60 import org.openecomp.sdc.be.model.Resource;
61 import org.openecomp.sdc.be.model.Service;
62 import org.openecomp.sdc.be.model.User;
63 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
64 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
65 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
66 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
67 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
68 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
69 import org.openecomp.sdc.be.servlets.RepresentationUtils;
70 import org.openecomp.sdc.be.tosca.CsarUtils;
71 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
72 import org.openecomp.sdc.be.user.UserBusinessLogic;
73 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
74 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
75 import org.openecomp.sdc.exception.ResponseFormat;
77 import java.io.IOException;
78 import java.util.ArrayList;
79 import java.util.Collections;
80 import java.util.HashMap;
81 import java.util.List;
84 import static org.assertj.core.api.Assertions.assertThat;
85 import static org.mockito.ArgumentMatchers.any;
86 import static org.mockito.ArgumentMatchers.anyBoolean;
87 import static org.mockito.ArgumentMatchers.anyString;
88 import static org.mockito.ArgumentMatchers.eq;
89 import static org.mockito.Mockito.times;
90 import static org.mockito.Mockito.verify;
91 import static org.mockito.Mockito.when;
92 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
93 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
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 // public static final InformationDeployedArtifactsBusinessLogic
127 // informationDeployedArtifactsBusinessLogic =
128 // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
130 private ToscaExportHandler toscaExportHandler;
132 private CsarUtils csarUtils;
134 private LifecycleBusinessLogic lifecycleBusinessLogic;
136 private ArtifactsResolver artifactsResolver;
138 public static final Resource resource = Mockito.mock(Resource.class);
139 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
142 public void initMocks() {
143 MockitoAnnotations.initMocks(this);
144 when(userBusinessLogic.getUser(eq("jh0003"), anyBoolean())).thenReturn(USER);
145 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
149 public void testValidJson() {
150 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
152 String jsonArtifact = "";
154 ObjectMapper mapper = new ObjectMapper();
155 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
156 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
157 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
160 jsonArtifact = mapper.writeValueAsString(ad);
161 } catch (IOException e) {
162 // TODO Auto-generated catch block
166 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class, false);
167 assertThat(afterConvert).isEqualTo(ad);
170 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
171 ArtifactDefinition ad = new ArtifactDefinition();
172 ad.setArtifactName(artifactName);
173 ad.setArtifactLabel("label1");
174 ad.setDescription("description");
175 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
176 ad.setArtifactGroupType(groupTypeEnum);
177 ad.setCreationDate(System.currentTimeMillis());
178 ad.setMandatory(false);
184 public void testInvalidStringGroupType() {
185 ArtifactDefinition ad = new ArtifactDefinition();
186 ad.setArtifactName("artifact1");
187 ad.setCreationDate(System.currentTimeMillis());
188 ad.setMandatory(false);
191 JsonElement jsonArtifact = gson.toJsonTree(ad);
192 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
193 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
194 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
195 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
197 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
198 assertThat(afterConvert).isNull();
202 public void testInvalidNumberGroupType() {
203 ArtifactDefinition ad = new ArtifactDefinition();
204 ad.setArtifactName("artifact1");
205 ad.setCreationDate(System.currentTimeMillis());
206 ad.setMandatory(false);
209 JsonElement jsonArtifact = gson.toJsonTree(ad);
210 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
211 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
212 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
213 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
215 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
216 assertThat(afterConvert).isNull();
220 public void testInvalidGroupTypeWithSpace() {
221 ArtifactDefinition ad = new ArtifactDefinition();
222 ad.setArtifactName("artifact1");
223 ad.setCreationDate(System.currentTimeMillis());
224 ad.setMandatory(false);
227 JsonElement jsonArtifact = gson.toJsonTree(ad);
228 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
229 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
230 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
231 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
233 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
234 assertThat(afterConvert).isNull();
238 public void testInvalidTimeoutWithSpace() {
239 ArtifactDefinition ad = new ArtifactDefinition();
240 ad.setArtifactName("artifact1");
241 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
242 ad.setCreationDate(System.currentTimeMillis());
243 ad.setMandatory(false);
245 JsonElement jsonArtifact = gson.toJsonTree(ad);
246 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
247 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
248 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
249 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
251 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, true);
252 assertThat(afterConvert).isNull();
256 public void validateArtifactNameUniqueness_Unique() {
258 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
259 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
260 ArtifactGroupTypeEnum.INFORMATIONAL);
261 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
262 ArtifactGroupTypeEnum.DEPLOYMENT);
264 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
265 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
266 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
268 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
269 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
271 Resource parent = new Resource();
272 parent.setUniqueId("uniqueId");
274 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
275 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
279 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
281 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
282 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
283 ArtifactGroupTypeEnum.INFORMATIONAL);
284 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
285 ArtifactGroupTypeEnum.DEPLOYMENT);
287 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
288 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
289 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
291 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
292 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
295 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
296 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
297 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
298 .thenReturn(allInterfacesOfResource);
300 Resource parent = new Resource();
301 parent.setUniqueId("uniqueId");
303 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
304 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
308 public void validateArtifactNameUniqueness_UniqueInterface() {
310 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
311 artifactInfo.setArtifactLabel("uniqueLabel");
312 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
313 ArtifactGroupTypeEnum.INFORMATIONAL);
314 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
315 ArtifactGroupTypeEnum.DEPLOYMENT);
317 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
318 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
319 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
321 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
322 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
325 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
326 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
328 Resource parent = new Resource();
329 parent.setUniqueId("uniqueId");
331 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
332 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
336 public void validateArtifactNameUniqueness_updateName() {
337 //artifacts with the same name have the same label
338 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
339 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
340 ArtifactGroupTypeEnum.INFORMATIONAL);
341 informationArtifactDefinition1.setArtifactLabel("label2");
342 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
343 ArtifactGroupTypeEnum.DEPLOYMENT);
345 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
346 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
347 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
348 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
350 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
351 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
353 Resource parent = new Resource();
354 parent.setUniqueId("uniqueId");
356 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
357 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
361 public void validateArtifactNameUniqueness_UniqueInGroupType() {
363 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
364 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
365 ArtifactGroupTypeEnum.INFORMATIONAL);
366 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
367 ArtifactGroupTypeEnum.DEPLOYMENT);
369 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
370 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
371 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
373 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
374 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
376 Resource parent = new Resource();
377 parent.setUniqueId("uniqueId");
379 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
380 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
384 public void validateArtifactNameUniqueness_NonUnique() {
386 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
387 artifactInfo.setArtifactLabel("artifactLabel");
388 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
389 ArtifactGroupTypeEnum.INFORMATIONAL);
390 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
391 ArtifactGroupTypeEnum.DEPLOYMENT);
393 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
394 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
395 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
397 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
398 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
400 Resource parent = new Resource();
401 parent.setUniqueId("uniqueId");
403 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
404 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
408 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
410 InterfaceDefinition id1 = new InterfaceDefinition();
411 Map<String, Operation> operationMap = new HashMap<>();
412 Operation operation1 = new Operation();
413 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
414 dataImplementation.setArtifactName(artifactName);
415 operation1.setImplementation(dataImplementation);
416 operationMap.put("operation1", operation1);
417 id1.setOperationsMap(operationMap);
418 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
419 interfaceDefMap.put("id1",id1);
420 return interfaceDefMap;
424 public void testValidMibArtifactsConfiguration() {
425 final ArtifactConfigManager artifactConfigManager = ArtifactConfigManager.getInstance();
426 Optional<ArtifactConfiguration> artifactConfiguration = artifactConfigManager
427 .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
428 assertThat(artifactConfiguration.isPresent()).isTrue();
430 artifactConfiguration = artifactConfigManager
431 .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
432 assertThat(artifactConfiguration.isPresent()).isTrue();
434 artifactConfiguration = artifactConfigManager
435 .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
436 assertThat(artifactConfiguration.isPresent()).isTrue();
437 artifactConfiguration = artifactConfigManager
438 .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
439 assertThat(artifactConfiguration.isPresent()).isTrue();
443 public void testDownloadServiceArtifactByNames() {
444 Service service = new Service();
445 String serviceName = "myService";
446 String serviceVersion = "1.0";
447 String serviceId = "serviceId";
448 service.setName(serviceName);
449 service.setVersion(serviceVersion);
450 service.setUniqueId(serviceId);
452 String artifactName = "service-Myservice-template.yml";
453 String artifactLabel = "assettoscatemplate";
454 String esArtifactId = "123123dfgdfgd0";
455 byte[] payload = "some payload".getBytes();
456 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
457 toscaTemplateArtifact.setArtifactName(artifactName);
458 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
459 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
460 toscaTemplateArtifact.setEsId(esArtifactId);
461 toscaTemplateArtifact.setPayload(payload);
463 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
464 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
465 service.setToscaArtifacts(toscaArtifacts);
467 DAOArtifactData DAOArtifactData =new DAOArtifactData(esArtifactId);
468 DAOArtifactData.setDataAsArray(payload);
469 Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
470 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
471 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
472 serviceList.add(service);
473 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
474 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
475 byte[] downloadServiceArtifactByNamesRes =
476 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
477 assertThat(downloadServiceArtifactByNamesRes !=null &&
478 downloadServiceArtifactByNamesRes.length == payload.length).isTrue();
482 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
483 ArtifactDefinition heatArtifact = new ArtifactBuilder()
484 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
485 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
488 Resource component = new Resource();
489 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
490 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
491 .thenReturn(Either.left(new ArtifactDefinition()));
492 ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
493 assertThat(heatEnvPlaceHolder.getListHeatParameters()).isNull();
497 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
498 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
499 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
500 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
501 ArtifactDefinition heatArtifact = new ArtifactBuilder()
502 .addHeatParam(heatParam1)
503 .addHeatParam(heatParam2)
504 .addHeatParam(heatParam3)
507 Resource component = new Resource();
510 ArtifactDefinition heatEnvArtifact = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
511 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
512 assertThat(listHeatParameters.size()).isEqualTo(3);
513 verifyHeatParam(listHeatParameters.get(0), heatParam1);
514 verifyHeatParam(listHeatParameters.get(1), heatParam2);
515 verifyHeatParam(listHeatParameters.get(2), heatParam3);
519 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
520 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
521 artifactDefinition.setArtifactName(ARTIFACT_NAME);
522 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
523 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
524 artifactDefinition.setEsId(ES_ARTIFACT_ID);
525 artifactDefinition.setPayload(PAYLOAD);
526 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
528 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
529 //TODO Remove if passes
530 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
531 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
532 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
533 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
534 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
535 USER, INSTANCE_ID, true, true);
536 assertThat(result.isLeft()).isTrue();
539 private ArtifactsBusinessLogic getArtifactsBusinessLogic() {
540 ArtifactsBusinessLogic artifactsBusinessLogic = new ArtifactsBusinessLogic(artifactCassandraDao,
541 toscaExportHandler, csarUtils, lifecycleBusinessLogic,
542 userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation,
543 groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);
544 artifactsBusinessLogic.setGraphLockOperation(graphLockOperation);
545 artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
546 return artifactsBusinessLogic;
550 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
551 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
552 artifactDefinition.setArtifactName(ARTIFACT_NAME);
553 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
554 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
555 artifactDefinition.setEsId(ES_ARTIFACT_ID);
556 artifactDefinition.setPayload(PAYLOAD);
557 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
559 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
560 //TODO Remove if passes
561 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
562 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
563 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
564 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
565 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
566 USER, INSTANCE_ID, true, false);
567 verify(janusGraphDao, times(1)).commit();
568 assertThat(result.isLeft()).isTrue();
572 public void testDeleteComponent_ArtifactNotFound(){
573 Resource resource = new Resource();
574 String uniqueId = "uniqueId";
575 resource.setUniqueId(uniqueId);
576 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
577 ArtifactDefinition artifact = new ArtifactDefinition();
578 artifact.setArtifactName("artifactName");
579 artifact.setEsId("esId");
580 artifact.setArtifactUUID("artifactUUID");
581 artifact.setArtifactType("YANG");
582 artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
583 artifact.setDescription("description");
584 artifact.setArtifactLabel("artifactLabel");
585 toscaArtifacts.put("artifactId", artifact);
586 resource.setArtifacts(toscaArtifacts);
587 resource.setToscaArtifacts(toscaArtifacts);
588 when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
589 .thenReturn(StorageOperationStatus.OK);
590 when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
591 .thenReturn(StorageOperationStatus.OK);
592 Either<ArtifactDefinition, ResponseFormat> result = artifactBL.handleDelete(
593 "parentId", "artifactId", USER,
594 resource, true, false);
595 assertThat(result.isRight()).isTrue();
598 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
599 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
600 assertThat(heatEnvParam.getCurrentValue()).isNull();