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.mockito.InjectMocks;
34 import org.mockito.Mock;
35 import org.mockito.Mockito;
36 import org.mockito.MockitoAnnotations;
37 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
38 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
39 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
40 import org.openecomp.sdc.be.config.ConfigurationManager;
41 import org.openecomp.sdc.be.dao.api.ActionStatus;
42 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
43 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
44 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
45 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
46 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
47 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
48 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
49 import org.openecomp.sdc.be.impl.ComponentsUtils;
50 import org.openecomp.sdc.be.model.*;
51 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
52 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
53 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
54 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
55 import org.openecomp.sdc.be.model.operations.api.*;
56 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
57 import org.openecomp.sdc.be.resources.data.ESArtifactData;
58 import org.openecomp.sdc.be.servlets.RepresentationUtils;
59 import org.openecomp.sdc.be.user.UserBusinessLogic;
60 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
61 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
62 import org.openecomp.sdc.common.api.ConfigurationSource;
63 import org.openecomp.sdc.common.impl.ExternalConfiguration;
64 import org.openecomp.sdc.common.impl.FSConfigurationSource;
65 import org.openecomp.sdc.exception.ResponseFormat;
67 import java.io.IOException;
70 import static org.assertj.core.api.Java6Assertions.assertThat;
71 import static org.mockito.ArgumentMatchers.any;
72 import static org.mockito.ArgumentMatchers.anyBoolean;
73 import static org.mockito.ArgumentMatchers.anyString;
74 import static org.mockito.ArgumentMatchers.eq;
75 import static org.mockito.Mockito.*;
76 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
77 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
79 public class ArtifactBusinessLogicTest {
81 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
82 private final static String RESOURCE_INSTANCE_NAME = "Service-111";
83 private final static String INSTANCE_ID = "S-123-444-ghghghg";
85 private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
86 private final static String ARTIFACT_LABEL = "assettoscatemplate";
87 private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
88 private final static byte[] PAYLOAD = "some payload".getBytes();
90 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
91 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
94 private static ArtifactsBusinessLogic artifactBL;
96 private ArtifactOperation artifactOperation;
98 public ComponentsUtils componentsUtils;
100 private IInterfaceLifecycleOperation lifecycleOperation;
102 private IUserAdminOperation userOperation;
104 private IElementOperation elementOperation;
106 private ArtifactCassandraDao artifactCassandraDao;
108 public ToscaOperationFacade toscaOperationFacade;
110 private UserBusinessLogic userBusinessLogic;
112 private NodeTemplateOperation nodeTemplateOperation;
114 private ArtifactsOperations artifactsOperations;
116 private IGraphLockOperation graphLockOperation;
118 JanusGraphDao janusGraphDao;
120 private IInterfaceLifecycleOperation interfaceLifecycleOperation;
122 private ResponseFormat responseFormat;
126 public static final Resource resource = Mockito.mock(Resource.class);
127 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
130 private static List<ArtifactType> getAllTypes() {
131 List<ArtifactType> artifactTypes = new ArrayList<>();
132 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
133 for (String artifactType : artifactTypesList) {
134 ArtifactType artifactT = new ArtifactType();
135 artifactT.setName(artifactType);
136 artifactTypes.add(artifactT);
138 return artifactTypes;
142 public void initMocks() {
143 MockitoAnnotations.initMocks(this);
144 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
146 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
147 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
148 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
150 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either.right(StorageOperationStatus.NOT_FOUND);
151 when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(notFoundInterfaces);
153 Either<User, ActionStatus> getUserResult = Either.left(USER);
155 when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult);
157 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
158 when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
160 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
164 public void testValidJson() {
165 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
167 String jsonArtifact = "";
169 ObjectMapper mapper = new ObjectMapper();
170 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
171 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
172 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
175 jsonArtifact = mapper.writeValueAsString(ad);
176 } catch (IOException e) {
177 // TODO Auto-generated catch block
181 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class);
182 assertThat(afterConvert).isEqualTo(ad);
185 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
186 ArtifactDefinition ad = new ArtifactDefinition();
187 ad.setArtifactName(artifactName);
188 ad.setArtifactLabel("label1");
189 ad.setDescription("description");
190 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
191 ad.setArtifactGroupType(groupTypeEnum);
192 ad.setCreationDate(System.currentTimeMillis());
193 ad.setMandatory(false);
199 public void testInvalidStringGroupType() {
200 ArtifactDefinition ad = new ArtifactDefinition();
201 ad.setArtifactName("artifact1");
202 ad.setCreationDate(System.currentTimeMillis());
203 ad.setMandatory(false);
206 JsonElement jsonArtifact = gson.toJsonTree(ad);
207 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
209 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
210 assertThat(afterConvert).isNull();
214 public void testInvalidNumberGroupType() {
215 ArtifactDefinition ad = new ArtifactDefinition();
216 ad.setArtifactName("artifact1");
217 ad.setCreationDate(System.currentTimeMillis());
218 ad.setMandatory(false);
221 JsonElement jsonArtifact = gson.toJsonTree(ad);
222 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
224 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
225 assertThat(afterConvert).isNull();
229 public void testInvalidGroupTypeWithSpace() {
230 ArtifactDefinition ad = new ArtifactDefinition();
231 ad.setArtifactName("artifact1");
232 ad.setCreationDate(System.currentTimeMillis());
233 ad.setMandatory(false);
236 JsonElement jsonArtifact = gson.toJsonTree(ad);
237 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
239 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
240 assertThat(afterConvert).isNull();
244 public void testInvalidTimeoutWithSpace() {
245 ArtifactDefinition ad = new ArtifactDefinition();
246 ad.setArtifactName("artifact1");
247 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
248 ad.setCreationDate(System.currentTimeMillis());
249 ad.setMandatory(false);
251 JsonElement jsonArtifact = gson.toJsonTree(ad);
252 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
254 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
255 assertThat(afterConvert).isNull();
259 public void validateArtifactNameUniqueness_Unique() {
261 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
262 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
263 ArtifactGroupTypeEnum.INFORMATIONAL);
264 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
265 ArtifactGroupTypeEnum.DEPLOYMENT);
267 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
268 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
269 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
271 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
272 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
274 Resource parent = new Resource();
275 parent.setUniqueId("uniqueId");
277 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
278 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
282 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
284 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
285 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
286 ArtifactGroupTypeEnum.INFORMATIONAL);
287 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
288 ArtifactGroupTypeEnum.DEPLOYMENT);
290 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
291 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
292 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
294 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
295 when(artifactsOperations.getArtifacts(anyString())).thenReturn(artifacts);
298 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
299 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
300 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
301 .thenReturn(allInterfacesOfResource);
303 Resource parent = new Resource();
304 parent.setUniqueId("uniqueId");
306 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
307 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
311 public void validateArtifactNameUniqueness_UniqueInterface() {
313 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
314 artifactInfo.setArtifactLabel("uniqueLabel");
315 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
316 ArtifactGroupTypeEnum.INFORMATIONAL);
317 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
318 ArtifactGroupTypeEnum.DEPLOYMENT);
320 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
321 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
322 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
324 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
325 when(artifactsOperations.getArtifacts(anyString())).thenReturn(artifacts);
328 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
329 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
330 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
331 .thenReturn(allInterfacesOfResource);
333 Resource parent = new Resource();
334 parent.setUniqueId("uniqueId");
336 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
337 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
341 public void validateArtifactNameUniqueness_updateName() {
343 //artifacts with the same name have the same label
344 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
345 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
346 ArtifactGroupTypeEnum.INFORMATIONAL);
347 informationArtifactDefinition1.setArtifactLabel("label2");
348 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
349 ArtifactGroupTypeEnum.DEPLOYMENT);
351 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
352 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
353 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
354 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
356 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
357 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
359 Resource parent = new Resource();
360 parent.setUniqueId("uniqueId");
362 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
363 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
367 public void validateArtifactNameUniqueness_UniqueInGroupType() {
369 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
370 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
371 ArtifactGroupTypeEnum.INFORMATIONAL);
372 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
373 ArtifactGroupTypeEnum.DEPLOYMENT);
375 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
376 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
377 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
379 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
380 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
382 Resource parent = new Resource();
383 parent.setUniqueId("uniqueId");
385 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
386 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
390 public void validateArtifactNameUniqueness_NonUnique() {
392 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
393 artifactInfo.setArtifactLabel("artifactLabel");
394 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
395 ArtifactGroupTypeEnum.INFORMATIONAL);
396 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
397 ArtifactGroupTypeEnum.DEPLOYMENT);
399 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
400 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
401 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
403 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
404 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
406 Resource parent = new Resource();
407 parent.setUniqueId("uniqueId");
409 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
410 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
414 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
416 InterfaceDefinition id1 = new InterfaceDefinition();
417 Map<String, Operation> operationMap = new HashMap<>();
418 Operation operation1 = new Operation();
419 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
420 dataImplementation.setArtifactName(artifactName);
421 operation1.setImplementation(dataImplementation);
422 operationMap.put("operation1", operation1);
423 id1.setOperationsMap(operationMap);
424 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
425 interfaceDefMap.put("id1",id1);
426 return interfaceDefMap;
430 public void testValidMibAritactsConfiguration() {
431 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
432 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
433 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
434 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
435 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
436 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
437 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
438 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
442 public void testDownloadServiceArtifactByNames() {
443 Service service = new Service();
444 String serviceName = "myService";
445 String serviceVersion = "1.0";
446 String serviceId = "serviceId";
447 service.setName(serviceName);
448 service.setVersion(serviceVersion);
449 service.setUniqueId(serviceId);
451 String artifactName = "service-Myservice-template.yml";
452 String artifactLabel = "assettoscatemplate";
453 String esArtifactId = "123123dfgdfgd0";
454 byte[] payload = "some payload".getBytes();
455 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
456 toscaTemplateArtifact.setArtifactName(artifactName);
457 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
458 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
459 toscaTemplateArtifact.setEsId(esArtifactId);
460 toscaTemplateArtifact.setPayload(payload);
462 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
463 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
464 service.setToscaArtifacts(toscaArtifacts);
466 ESArtifactData esArtifactData =new ESArtifactData(esArtifactId);
467 esArtifactData.setDataAsArray(payload);
468 Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
469 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
470 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
471 serviceList.add(service);
472 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
473 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
474 Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes =
475 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
476 assertThat(downloadServiceArtifactByNamesRes.isLeft()).isTrue();
477 assertThat(downloadServiceArtifactByNamesRes.left().value() !=null &&
478 downloadServiceArtifactByNamesRes.left().value().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(Either.left(USER));
490 when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
491 .thenReturn(Either.left(new ArtifactDefinition()));
492 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
493 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
494 assertThat(heatEnvPlaceHolder.left().value().getListHeatParameters()).isNull();
498 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
499 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
500 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
501 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
502 ArtifactDefinition heatArtifact = new ArtifactBuilder()
503 .addHeatParam(heatParam1)
504 .addHeatParam(heatParam2)
505 .addHeatParam(heatParam3)
508 Resource component = new Resource();
510 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
511 when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
512 .thenReturn(Either.left(new ArtifactDefinition()));
514 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
516 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
517 ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value();
518 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
519 assertThat(listHeatParameters.size()).isEqualTo(3);
520 verifyHeatParam(listHeatParameters.get(0), heatParam1);
521 verifyHeatParam(listHeatParameters.get(1), heatParam2);
522 verifyHeatParam(listHeatParameters.get(2), heatParam3);
526 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
527 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
528 artifactDefinition.setArtifactName(ARTIFACT_NAME);
529 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
530 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
531 artifactDefinition.setEsId(ES_ARTIFACT_ID);
532 artifactDefinition.setPayload(PAYLOAD);
533 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
535 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
536 //TODO Remove if passes
537 when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
538 , any(String.class))).thenReturn(Either.left(artifactDefinition));
539 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
540 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
541 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
542 USER, INSTANCE_ID, true, true);
546 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
547 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
548 artifactDefinition.setArtifactName(ARTIFACT_NAME);
549 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
550 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
551 artifactDefinition.setEsId(ES_ARTIFACT_ID);
552 artifactDefinition.setPayload(PAYLOAD);
553 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
555 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
556 //TODO Remove if passes
557 when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
558 , any(String.class))).thenReturn(Either.left(artifactDefinition));
559 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
560 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
561 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
562 USER, INSTANCE_ID, true, false);
563 verify(janusGraphDao, times(1)).commit();
567 public void testDeleteComponent_ArtifactNotFound(){
568 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result;
569 Resource resource = new Resource();
570 String uniqueId = "uniqueId";
571 resource.setUniqueId(uniqueId);
572 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
573 ArtifactDefinition artifact = new ArtifactDefinition();
574 artifact.setArtifactName("artifactName");
575 artifact.setEsId("esId");
576 artifact.setArtifactUUID("artifactUUID");
577 artifact.setArtifactType("YANG");
578 artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
579 artifact.setDescription("description");
580 artifact.setArtifactLabel("artifactLabel");
581 toscaArtifacts.put("artifactId", artifact);
582 resource.setArtifacts(toscaArtifacts);
583 resource.setToscaArtifacts(toscaArtifacts);
584 when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
585 .thenReturn(StorageOperationStatus.OK);
586 when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
587 .thenReturn(StorageOperationStatus.OK);
588 when(toscaOperationFacade.getToscaElement(uniqueId)).thenReturn(Either.left(resource));
589 when(componentsUtils.getResponseFormatByArtifactId(ActionStatus.ARTIFACT_NOT_FOUND, "artifactId")).
590 thenReturn(responseFormat);
591 result = artifactBL.handleDelete("parentId", "artifactId", user, AuditingActionEnum.ARTIFACT_DELETE,
592 ComponentTypeEnum.RESOURCE, resource,
594 assertThat(result.isRight());
597 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
598 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
599 assertThat(heatEnvParam.getCurrentValue()).isNull();