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.junit.MockitoJUnitRunner;
38 import org.openecomp.sdc.be.components.ArtifactsResolver;
39 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
40 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
41 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
42 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
43 import org.openecomp.sdc.be.config.ConfigurationManager;
44 import org.openecomp.sdc.be.dao.api.ActionStatus;
45 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
46 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
47 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
48 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
49 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
50 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
51 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
52 import org.openecomp.sdc.be.impl.ComponentsUtils;
53 import org.openecomp.sdc.be.model.ArtifactDefinition;
54 import org.openecomp.sdc.be.model.ArtifactType;
55 import org.openecomp.sdc.be.model.HeatParameterDefinition;
56 import org.openecomp.sdc.be.model.InterfaceDefinition;
57 import org.openecomp.sdc.be.model.Operation;
58 import org.openecomp.sdc.be.model.Resource;
59 import org.openecomp.sdc.be.model.Service;
60 import org.openecomp.sdc.be.model.User;
61 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
62 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
63 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
64 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
65 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
66 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
67 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
68 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
69 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
70 import org.openecomp.sdc.be.servlets.RepresentationUtils;
71 import org.openecomp.sdc.be.tosca.CsarUtils;
72 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
73 import org.openecomp.sdc.be.user.UserBusinessLogic;
74 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
75 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
76 import org.openecomp.sdc.common.api.ConfigurationSource;
77 import org.openecomp.sdc.common.impl.ExternalConfiguration;
78 import org.openecomp.sdc.common.impl.FSConfigurationSource;
79 import org.openecomp.sdc.exception.ResponseFormat;
81 import java.io.IOException;
82 import java.util.ArrayList;
83 import java.util.Collections;
84 import java.util.HashMap;
85 import java.util.List;
88 import static org.assertj.core.api.Java6Assertions.assertThat;
89 import static org.mockito.ArgumentMatchers.any;
90 import static org.mockito.ArgumentMatchers.anyBoolean;
91 import static org.mockito.ArgumentMatchers.anyString;
92 import static org.mockito.ArgumentMatchers.eq;
93 import static org.mockito.Mockito.times;
94 import static org.mockito.Mockito.verify;
95 import static org.mockito.Mockito.when;
96 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
97 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
99 @RunWith(MockitoJUnitRunner.class)
100 public class ArtifactBusinessLogicTest extends BaseBusinessLogicMock{
102 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
103 private final static String RESOURCE_INSTANCE_NAME = "Service-111";
104 private final static String INSTANCE_ID = "S-123-444-ghghghg";
106 private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
107 private final static String ARTIFACT_LABEL = "assettoscatemplate";
108 private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
109 private final static byte[] PAYLOAD = "some payload".getBytes();
111 static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
112 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
115 private ArtifactsBusinessLogic artifactBL;
117 private UserBusinessLogic userBusinessLogic;
119 private ArtifactOperation artifactOperation;
121 public ComponentsUtils componentsUtils;
123 private UserAdminOperation userOperation;
125 private ArtifactCassandraDao artifactCassandraDao;
127 public ToscaOperationFacade toscaOperationFacade;
129 private NodeTemplateOperation nodeTemplateOperation;
131 private IGraphLockOperation graphLockOperation;
133 JanusGraphDao janusGraphDao;
135 private IInterfaceLifecycleOperation interfaceLifecycleOperation;
137 // public static final InformationDeployedArtifactsBusinessLogic
138 // informationDeployedArtifactsBusinessLogic =
139 // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
141 private ToscaExportHandler toscaExportHandler;
143 private CsarUtils csarUtils;
145 private LifecycleBusinessLogic lifecycleBusinessLogic;
147 private ArtifactsResolver artifactsResolver;
149 public static final Resource resource = Mockito.mock(Resource.class);
150 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
153 private static List<ArtifactType> getAllTypes() {
154 List<ArtifactType> artifactTypes = new ArrayList<>();
155 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
156 for (String artifactType : artifactTypesList) {
157 ArtifactType artifactT = new ArtifactType();
158 artifactT.setName(artifactType);
159 artifactTypes.add(artifactT);
161 return artifactTypes;
165 public void initMocks() {
166 // MockitoAnnotations.initMocks(this);
167 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
169 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
171 when(userBusinessLogic.getUser(eq("jh0003"), anyBoolean())).thenReturn(USER);
174 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
178 public void testValidJson() {
179 ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
181 String jsonArtifact = "";
183 ObjectMapper mapper = new ObjectMapper();
184 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
185 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
186 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
189 jsonArtifact = mapper.writeValueAsString(ad);
190 } catch (IOException e) {
191 // TODO Auto-generated catch block
195 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class, false);
196 assertThat(afterConvert).isEqualTo(ad);
199 private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
200 ArtifactDefinition ad = new ArtifactDefinition();
201 ad.setArtifactName(artifactName);
202 ad.setArtifactLabel("label1");
203 ad.setDescription("description");
204 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
205 ad.setArtifactGroupType(groupTypeEnum);
206 ad.setCreationDate(System.currentTimeMillis());
207 ad.setMandatory(false);
213 public void testInvalidStringGroupType() {
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", "www");
222 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
223 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
224 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
226 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
227 assertThat(afterConvert).isNull();
231 public void testInvalidNumberGroupType() {
232 ArtifactDefinition ad = new ArtifactDefinition();
233 ad.setArtifactName("artifact1");
234 ad.setCreationDate(System.currentTimeMillis());
235 ad.setMandatory(false);
238 JsonElement jsonArtifact = gson.toJsonTree(ad);
239 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
240 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
241 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
242 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
244 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
245 assertThat(afterConvert).isNull();
249 public void testInvalidGroupTypeWithSpace() {
250 ArtifactDefinition ad = new ArtifactDefinition();
251 ad.setArtifactName("artifact1");
252 ad.setCreationDate(System.currentTimeMillis());
253 ad.setMandatory(false);
256 JsonElement jsonArtifact = gson.toJsonTree(ad);
257 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
258 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
259 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
260 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
262 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
263 assertThat(afterConvert).isNull();
267 public void testInvalidTimeoutWithSpace() {
268 ArtifactDefinition ad = new ArtifactDefinition();
269 ad.setArtifactName("artifact1");
270 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
271 ad.setCreationDate(System.currentTimeMillis());
272 ad.setMandatory(false);
274 JsonElement jsonArtifact = gson.toJsonTree(ad);
275 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
276 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
277 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
278 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
280 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, true);
281 assertThat(afterConvert).isNull();
285 public void validateArtifactNameUniqueness_Unique() {
287 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
288 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
289 ArtifactGroupTypeEnum.INFORMATIONAL);
290 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
291 ArtifactGroupTypeEnum.DEPLOYMENT);
293 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
294 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
295 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
297 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
298 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
300 Resource parent = new Resource();
301 parent.setUniqueId("uniqueId");
303 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
304 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
308 public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
310 ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
311 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
312 ArtifactGroupTypeEnum.INFORMATIONAL);
313 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
314 ArtifactGroupTypeEnum.DEPLOYMENT);
316 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
317 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
318 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
320 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
321 when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
324 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
325 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
326 when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
327 .thenReturn(allInterfacesOfResource);
329 Resource parent = new Resource();
330 parent.setUniqueId("uniqueId");
332 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
333 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
337 public void validateArtifactNameUniqueness_UniqueInterface() {
339 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
340 artifactInfo.setArtifactLabel("uniqueLabel");
341 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
342 ArtifactGroupTypeEnum.INFORMATIONAL);
343 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
344 ArtifactGroupTypeEnum.DEPLOYMENT);
346 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
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.getArtifacts(anyString())).thenReturn(artifacts);
354 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
355 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
357 Resource parent = new Resource();
358 parent.setUniqueId("uniqueId");
360 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
361 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
365 public void validateArtifactNameUniqueness_updateName() {
366 //artifacts with the same name have the same label
367 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
368 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
369 ArtifactGroupTypeEnum.INFORMATIONAL);
370 informationArtifactDefinition1.setArtifactLabel("label2");
371 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
372 ArtifactGroupTypeEnum.DEPLOYMENT);
374 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
375 artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
376 artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
377 artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
379 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
380 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
382 Resource parent = new Resource();
383 parent.setUniqueId("uniqueId");
385 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
386 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
390 public void validateArtifactNameUniqueness_UniqueInGroupType() {
392 ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
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(artifactToscaOperation.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)).isTrue();
413 public void validateArtifactNameUniqueness_NonUnique() {
415 ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
416 artifactInfo.setArtifactLabel("artifactLabel");
417 ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
418 ArtifactGroupTypeEnum.INFORMATIONAL);
419 ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
420 ArtifactGroupTypeEnum.DEPLOYMENT);
422 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
423 artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
424 artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
426 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
427 when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
429 Resource parent = new Resource();
430 parent.setUniqueId("uniqueId");
432 assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
433 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
437 private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
439 InterfaceDefinition id1 = new InterfaceDefinition();
440 Map<String, Operation> operationMap = new HashMap<>();
441 Operation operation1 = new Operation();
442 ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
443 dataImplementation.setArtifactName(artifactName);
444 operation1.setImplementation(dataImplementation);
445 operationMap.put("operation1", operation1);
446 id1.setOperationsMap(operationMap);
447 Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
448 interfaceDefMap.put("id1",id1);
449 return interfaceDefMap;
453 public void testValidMibAritactsConfiguration() {
454 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
455 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
456 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
457 ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
458 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
459 assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
460 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
461 assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
465 public void testDownloadServiceArtifactByNames() {
466 Service service = new Service();
467 String serviceName = "myService";
468 String serviceVersion = "1.0";
469 String serviceId = "serviceId";
470 service.setName(serviceName);
471 service.setVersion(serviceVersion);
472 service.setUniqueId(serviceId);
474 String artifactName = "service-Myservice-template.yml";
475 String artifactLabel = "assettoscatemplate";
476 String esArtifactId = "123123dfgdfgd0";
477 byte[] payload = "some payload".getBytes();
478 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
479 toscaTemplateArtifact.setArtifactName(artifactName);
480 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
481 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
482 toscaTemplateArtifact.setEsId(esArtifactId);
483 toscaTemplateArtifact.setPayload(payload);
485 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
486 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
487 service.setToscaArtifacts(toscaArtifacts);
489 DAOArtifactData DAOArtifactData =new DAOArtifactData(esArtifactId);
490 DAOArtifactData.setDataAsArray(payload);
491 Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
492 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
493 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
494 serviceList.add(service);
495 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
496 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
497 byte[] downloadServiceArtifactByNamesRes =
498 artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
499 assertThat(downloadServiceArtifactByNamesRes !=null &&
500 downloadServiceArtifactByNamesRes.length == payload.length).isTrue();
504 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
505 ArtifactDefinition heatArtifact = new ArtifactBuilder()
506 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
507 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
510 Resource component = new Resource();
511 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
512 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
513 .thenReturn(Either.left(new ArtifactDefinition()));
514 ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
515 assertThat(heatEnvPlaceHolder.getListHeatParameters()).isNull();
519 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
520 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
521 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
522 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
523 ArtifactDefinition heatArtifact = new ArtifactBuilder()
524 .addHeatParam(heatParam1)
525 .addHeatParam(heatParam2)
526 .addHeatParam(heatParam3)
529 Resource component = new Resource();
532 ArtifactDefinition heatEnvArtifact = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
533 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
534 assertThat(listHeatParameters.size()).isEqualTo(3);
535 verifyHeatParam(listHeatParameters.get(0), heatParam1);
536 verifyHeatParam(listHeatParameters.get(1), heatParam2);
537 verifyHeatParam(listHeatParameters.get(2), heatParam3);
541 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
542 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
543 artifactDefinition.setArtifactName(ARTIFACT_NAME);
544 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
545 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
546 artifactDefinition.setEsId(ES_ARTIFACT_ID);
547 artifactDefinition.setPayload(PAYLOAD);
548 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
550 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
551 //TODO Remove if passes
552 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
553 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
554 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
555 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
556 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
557 USER, INSTANCE_ID, true, true);
560 private ArtifactsBusinessLogic getArtifactsBusinessLogic() {
561 ArtifactsBusinessLogic artifactsBusinessLogic = new ArtifactsBusinessLogic(artifactCassandraDao,
562 toscaExportHandler, csarUtils, lifecycleBusinessLogic,
563 userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation,
564 groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);
565 artifactsBusinessLogic.setGraphLockOperation(graphLockOperation);
566 artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
567 return artifactsBusinessLogic;
571 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
572 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
573 artifactDefinition.setArtifactName(ARTIFACT_NAME);
574 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
575 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
576 artifactDefinition.setEsId(ES_ARTIFACT_ID);
577 artifactDefinition.setPayload(PAYLOAD);
578 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
580 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
581 //TODO Remove if passes
582 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
583 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
584 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
585 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
586 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
587 USER, INSTANCE_ID, true, false);
588 verify(janusGraphDao, times(1)).commit();
592 public void testDeleteComponent_ArtifactNotFound(){
593 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result;
594 Resource resource = new Resource();
595 String uniqueId = "uniqueId";
596 resource.setUniqueId(uniqueId);
597 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
598 ArtifactDefinition artifact = new ArtifactDefinition();
599 artifact.setArtifactName("artifactName");
600 artifact.setEsId("esId");
601 artifact.setArtifactUUID("artifactUUID");
602 artifact.setArtifactType("YANG");
603 artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
604 artifact.setDescription("description");
605 artifact.setArtifactLabel("artifactLabel");
606 toscaArtifacts.put("artifactId", artifact);
607 resource.setArtifacts(toscaArtifacts);
608 resource.setToscaArtifacts(toscaArtifacts);
609 when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
610 .thenReturn(StorageOperationStatus.OK);
611 when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
612 .thenReturn(StorageOperationStatus.OK);
613 result = artifactBL.handleDelete("parentId", "artifactId", USER, AuditingActionEnum.ARTIFACT_DELETE,
614 ComponentTypeEnum.RESOURCE, resource,
616 assertThat(result.isRight());
619 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
620 assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
621 assertThat(heatEnvParam.getCurrentValue()).isNull();