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.TitanDao;
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.jsontitan.operations.ArtifactsOperations;
52 import org.openecomp.sdc.be.model.jsontitan.operations.NodeTemplateOperation;
53 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
54 import org.openecomp.sdc.be.model.operations.api.*;
55 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
56 import org.openecomp.sdc.be.resources.data.ESArtifactData;
57 import org.openecomp.sdc.be.servlets.RepresentationUtils;
58 import org.openecomp.sdc.be.user.UserBusinessLogic;
59 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
60 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
61 import org.openecomp.sdc.common.api.ConfigurationSource;
62 import org.openecomp.sdc.common.impl.ExternalConfiguration;
63 import org.openecomp.sdc.common.impl.FSConfigurationSource;
64 import org.openecomp.sdc.exception.ResponseFormat;
66 import java.io.IOException;
69 import static org.assertj.core.api.Java6Assertions.assertThat;
70 import static org.mockito.ArgumentMatchers.any;
71 import static org.mockito.ArgumentMatchers.anyBoolean;
72 import static org.mockito.ArgumentMatchers.anyString;
73 import static org.mockito.ArgumentMatchers.eq;
74 import static org.mockito.Mockito.*;
75 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
76 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
78 public class ArtifactBusinessLogicTest {
80 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
81 private final static String RESOURCE_INSTANCE_NAME = "Service-111";
82 private final static String INSTANCE_ID = "S-123-444-ghghghg";
84 private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
85 private final static String ARTIFACT_LABEL = "assettoscatemplate";
86 private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
87 private final static byte[] PAYLOAD = "some payload".getBytes();
89 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
90 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
93 private static ArtifactsBusinessLogic artifactBL;
95 private ArtifactOperation artifactOperation;
97 public ComponentsUtils componentsUtils;
99 private IInterfaceLifecycleOperation lifecycleOperation;
101 private IUserAdminOperation userOperation;
103 private IElementOperation elementOperation;
105 private ArtifactCassandraDao artifactCassandraDao;
107 public ToscaOperationFacade toscaOperationFacade;
109 private UserBusinessLogic userBusinessLogic;
111 private NodeTemplateOperation nodeTemplateOperation;
113 private ArtifactsOperations artifactsOperations;
115 private IGraphLockOperation graphLockOperation;
119 private IInterfaceLifecycleOperation interfaceLifecycleOperation;
121 // public static final InformationDeployedArtifactsBusinessLogic
122 // informationDeployedArtifactsBusinessLogic =
123 // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
125 public static final Resource resource = Mockito.mock(Resource.class);
126 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
129 private static List<ArtifactType> getAllTypes() {
130 List<ArtifactType> artifactTypes = new ArrayList<>();
131 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
132 for (String artifactType : artifactTypesList) {
133 ArtifactType artifactT = new ArtifactType();
134 artifactT.setName(artifactType);
135 artifactTypes.add(artifactT);
137 return artifactTypes;
141 public void initMocks() {
142 MockitoAnnotations.initMocks(this);
143 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
145 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
146 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
147 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean())).thenReturn(NotFoundResult2);
149 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either.right(StorageOperationStatus.NOT_FOUND);
150 when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(notFoundInterfaces);
152 Either<User, ActionStatus> getUserResult = Either.left(USER);
154 when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult);
156 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
157 when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
159 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
163 public void testValidJson() {
164 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
166 String jsonArtifact = "";
168 ObjectMapper mapper = new ObjectMapper();
169 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
170 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
171 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
174 jsonArtifact = mapper.writeValueAsString(ad);
175 } catch (IOException e) {
176 // TODO Auto-generated catch block
180 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class);
181 assertThat(afterConvert).isEqualTo(ad);
184 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
185 ArtifactDefinition ad = new ArtifactDefinition();
186 ad.setArtifactName(artifactName);
187 ad.setArtifactLabel("label1");
188 ad.setDescription("description");
189 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
190 ad.setArtifactGroupType(groupTypeEnum);
191 ad.setCreationDate(System.currentTimeMillis());
192 ad.setMandatory(false);
198 public void testInvalidStringGroupType() {
199 ArtifactDefinition ad = new ArtifactDefinition();
200 ad.setArtifactName("artifact1");
201 ad.setCreationDate(System.currentTimeMillis());
202 ad.setMandatory(false);
205 JsonElement jsonArtifact = gson.toJsonTree(ad);
206 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
208 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
209 assertThat(afterConvert).isNull();
213 public void testInvalidNumberGroupType() {
214 ArtifactDefinition ad = new ArtifactDefinition();
215 ad.setArtifactName("artifact1");
216 ad.setCreationDate(System.currentTimeMillis());
217 ad.setMandatory(false);
220 JsonElement jsonArtifact = gson.toJsonTree(ad);
221 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
223 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
224 assertThat(afterConvert).isNull();
228 public void testInvalidGroupTypeWithSpace() {
229 ArtifactDefinition ad = new ArtifactDefinition();
230 ad.setArtifactName("artifact1");
231 ad.setCreationDate(System.currentTimeMillis());
232 ad.setMandatory(false);
235 JsonElement jsonArtifact = gson.toJsonTree(ad);
236 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
238 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
239 assertThat(afterConvert).isNull();
243 public void testInvalidTimeoutWithSpace() {
244 ArtifactDefinition ad = new ArtifactDefinition();
245 ad.setArtifactName("artifact1");
246 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
247 ad.setCreationDate(System.currentTimeMillis());
248 ad.setMandatory(false);
250 JsonElement jsonArtifact = gson.toJsonTree(ad);
251 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
253 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class);
254 assertThat(afterConvert).isNull();
258 public void validateArtifactNameUniqueness_Unique() {
260 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
261 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
262 ArtifactGroupTypeEnum.INFORMATIONAL);
263 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
264 ArtifactGroupTypeEnum.DEPLOYMENT);
266 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
267 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
268 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
270 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
271 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
273 Resource parent = new Resource();
274 parent.setUniqueId("uniqueId");
276 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
277 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
281 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
283 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
284 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
285 ArtifactGroupTypeEnum.INFORMATIONAL);
286 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
287 ArtifactGroupTypeEnum.DEPLOYMENT);
289 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
290 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
291 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
293 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
294 when(artifactsOperations.getArtifacts(anyString())).thenReturn(artifacts);
297 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
298 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
299 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
300 .thenReturn(allInterfacesOfResource);
302 Resource parent = new Resource();
303 parent.setUniqueId("uniqueId");
305 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
306 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
310 public void validateArtifactNameUniqueness_UniqueInterface() {
312 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
313 artifactInfo.setArtifactLabel("uniqueLabel");
314 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
315 ArtifactGroupTypeEnum.INFORMATIONAL);
316 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
317 ArtifactGroupTypeEnum.DEPLOYMENT);
319 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
320 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
321 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
323 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
324 when(artifactsOperations.getArtifacts(anyString())).thenReturn(artifacts);
327 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
328 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
329 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
330 .thenReturn(allInterfacesOfResource);
332 Resource parent = new Resource();
333 parent.setUniqueId("uniqueId");
335 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
336 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
340 public void validateArtifactNameUniqueness_updateName() {
342 //artifacts with the same name have the same label
343 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
344 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
345 ArtifactGroupTypeEnum.INFORMATIONAL);
346 informationArtifactDefinition1.setArtifactLabel("label2");
347 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
348 ArtifactGroupTypeEnum.DEPLOYMENT);
350 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
351 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
352 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
353 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
355 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
356 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
358 Resource parent = new Resource();
359 parent.setUniqueId("uniqueId");
361 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
362 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
366 public void validateArtifactNameUniqueness_UniqueInGroupType() {
368 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
369 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
370 ArtifactGroupTypeEnum.INFORMATIONAL);
371 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
372 ArtifactGroupTypeEnum.DEPLOYMENT);
374 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
375 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
376 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
378 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
379 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
381 Resource parent = new Resource();
382 parent.setUniqueId("uniqueId");
384 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
385 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
389 public void validateArtifactNameUniqueness_NonUnique() {
391 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
392 artifactInfo.setArtifactLabel("artifactLabel");
393 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
394 ArtifactGroupTypeEnum.INFORMATIONAL);
395 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
396 ArtifactGroupTypeEnum.DEPLOYMENT);
398 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
399 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
400 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
402 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
403 when(artifactsOperations.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
405 Resource parent = new Resource();
406 parent.setUniqueId("uniqueId");
408 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
409 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
413 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
415 InterfaceDefinition id1 = new InterfaceDefinition();
416 Map<String, Operation> operationMap = new HashMap<>();
417 Operation operation1 = new Operation();
418 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
419 dataImplementation.setArtifactName(artifactName);
420 operation1.setImplementation(dataImplementation);
421 operationMap.put("operation1", operation1);
422 id1.setOperationsMap(operationMap);
423 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
424 interfaceDefMap.put("id1",id1);
425 return interfaceDefMap;
429 public void testValidMibAritactsConfiguration() {
430 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
431 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
432 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
433 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
434 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
435 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
436 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
437 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).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 ESArtifactData esArtifactData =new ESArtifactData(esArtifactId);
466 esArtifactData.setDataAsArray(payload);
467 Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
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 Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes =
474 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
475 assertThat(downloadServiceArtifactByNamesRes.isLeft()).isTrue();
476 assertThat(downloadServiceArtifactByNamesRes.left().value() !=null &&
477 downloadServiceArtifactByNamesRes.left().value().length == payload.length).isTrue();
481 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
482 ArtifactDefinition heatArtifact = new ArtifactBuilder()
483 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
484 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
487 Resource component = new Resource();
488 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
489 when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
490 .thenReturn(Either.left(new ArtifactDefinition()));
491 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
492 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
493 assertThat(heatEnvPlaceHolder.left().value().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();
509 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
510 when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
511 .thenReturn(Either.left(new ArtifactDefinition()));
513 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
515 assertThat(heatEnvPlaceHolder.isLeft()).isTrue();
516 ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value();
517 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
518 assertThat(listHeatParameters.size()).isEqualTo(3);
519 verifyHeatParam(listHeatParameters.get(0), heatParam1);
520 verifyHeatParam(listHeatParameters.get(1), heatParam2);
521 verifyHeatParam(listHeatParameters.get(2), heatParam3);
525 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
526 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
527 artifactDefinition.setArtifactName(ARTIFACT_NAME);
528 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
529 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
530 artifactDefinition.setEsId(ES_ARTIFACT_ID);
531 artifactDefinition.setPayload(PAYLOAD);
532 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
534 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
535 //TODO Remove if passes
536 when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
537 , any(String.class))).thenReturn(Either.left(artifactDefinition));
538 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
539 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
540 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
541 USER, INSTANCE_ID, true, true);
545 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
546 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
547 artifactDefinition.setArtifactName(ARTIFACT_NAME);
548 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
549 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
550 artifactDefinition.setEsId(ES_ARTIFACT_ID);
551 artifactDefinition.setPayload(PAYLOAD);
552 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
554 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
555 //TODO Remove if passes
556 when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
557 , any(String.class))).thenReturn(Either.left(artifactDefinition));
558 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
559 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
560 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
561 USER, INSTANCE_ID, true, false);
562 verify(titanDao, times(1)).commit();
565 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
566 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
567 assertThat(heatEnvParam.getCurrentValue()).isNull();