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 org.junit.Before;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.InjectMocks;
35 import org.mockito.Mock;
36 import org.mockito.Mockito;
37 import org.mockito.MockitoAnnotations;
38 import org.mockito.junit.MockitoJUnitRunner;
39 import org.openecomp.sdc.be.components.ArtifactsResolver;
40 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
41 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
42 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
43 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
44 import org.openecomp.sdc.be.config.ConfigurationManager;
45 import org.openecomp.sdc.be.dao.api.ActionStatus;
46 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
47 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
48 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
49 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
50 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
51 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
52 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
53 import org.openecomp.sdc.be.impl.ComponentsUtils;
54 import org.openecomp.sdc.be.model.*;
55 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
56 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation;
57 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
58 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
59 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
60 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
61 import org.openecomp.sdc.be.model.operations.api.*;
62 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
63 import org.openecomp.sdc.be.resources.data.ESArtifactData;
64 import org.openecomp.sdc.be.servlets.RepresentationUtils;
65 import org.openecomp.sdc.be.tosca.CsarUtils;
66 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
67 import org.openecomp.sdc.be.user.IUserBusinessLogic;
68 import org.openecomp.sdc.be.user.UserBusinessLogic;
69 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
70 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
71 import org.openecomp.sdc.common.api.ConfigurationSource;
72 import org.openecomp.sdc.common.impl.ExternalConfiguration;
73 import org.openecomp.sdc.common.impl.FSConfigurationSource;
74 import org.openecomp.sdc.exception.ResponseFormat;
76 import java.io.IOException;
79 import static org.assertj.core.api.Java6Assertions.assertThat;
80 import static org.mockito.ArgumentMatchers.any;
81 import static org.mockito.ArgumentMatchers.anyBoolean;
82 import static org.mockito.ArgumentMatchers.anyString;
83 import static org.mockito.ArgumentMatchers.eq;
84 import static org.mockito.Mockito.*;
85 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
86 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
88 @RunWith(MockitoJUnitRunner.class)
89 public class ArtifactBusinessLogicTest extends BaseBusinessLogicMock{
91 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
92 private final static String RESOURCE_INSTANCE_NAME = "Service-111";
93 private final static String INSTANCE_ID = "S-123-444-ghghghg";
95 private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
96 private final static String ARTIFACT_LABEL = "assettoscatemplate";
97 private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
98 private final static byte[] PAYLOAD = "some payload".getBytes();
100 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
101 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
104 private ArtifactsBusinessLogic artifactBL;
106 private ArtifactOperation artifactOperation;
108 public ComponentsUtils componentsUtils;
110 private IInterfaceLifecycleOperation lifecycleOperation;
112 private IUserAdminOperation userOperation;
114 private IElementOperation elementOperation;
116 private ArtifactCassandraDao artifactCassandraDao;
118 public ToscaOperationFacade toscaOperationFacade;
120 private UserBusinessLogic userBusinessLogic;
122 private NodeTemplateOperation nodeTemplateOperation;
124 private IGraphLockOperation graphLockOperation;
126 JanusGraphDao janusGraphDao;
128 private IInterfaceLifecycleOperation interfaceLifecycleOperation;
130 private ResponseFormat responseFormat;
134 private ToscaExportHandler toscaExportHandler;
136 private CsarUtils csarUtils;
138 private LifecycleBusinessLogic lifecycleBusinessLogic;
140 private ArtifactsResolver artifactsResolver;
142 public static final Resource resource = Mockito.mock(Resource.class);
143 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
146 private static List<ArtifactType> getAllTypes() {
147 List<ArtifactType> artifactTypes = new ArrayList<>();
148 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
149 for (String artifactType : artifactTypesList) {
150 ArtifactType artifactT = new ArtifactType();
151 artifactT.setName(artifactType);
152 artifactTypes.add(artifactT);
154 return artifactTypes;
158 public void initMocks() {
159 // MockitoAnnotations.initMocks(this);
160 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
162 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
163 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either.right(StorageOperationStatus.NOT_FOUND);
164 Either<User, ActionStatus> getUserResult = Either.left(USER);
166 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
168 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
172 public void testValidJson() {
173 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
175 String jsonArtifact = "";
177 ObjectMapper mapper = new ObjectMapper();
178 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
179 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
180 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
183 jsonArtifact = mapper.writeValueAsString(ad);
184 } catch (IOException e) {
185 // TODO Auto-generated catch block
189 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class);
190 assertThat(afterConvert).isEqualTo(ad);
193 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
194 ArtifactDefinition ad = new ArtifactDefinition();
195 ad.setArtifactName(artifactName);
196 ad.setArtifactLabel("label1");
197 ad.setDescription("description");
198 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
199 ad.setArtifactGroupType(groupTypeEnum);
200 ad.setCreationDate(System.currentTimeMillis());
201 ad.setMandatory(false);
207 public void testInvalidStringGroupType() {
208 ArtifactDefinition ad = new ArtifactDefinition();
209 ad.setArtifactName("artifact1");
210 ad.setCreationDate(System.currentTimeMillis());
211 ad.setMandatory(false);
214 JsonElement jsonArtifact = gson.toJsonTree(ad);
215 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
217 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
218 assertThat(afterConvert).isNull();
222 public void testInvalidNumberGroupType() {
223 ArtifactDefinition ad = new ArtifactDefinition();
224 ad.setArtifactName("artifact1");
225 ad.setCreationDate(System.currentTimeMillis());
226 ad.setMandatory(false);
229 JsonElement jsonArtifact = gson.toJsonTree(ad);
230 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
232 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
233 assertThat(afterConvert).isNull();
237 public void testInvalidGroupTypeWithSpace() {
238 ArtifactDefinition ad = new ArtifactDefinition();
239 ad.setArtifactName("artifact1");
240 ad.setCreationDate(System.currentTimeMillis());
241 ad.setMandatory(false);
244 JsonElement jsonArtifact = gson.toJsonTree(ad);
245 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
247 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
248 assertThat(afterConvert).isNull();
252 public void testInvalidTimeoutWithSpace() {
253 ArtifactDefinition ad = new ArtifactDefinition();
254 ad.setArtifactName("artifact1");
255 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
256 ad.setCreationDate(System.currentTimeMillis());
257 ad.setMandatory(false);
259 JsonElement jsonArtifact = gson.toJsonTree(ad);
260 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
262 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
263 assertThat(afterConvert).isNull();
267 public void validateArtifactNameUniqueness_Unique() {
269 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
270 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
271 ArtifactGroupTypeEnum.INFORMATIONAL);
272 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
273 ArtifactGroupTypeEnum.DEPLOYMENT);
275 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
276 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
277 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
279 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
280 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
282 Resource parent = new Resource();
283 parent.setUniqueId("uniqueId");
285 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
286 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
290 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
292 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
293 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
294 ArtifactGroupTypeEnum.INFORMATIONAL);
295 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
296 ArtifactGroupTypeEnum.DEPLOYMENT);
298 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
299 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
300 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
302 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
303 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
306 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
307 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
308 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
309 .thenReturn(allInterfacesOfResource);
311 Resource parent = new Resource();
312 parent.setUniqueId("uniqueId");
314 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
315 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
319 public void validateArtifactNameUniqueness_UniqueInterface() {
321 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
322 artifactInfo.setArtifactLabel("uniqueLabel");
323 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
324 ArtifactGroupTypeEnum.INFORMATIONAL);
325 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
326 ArtifactGroupTypeEnum.DEPLOYMENT);
328 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
329 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
330 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
332 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
333 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
336 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
337 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
339 Resource parent = new Resource();
340 parent.setUniqueId("uniqueId");
342 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
343 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
347 public void validateArtifactNameUniqueness_updateName() {
348 //artifacts with the same name have the same label
349 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
350 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
351 ArtifactGroupTypeEnum.INFORMATIONAL);
352 informationArtifactDefinition1.setArtifactLabel("label2");
353 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
354 ArtifactGroupTypeEnum.DEPLOYMENT);
356 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
357 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
358 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
359 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
361 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
362 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
364 Resource parent = new Resource();
365 parent.setUniqueId("uniqueId");
367 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
368 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
372 public void validateArtifactNameUniqueness_UniqueInGroupType() {
374 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
375 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
376 ArtifactGroupTypeEnum.INFORMATIONAL);
377 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
378 ArtifactGroupTypeEnum.DEPLOYMENT);
380 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
381 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
382 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
384 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
385 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
387 Resource parent = new Resource();
388 parent.setUniqueId("uniqueId");
390 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
391 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
395 public void validateArtifactNameUniqueness_NonUnique() {
397 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
398 artifactInfo.setArtifactLabel("artifactLabel");
399 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
400 ArtifactGroupTypeEnum.INFORMATIONAL);
401 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
402 ArtifactGroupTypeEnum.DEPLOYMENT);
404 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
405 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
406 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
408 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
409 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
411 Resource parent = new Resource();
412 parent.setUniqueId("uniqueId");
414 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
415 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
419 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
421 InterfaceDefinition id1 = new InterfaceDefinition();
422 Map<String, Operation> operationMap = new HashMap<>();
423 Operation operation1 = new Operation();
424 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
425 dataImplementation.setArtifactName(artifactName);
426 operation1.setImplementation(dataImplementation);
427 operationMap.put("operation1", operation1);
428 id1.setOperationsMap(operationMap);
429 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
430 interfaceDefMap.put("id1",id1);
431 return interfaceDefMap;
435 public void testValidMibAritactsConfiguration() {
436 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
437 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
438 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
439 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
440 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
441 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
442 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
443 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
447 public void testDownloadServiceArtifactByNames() {
448 Service service = new Service();
449 String serviceName = "myService";
450 String serviceVersion = "1.0";
451 String serviceId = "serviceId";
452 service.setName(serviceName);
453 service.setVersion(serviceVersion);
454 service.setUniqueId(serviceId);
456 String artifactName = "service-Myservice-template.yml";
457 String artifactLabel = "assettoscatemplate";
458 String esArtifactId = "123123dfgdfgd0";
459 byte[] payload = "some payload".getBytes();
460 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
461 toscaTemplateArtifact.setArtifactName(artifactName);
462 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
463 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
464 toscaTemplateArtifact.setEsId(esArtifactId);
465 toscaTemplateArtifact.setPayload(payload);
467 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
468 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
469 service.setToscaArtifacts(toscaArtifacts);
471 ESArtifactData esArtifactData =new ESArtifactData(esArtifactId);
472 esArtifactData.setDataAsArray(payload);
473 Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
474 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
475 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
476 serviceList.add(service);
477 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
478 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
479 Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes =
480 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
481 assertThat(downloadServiceArtifactByNamesRes.isLeft()).isTrue();
482 assertThat(downloadServiceArtifactByNamesRes.left().value() !=null &&
483 downloadServiceArtifactByNamesRes.left().value().length == payload.length).isTrue();
487 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
488 ArtifactDefinition heatArtifact = new ArtifactBuilder()
489 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
490 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
493 Resource component = new Resource();
494 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
495 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
496 .thenReturn(Either.left(new ArtifactDefinition()));
497 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
498 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
499 assertThat(heatEnvPlaceHolder.left().value().getListHeatParameters()).isNull();
503 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
504 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
505 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
506 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
507 ArtifactDefinition heatArtifact = new ArtifactBuilder()
508 .addHeatParam(heatParam1)
509 .addHeatParam(heatParam2)
510 .addHeatParam(heatParam3)
513 Resource component = new Resource();
515 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
517 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
519 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
520 ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value();
521 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
522 assertThat(listHeatParameters.size()).isEqualTo(3);
523 verifyHeatParam(listHeatParameters.get(0), heatParam1);
524 verifyHeatParam(listHeatParameters.get(1), heatParam2);
525 verifyHeatParam(listHeatParameters.get(2), heatParam3);
529 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
530 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
531 artifactDefinition.setArtifactName(ARTIFACT_NAME);
532 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
533 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
534 artifactDefinition.setEsId(ES_ARTIFACT_ID);
535 artifactDefinition.setPayload(PAYLOAD);
536 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
538 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
539 //TODO Remove if passes
540 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
541 , any(String.class))).thenReturn(Either.left(artifactDefinition));
542 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
543 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
544 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
545 USER, INSTANCE_ID, true, true);
548 private ArtifactsBusinessLogic getArtifactsBusinessLogic() {
549 ArtifactsBusinessLogic artifactsBusinessLogic = new ArtifactsBusinessLogic(artifactCassandraDao,
550 toscaExportHandler, csarUtils, lifecycleBusinessLogic,
551 userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation,
552 groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);
553 artifactsBusinessLogic.setGraphLockOperation(graphLockOperation);
554 artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
555 return artifactsBusinessLogic;
559 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
560 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
561 artifactDefinition.setArtifactName(ARTIFACT_NAME);
562 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
563 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
564 artifactDefinition.setEsId(ES_ARTIFACT_ID);
565 artifactDefinition.setPayload(PAYLOAD);
566 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
568 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
569 //TODO Remove if passes
570 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
571 , any(String.class))).thenReturn(Either.left(artifactDefinition));
572 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
573 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
574 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
575 USER, INSTANCE_ID, true, false);
576 verify(janusGraphDao, times(1)).commit();
580 public void testDeleteComponent_ArtifactNotFound(){
581 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result;
582 Resource resource = new Resource();
583 String uniqueId = "uniqueId";
584 resource.setUniqueId(uniqueId);
585 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
586 ArtifactDefinition artifact = new ArtifactDefinition();
587 artifact.setArtifactName("artifactName");
588 artifact.setEsId("esId");
589 artifact.setArtifactUUID("artifactUUID");
590 artifact.setArtifactType("YANG");
591 artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
592 artifact.setDescription("description");
593 artifact.setArtifactLabel("artifactLabel");
594 toscaArtifacts.put("artifactId", artifact);
595 resource.setArtifacts(toscaArtifacts);
596 resource.setToscaArtifacts(toscaArtifacts);
597 when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
598 .thenReturn(StorageOperationStatus.OK);
599 when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
600 .thenReturn(StorageOperationStatus.OK);
601 when(toscaOperationFacade.getToscaElement(uniqueId)).thenReturn(Either.left(resource));
602 when(componentsUtils.getResponseFormatByArtifactId(ActionStatus.ARTIFACT_NOT_FOUND, "artifactId")).
603 thenReturn(responseFormat);
604 result = artifactBL.handleDelete("parentId", "artifactId", user, AuditingActionEnum.ARTIFACT_DELETE,
605 ComponentTypeEnum.RESOURCE, resource,
607 assertThat(result.isRight());
610 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
611 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
612 assertThat(heatEnvParam.getCurrentValue()).isNull();