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=========================================================
19 * Modifications copyright (c) 2019 Nokia
20 * ================================================================================
23 package org.openecomp.sdc.be.components.impl;
25 import com.fasterxml.jackson.annotation.JsonInclude;
26 import com.fasterxml.jackson.databind.DeserializationFeature;
27 import com.fasterxml.jackson.databind.ObjectMapper;
28 import com.fasterxml.jackson.databind.SerializationFeature;
29 import com.google.gson.Gson;
30 import com.google.gson.GsonBuilder;
31 import com.google.gson.JsonElement;
32 import fj.data.Either;
33 import mockit.Deencapsulation;
34 import org.apache.commons.codec.binary.Base64;
35 import org.apache.commons.lang3.tuple.ImmutablePair;
36 import org.junit.Assert;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mock;
41 import org.mockito.Mockito;
42 import org.mockito.MockitoAnnotations;
43 import org.openecomp.sdc.be.MockGenerator;
44 import org.openecomp.sdc.be.components.ArtifactsResolver;
45 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationEnum;
46 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo;
47 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
48 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
49 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
50 import org.openecomp.sdc.be.components.validation.UserValidations;
51 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
52 import org.openecomp.sdc.be.config.ConfigurationManager;
53 import org.openecomp.sdc.be.dao.api.ActionStatus;
54 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
55 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
56 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
57 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
58 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
59 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
60 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
61 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
62 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
63 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
64 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
65 import org.openecomp.sdc.be.impl.ComponentsUtils;
66 import org.openecomp.sdc.be.info.ArtifactTemplateInfo;
67 import org.openecomp.sdc.be.model.ArtifactDefinition;
68 import org.openecomp.sdc.be.model.ArtifactType;
69 import org.openecomp.sdc.be.model.Component;
70 import org.openecomp.sdc.be.model.ComponentInstance;
71 import org.openecomp.sdc.be.model.ComponentParametersView;
72 import org.openecomp.sdc.be.model.DataTypeDefinition;
73 import org.openecomp.sdc.be.model.GroupDefinition;
74 import org.openecomp.sdc.be.model.GroupInstance;
75 import org.openecomp.sdc.be.model.HeatParameterDefinition;
76 import org.openecomp.sdc.be.model.InterfaceDefinition;
77 import org.openecomp.sdc.be.model.LifecycleStateEnum;
78 import org.openecomp.sdc.be.model.Operation;
79 import org.openecomp.sdc.be.model.Resource;
80 import org.openecomp.sdc.be.model.ResourceMetadataDefinition;
81 import org.openecomp.sdc.be.model.Service;
82 import org.openecomp.sdc.be.model.User;
83 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
84 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
85 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation;
86 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
87 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
88 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
89 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
90 import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
91 import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
92 import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
93 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
94 import org.openecomp.sdc.be.model.operations.api.IUserAdminOperation;
95 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
96 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
97 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
98 import org.openecomp.sdc.be.resources.data.ESArtifactData;
99 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
100 import org.openecomp.sdc.be.servlets.RepresentationUtils;
101 import org.openecomp.sdc.be.tosca.CsarUtils;
102 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
103 import org.openecomp.sdc.be.user.IUserBusinessLogic;
104 import org.openecomp.sdc.be.user.Role;
105 import org.openecomp.sdc.be.user.UserBusinessLogic;
106 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
107 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
108 import org.openecomp.sdc.common.api.ConfigurationSource;
109 import org.openecomp.sdc.common.datastructure.Wrapper;
110 import org.openecomp.sdc.common.impl.ExternalConfiguration;
111 import org.openecomp.sdc.common.impl.FSConfigurationSource;
112 import org.openecomp.sdc.common.util.GeneralUtility;
113 import org.openecomp.sdc.exception.ResponseFormat;
115 import java.io.IOException;
116 import java.util.ArrayList;
117 import java.util.Collections;
118 import java.util.HashMap;
119 import java.util.List;
120 import java.util.Map;
122 import static org.junit.Assert.assertArrayEquals;
123 import static org.junit.Assert.assertEquals;
124 import static org.junit.Assert.assertNull;
125 import static org.junit.Assert.assertTrue;
126 import static org.mockito.ArgumentMatchers.any;
127 import static org.mockito.ArgumentMatchers.anyBoolean;
128 import static org.mockito.ArgumentMatchers.anyList;
129 import static org.mockito.ArgumentMatchers.anyString;
130 import static org.mockito.ArgumentMatchers.eq;
131 import static org.mockito.Mockito.doReturn;
132 import static org.mockito.Mockito.times;
133 import static org.mockito.Mockito.verify;
134 import static org.mockito.Mockito.when;
135 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
136 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
138 public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{
140 public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN",
141 System.currentTimeMillis());
142 public static final String RESOURCE_NAME = "My-Resource_Name with space";
143 public static final String RESOURCE_CATEGORY = "Network Layer 2-3/Router";
144 public static final String RESOURCE_CATEGORY1 = "Network Layer 2-3";
145 public static final String RESOURCE_SUBCATEGORY = "Router";
146 public static final Resource resource = Mockito.mock(Resource.class);
147 private static final String RESOURCE_INSTANCE_NAME = "Service-111";
148 private static final String INSTANCE_ID = "S-123-444-ghghghg";
149 private static final String ARTIFACT_NAME = "service-Myservice-template.yml";
150 private static final String ARTIFACT_LABEL = "assettoscatemplate";
151 private static final String ES_ARTIFACT_ID = "123123dfgdfgd0";
152 private static final byte[] PAYLOAD = "some payload".getBytes();
153 static ConfigurationSource configurationSource = new FSConfigurationSource(
154 ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
155 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
157 private ArtifactsBusinessLogic artifactBL;
158 private static User user = null;
159 private static Resource resourceResponse = null;
160 private static ResponseFormatManager responseManager = null;
161 final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
163 public ComponentsUtils componentsUtils;
165 public ToscaOperationFacade toscaOperationFacade;
166 JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
168 JanusGraphDao janusGraphDao;
170 private UserBusinessLogic userBusinessLogic;
172 private ArtifactOperation artifactOperation;
174 private IInterfaceLifecycleOperation lifecycleOperation;
176 private IUserAdminOperation userOperation;
178 private IElementOperation elementOperation;
180 private ArtifactCassandraDao artifactCassandraDao;
182 private NodeTemplateOperation nodeTemplateOperation;
184 private IGraphLockOperation graphLockOperation;
186 private UserValidations userValidations;
188 private ArtifactsResolver artifactsResolver;
190 private CsarUtils csarUtils;
192 private ToscaExportHandler toscaExportHandler;
194 private LifecycleBusinessLogic lifecycleBusinessLogic;
195 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
197 private static List<ArtifactType> getAllTypes() {
198 List<ArtifactType> artifactTypes = new ArrayList<>();
199 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration()
201 for (String artifactType : artifactTypesList) {
202 ArtifactType artifactT = new ArtifactType();
203 artifactT.setName(artifactType);
204 artifactTypes.add(artifactT);
206 return artifactTypes;
210 public void initMocks() {
211 MockitoAnnotations.initMocks(this);
212 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either
213 .right(StorageOperationStatus.NOT_FOUND);
215 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either
216 .right(StorageOperationStatus.NOT_FOUND);
217 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean()))
218 .thenReturn(NotFoundResult2);
219 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean()))
220 .thenReturn(NotFoundResult2);
222 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either
223 .right(StorageOperationStatus.NOT_FOUND);
224 when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean()))
225 .thenReturn(notFoundInterfaces);
227 Either<User, ActionStatus> getUserResult = Either.left(USER);
229 when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult);
231 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
232 when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
234 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
236 // User data and management
238 user.setUserId("jh0003");
239 user.setFirstName("Jimmi");
240 user.setLastName("Hendrix");
241 user.setRole(Role.ADMIN.name());
244 resourceResponse = createResourceObject(true);
245 Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse);
246 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
247 when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK);
248 Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<>();
249 when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
250 when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
252 Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
253 .right(StorageOperationStatus.BAD_REQUEST);
254 when(toscaOperationFacade.getToscaElement(resourceResponse.getUniqueId()))
255 .thenReturn(resourceStorageOperationStatusEither);
259 public void testValidJson() {
260 ArtifactDefinition ad = createArtifactDef();
262 String jsonArtifact = "";
264 ObjectMapper mapper = new ObjectMapper();
265 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
266 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
267 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
270 jsonArtifact = mapper.writeValueAsString(ad);
271 } catch (IOException e) {
272 // TODO Auto-generated catch block
276 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact,
277 ArtifactDefinition.class);
278 assertEquals(ad, afterConvert);
281 private ArtifactDefinition createArtifactDef() {
282 ArtifactDefinition ad = new ArtifactDefinition();
283 ad.setArtifactName("artifact1.yaml");
284 ad.setArtifactLabel("label1");
285 ad.setDescription("description");
286 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
287 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
288 ad.setCreationDate(System.currentTimeMillis());
289 ad.setMandatory(false);
294 private Resource createResourceObject(boolean afterCreate) {
295 Resource resource = new Resource();
296 resource.setName(RESOURCE_NAME);
297 resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
298 resource.setDescription("My short description");
299 List<String> tgs = new ArrayList<String>();
301 tgs.add(resource.getName());
302 resource.setTags(tgs);
303 List<String> template = new ArrayList<String>();
304 template.add("Root");
305 resource.setDerivedFrom(template);
306 resource.setVendorName("Motorola");
307 resource.setVendorRelease("1.0.0");
308 resource.setContactId("ya5467");
309 resource.setIcon("MyIcon");
312 resource.setName(resource.getName());
313 resource.setVersion("0.1");
314 resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
315 resource.setCreatorUserId(user.getUserId());
316 resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
317 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
323 public void testInvalidStringGroupType() {
324 ArtifactDefinition ad = new ArtifactDefinition();
325 ad.setArtifactName("artifact1");
326 ad.setCreationDate(System.currentTimeMillis());
327 ad.setMandatory(false);
330 JsonElement jsonArtifact = gson.toJsonTree(ad);
331 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
333 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
334 ArtifactDefinition.class);
335 assertNull(afterConvert);
339 public void testInvalidNumberGroupType() {
340 ArtifactDefinition ad = new ArtifactDefinition();
341 ad.setArtifactName("artifact1");
342 ad.setCreationDate(System.currentTimeMillis());
343 ad.setMandatory(false);
346 JsonElement jsonArtifact = gson.toJsonTree(ad);
347 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
349 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
350 ArtifactDefinition.class);
351 assertNull(afterConvert);
355 public void testInvalidGroupTypeWithSpace() {
356 ArtifactDefinition ad = new ArtifactDefinition();
357 ad.setArtifactName("artifact1");
358 ad.setCreationDate(System.currentTimeMillis());
359 ad.setMandatory(false);
362 JsonElement jsonArtifact = gson.toJsonTree(ad);
363 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
365 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
366 ArtifactDefinition.class);
367 assertNull(afterConvert);
371 public void testInvalidTimeoutWithSpace() {
372 ArtifactDefinition ad = new ArtifactDefinition();
373 ad.setArtifactName("artifact1");
374 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
375 ad.setCreationDate(System.currentTimeMillis());
376 ad.setMandatory(false);
378 JsonElement jsonArtifact = gson.toJsonTree(ad);
379 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
381 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
382 ArtifactDefinition.class);
383 assertNull(afterConvert);
387 public void testValidMibAritactsConfiguration() {
388 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts = ConfigurationManager.getConfigurationManager()
389 .getConfiguration().getResourceDeploymentArtifacts();
390 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts = ConfigurationManager
391 .getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
392 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
393 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
394 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
395 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
399 public void testDownloadServiceArtifactByNames() {
400 Service service = new Service();
401 String serviceName = "myService";
402 String serviceVersion = "1.0";
403 String serviceId = "serviceId";
404 service.setName(serviceName);
405 service.setVersion(serviceVersion);
406 service.setUniqueId(serviceId);
408 String artifactName = "service-Myservice-template.yml";
409 String artifactLabel = "assettoscatemplate";
410 String esArtifactId = "123123dfgdfgd0";
411 byte[] payload = "some payload".getBytes();
412 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
413 toscaTemplateArtifact.setArtifactName(artifactName);
414 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
415 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
416 toscaTemplateArtifact.setEsId(esArtifactId);
417 toscaTemplateArtifact.setPayload(payload);
419 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
420 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
421 service.setToscaArtifacts(toscaArtifacts);
423 ESArtifactData esArtifactData = new ESArtifactData(esArtifactId);
424 esArtifactData.setDataAsArray(payload);
425 Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
426 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
427 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
428 serviceList.add(service);
429 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either
431 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
432 Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes = artifactBL
433 .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
434 assertTrue(downloadServiceArtifactByNamesRes.isLeft());
435 assertTrue(downloadServiceArtifactByNamesRes.left().value() != null
436 && downloadServiceArtifactByNamesRes.left().value().length == payload.length);
440 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
441 ArtifactDefinition heatArtifact = new ArtifactBuilder()
442 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
443 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2")).build();
445 Resource component = new Resource();
446 component.setComponentType(ComponentTypeEnum.RESOURCE);
447 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
448 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
449 eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
450 .thenReturn(Either.left(new ArtifactDefinition()));
451 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
452 heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component,
453 Collections.emptyMap());
454 assertTrue(heatEnvPlaceHolder.isLeft());
455 assertNull(heatEnvPlaceHolder.left().value().getListHeatParameters());
459 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal()
461 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
462 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
463 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
464 ArtifactDefinition heatArtifact = new ArtifactBuilder().addHeatParam(heatParam1).addHeatParam(heatParam2)
465 .addHeatParam(heatParam3).build();
467 Resource component = new Resource();
469 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
470 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
471 eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
472 .thenReturn(Either.left(new ArtifactDefinition()));
474 Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
475 heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component,
476 Collections.emptyMap());
478 assertTrue(heatEnvPlaceHolder.isLeft());
479 ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value();
480 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
481 assertEquals(listHeatParameters.size(), 3);
482 verifyHeatParam(listHeatParameters.get(0), heatParam1);
483 verifyHeatParam(listHeatParameters.get(1), heatParam2);
484 verifyHeatParam(listHeatParameters.get(2), heatParam3);
488 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
489 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
490 artifactDefinition.setArtifactName(ARTIFACT_NAME);
491 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
492 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
493 artifactDefinition.setEsId(ES_ARTIFACT_ID);
494 artifactDefinition.setPayload(PAYLOAD);
495 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
497 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
498 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
499 any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition));
500 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
501 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
502 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
503 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, true);
507 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
508 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
509 artifactDefinition.setArtifactName(ARTIFACT_NAME);
510 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
511 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
512 artifactDefinition.setEsId(ES_ARTIFACT_ID);
513 artifactDefinition.setPayload(PAYLOAD);
514 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
516 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
517 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
518 any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition));
519 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
520 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
521 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
522 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
523 verify(janusGraphDao, times(1)).commit();
526 private ArtifactDefinition buildArtifactPayload() {
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 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
537 any(NodeTypeEnum.class), 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),
541 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
542 verify(janusGraphDao, times(1)).commit();
543 return artifactDefinition;
546 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
547 assertEquals(heatEnvParam.getDefaultValue(), heatYamlParam.getCurrentValue());
548 assertNull(heatEnvParam.getCurrentValue());
551 private ArtifactsBusinessLogic createTestSubject() {
552 return getTestSubject();
556 public void testBuildJsonStringForCsarVfcArtifact() throws Exception {
557 ArtifactsBusinessLogic testSubject;
558 ArtifactDefinition artifact = new ArtifactDefinition();
562 testSubject = createTestSubject();
563 result = Deencapsulation.invoke(testSubject, "buildJsonStringForCsarVfcArtifact", new Object[]{artifact});
567 public void testCheckArtifactInComponent() throws Exception {
568 ArtifactsBusinessLogic testSubject;
569 Component component = new Resource();
570 component.setComponentType(ComponentTypeEnum.RESOURCE);
571 String artifactId = "";
575 testSubject = createTestSubject();
576 result = Deencapsulation.invoke(testSubject, "checkArtifactInComponent",
577 new Object[]{component, artifactId});
581 public void testCheckCreateFields() throws Exception {
582 ArtifactsBusinessLogic testSubject;
584 ArtifactDefinition artifactInfo = buildArtifactPayload();
585 ArtifactGroupTypeEnum type = ArtifactGroupTypeEnum.DEPLOYMENT;
588 testSubject = createTestSubject();
589 Deencapsulation.invoke(testSubject, "checkCreateFields", user, artifactInfo, type);
593 public void testComposeArtifactId() throws Exception {
594 ArtifactsBusinessLogic testSubject;
595 String resourceId = "";
596 String artifactId = "";
597 ArtifactDefinition artifactInfo = buildArtifactPayload();
598 String interfaceName = "";
599 String operationName = "";
603 testSubject = createTestSubject();
604 result = Deencapsulation.invoke(testSubject, "composeArtifactId",
605 new Object[]{resourceId, artifactId, artifactInfo, interfaceName, operationName});
609 public void testConvertParentType() throws Exception {
610 ArtifactsBusinessLogic testSubject;
611 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
615 testSubject = createTestSubject();
616 result = Deencapsulation.invoke(testSubject, "convertParentType", new Object[]{componentType});
620 public void testConvertToOperation() throws Exception {
621 ArtifactsBusinessLogic testSubject;
622 ArtifactDefinition artifactInfo = buildArtifactPayload();
623 String operationName = "";
627 testSubject = createTestSubject();
628 result = Deencapsulation.invoke(testSubject, "convertToOperation",
629 new Object[]{artifactInfo, operationName});
633 public void testCreateInterfaceArtifactNameFromOperation() throws Exception {
634 ArtifactsBusinessLogic testSubject;
635 String operationName = "";
636 String artifactName = "";
640 testSubject = createTestSubject();
641 result = Deencapsulation.invoke(testSubject, "createInterfaceArtifactNameFromOperation",
642 new Object[]{operationName, artifactName});
646 public void testFetchArtifactsFromComponent() throws Exception {
647 ArtifactsBusinessLogic testSubject;
648 String artifactId = "";
649 Component component = createResourceObject(true);
650 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
653 testSubject = createTestSubject();
654 Deencapsulation.invoke(testSubject, "fetchArtifactsFromComponent",
655 artifactId, component, artifacts);
659 public void testValidateArtifact() throws Exception {
660 ArtifactsBusinessLogic testSubject;
661 String componentId = "";
662 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
663 ArtifactsBusinessLogic arb = getTestSubject();
664 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
665 String artifactId = "";
666 ArtifactDefinition artifactInfo = buildArtifactPayload();
667 AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
669 Component component = createResourceObject(true);
670 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
671 boolean shouldLock = false;
672 boolean inTransaction = false;
673 ArtifactDefinition result;
676 testSubject = createTestSubject();
677 result = Deencapsulation.invoke(testSubject, "validateArtifact", new Object[]{componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, component, errorWrapper, shouldLock, inTransaction});
681 public void testHandleHeatEnvDownload() throws Exception {
682 ArtifactsBusinessLogic testSubject;
683 String componentId = "";
684 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
686 Component component = createResourceObject(true);
687 ArtifactDefinition artifactInfo = buildArtifactPayload();
688 Either<ArtifactDefinition, ResponseFormat> validateArtifact = Either.left(artifactInfo);
689 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
690 boolean shouldLock = false;
691 boolean inTransaction = false;
695 testSubject = createTestSubject();
696 Deencapsulation.invoke(testSubject, "handleHeatEnvDownload", componentId, componentType, user, component, validateArtifact, errorWrapper, shouldLock, inTransaction);
700 public void testArtifactGenerationRequired() throws Exception {
701 ArtifactsBusinessLogic testSubject;
702 Component component = createResourceObject(true);
703 ArtifactDefinition artifactInfo = buildArtifactPayload();
707 testSubject = createTestSubject();
708 result = Deencapsulation.invoke(testSubject, "artifactGenerationRequired",
709 new Object[]{component, artifactInfo});
713 public void testUpdateGroupForHeat() throws Exception {
714 ArtifactsBusinessLogic testSubject;
715 ArtifactDefinition artifactInfo = buildArtifactPayload();
716 ArtifactDefinition artAfterUpdate = null;
717 Component component = createResourceObject(true);
718 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
722 testSubject = createTestSubject();
723 result = Deencapsulation.invoke(testSubject, "updateGroupForHeat", new Object[]{artifactInfo,
724 artifactInfo, component, componentType});
728 public void testUpdateGroupForHeat_1() throws Exception {
729 ArtifactsBusinessLogic testSubject;
730 ArtifactDefinition artifactInfo = buildArtifactPayload();
731 Component component = createResourceObject(true);
732 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
736 testSubject = createTestSubject();
737 result = Deencapsulation.invoke(testSubject, "updateGroupForHeat",
738 new Object[]{artifactInfo, artifactInfo, artifactInfo,
739 artifactInfo, component, componentType});
743 public void testHandleAuditing() throws Exception {
744 ArtifactsBusinessLogic testSubject;
745 AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
746 Component component = createResourceObject(true);
747 String componentId = "";
749 ArtifactDefinition artifactDefinition = buildArtifactPayload();
750 String prevArtifactUuid = "";
751 String currentArtifactUuid = "";
752 ResponseFormat responseFormat = new ResponseFormat();
753 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
754 String resourceInstanceName = "";
757 testSubject = createTestSubject();
758 testSubject.setComponentsUtils(MockGenerator.mockComponentUtils());
759 testSubject.handleAuditing(auditingActionEnum, component, componentId, user, artifactDefinition,
760 prevArtifactUuid, currentArtifactUuid, responseFormat, componentTypeEnum, resourceInstanceName);
764 public void testIgnoreUnupdateableFieldsInUpdate() throws Exception {
765 ArtifactsBusinessLogic testSubject;
766 ArtifactsBusinessLogic arb = getTestSubject();
767 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
768 ArtifactDefinition artifactInfo = buildArtifactPayload();
769 ArtifactDefinition currentArtifactInfo = null;
772 testSubject = createTestSubject();
773 Deencapsulation.invoke(testSubject, "ignoreUnupdateableFieldsInUpdate",
774 operation, artifactInfo, artifactInfo);
778 public void testFindArtifactOnParentComponent() throws Exception {
779 ArtifactsBusinessLogic testSubject;
780 Component component = createResourceObject(true);
781 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
782 String parentId = "";
783 ArtifactsBusinessLogic arb = getTestSubject();
784 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
785 String artifactId = "";
786 Either<ArtifactDefinition, ResponseFormat> result;
789 testSubject = createTestSubject();
790 result = Deencapsulation.invoke(testSubject, "findArtifactOnParentComponent", new Object[]{component,
791 componentType, parentId, operation, artifactId});
795 public void testValidateInformationalArtifact() throws Exception {
796 ArtifactsBusinessLogic testSubject;
797 ArtifactDefinition artifactInfo = buildArtifactPayload();
798 Component component = createResourceObject(true);
799 Either<Boolean, ResponseFormat> result;
802 testSubject = createTestSubject();
803 result = Deencapsulation.invoke(testSubject, "validateInformationalArtifact",
804 new Object[]{artifactInfo, component});
809 public void testGetUpdatedGroups() throws Exception {
810 ArtifactsBusinessLogic testSubject;
811 String artifactId = "";
812 ArtifactDefinition artifactInfo = buildArtifactPayload();
813 List<GroupDefinition> groups = new ArrayList<>();
814 List<GroupDataDefinition> result;
817 testSubject = createTestSubject();
818 result = Deencapsulation.invoke(testSubject, "getUpdatedGroups", new Object[]{artifactId, artifactInfo, groups});
823 public void testGetUpdatedGroupInstances() throws Exception {
824 ArtifactsBusinessLogic testSubject;
825 String artifactId = "";
826 ArtifactDefinition artifactInfo = buildArtifactPayload();
827 List<GroupDefinition> groups = new ArrayList<>();
828 List<GroupInstance> result;
831 testSubject = createTestSubject();
832 result = Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups});
836 public void testFindArtifact_1() throws Exception {
837 ArtifactsBusinessLogic testSubject;
838 String artifactId = "";
839 Component component = createResourceObject(true);
840 String parentId = "";
841 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
842 Either<ImmutablePair<ArtifactDefinition, ComponentInstance>, ActionStatus> result;
845 testSubject = createTestSubject();
846 result = Deencapsulation.invoke(testSubject, "findArtifact",
847 new Object[]{artifactId, component, parentId, componentType});
852 public void testFetchArtifactsFromInstance() throws Exception {
853 ArtifactsBusinessLogic testSubject;
854 String artifactId = "";
855 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
856 ComponentInstance instance = new ComponentInstance();
860 testSubject = createTestSubject();
861 Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", artifactId, artifacts, instance);
866 public void testGenerateCustomizationUUIDOnInstance() throws Exception {
867 ArtifactsBusinessLogic testSubject;
868 String componentId = "";
869 String instanceId = "";
870 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
871 StorageOperationStatus result;
874 testSubject = createTestSubject();
875 result = Deencapsulation.invoke(testSubject, "generateCustomizationUUIDOnInstance",
876 new Object[]{componentId, instanceId, componentType});
881 public void testFindComponentInstance() throws Exception {
882 ArtifactsBusinessLogic testSubject;
883 String componentInstanceId = "";
884 Component component = createResourceObject(true);
885 ComponentInstance result;
888 testSubject = createTestSubject();
889 result = Deencapsulation.invoke(testSubject, "findComponentInstance",
890 new Object[]{componentInstanceId, component});
895 public void testValidateDeploymentArtifactConf() throws Exception {
896 ArtifactsBusinessLogic testSubject;
897 ArtifactDefinition artifactInfo = buildArtifactPayload();
898 Wrapper<ResponseFormat> responseWrapper = new Wrapper<>();
899 ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
900 Map<String, ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>();
904 testSubject = createTestSubject();
905 Deencapsulation.invoke(testSubject, "validateDeploymentArtifactConf", artifactInfo, responseWrapper, artifactType, resourceDeploymentArtifacts);
910 public void testFillDeploymentArtifactTypeConf() throws Exception {
911 ArtifactsBusinessLogic testSubject;
912 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
913 Map<String, ArtifactTypeConfig> result;
916 testSubject = createTestSubject();
917 result = Deencapsulation.invoke(testSubject, "fillDeploymentArtifactTypeConf",
918 new Object[]{parentType});
923 public void testValidateArtifactTypeExists() throws Exception {
924 ArtifactsBusinessLogic testSubject;
925 Wrapper<ResponseFormat> responseWrapper = null;
926 ArtifactDefinition artifactInfo = buildArtifactPayload();
929 testSubject = createTestSubject();
930 testSubject.validateArtifactTypeExists(responseWrapper, artifactInfo);
935 public void testGetDeploymentArtifactTypeConfig() throws Exception {
936 ArtifactsBusinessLogic testSubject;
937 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
938 ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
939 ArtifactTypeConfig result;
942 testSubject = createTestSubject();
943 result = Deencapsulation.invoke(testSubject, "getDeploymentArtifactTypeConfig",
944 new Object[]{parentType, artifactType});
949 public void testValidateHeatEnvDeploymentArtifact() throws Exception {
950 ArtifactsBusinessLogic testSubject;
951 Component component = createResourceObject(true);
952 String parentId = "";
953 ArtifactDefinition artifactInfo = buildArtifactPayload();
954 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
955 Either<Boolean, ResponseFormat> result;
958 testSubject = createTestSubject();
959 result = Deencapsulation.invoke(testSubject, "validateHeatEnvDeploymentArtifact",
960 new Object[]{component, parentId, artifactInfo, parentType});
964 public void testFillArtifactPayloadValidation() throws Exception {
965 ArtifactsBusinessLogic testSubject;
966 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
967 Wrapper<byte[]> payloadWrapper = new Wrapper<>();
968 ArtifactDefinition artifactDefinition = buildArtifactPayload();
971 testSubject = createTestSubject();
972 testSubject.fillArtifactPayloadValidation(errorWrapper, payloadWrapper, artifactDefinition);
976 public void testValidateValidYaml() throws Exception {
977 ArtifactsBusinessLogic testSubject;
978 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
979 ArtifactDefinition artifactInfo = buildArtifactPayload();
983 testSubject = createTestSubject();
984 Deencapsulation.invoke(testSubject, "validateValidYaml", errorWrapper, artifactInfo);
988 public void testIsValidXml() throws Exception {
989 ArtifactsBusinessLogic testSubject;
990 byte[] xmlToParse = new byte[]{' '};
994 testSubject = createTestSubject();
995 result = Deencapsulation.invoke(testSubject, "isValidXml", new Object[]{xmlToParse});
999 public void testValidateSingleDeploymentArtifactName() throws Exception {
1000 ArtifactsBusinessLogic testSubject;
1001 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
1002 String artifactName = "";
1003 Component component = createResourceObject(true);
1004 NodeTypeEnum parentType = null;
1008 testSubject = createTestSubject();
1009 Deencapsulation.invoke(testSubject, "validateSingleDeploymentArtifactName", errorWrapper, artifactName, component, NodeTypeEnum.class);
1013 public void testValidateHeatDeploymentArtifact() throws Exception {
1014 ArtifactsBusinessLogic testSubject;
1015 boolean isCreate = false;
1016 ArtifactDefinition artifactInfo = buildArtifactPayload();
1017 ArtifactDefinition currentArtifact = null;
1018 Either<Boolean, ResponseFormat> result;
1021 testSubject = createTestSubject();
1022 result = Deencapsulation.invoke(testSubject, "validateHeatDeploymentArtifact",
1023 new Object[]{isCreate, artifactInfo, artifactInfo});
1027 public void testValidateResourceType() throws Exception {
1028 ArtifactsBusinessLogic testSubject;
1029 ResourceTypeEnum resourceType = ResourceTypeEnum.VF;
1030 ArtifactDefinition artifactInfo = buildArtifactPayload();
1031 List<String> typeList = new ArrayList<>();
1032 Either<Boolean, ResponseFormat> result;
1035 testSubject = createTestSubject();
1036 result = Deencapsulation.invoke(testSubject, "validateResourceType", new Object[]{resourceType, artifactInfo, typeList});
1041 public void testValidateAndConvertHeatParamers() throws Exception {
1042 ArtifactsBusinessLogic testSubject;
1043 ArtifactDefinition artifactInfo = buildArtifactPayload();
1044 String artifactType = "";
1045 Either<ArtifactDefinition, ResponseFormat> result;
1048 testSubject = createTestSubject();
1049 result = Deencapsulation.invoke(testSubject, "validateAndConvertHeatParamers",
1050 new Object[]{artifactInfo, artifactType});
1054 public void testGetDeploymentArtifacts() throws Exception {
1055 ArtifactsBusinessLogic testSubject;
1056 Component component = createResourceObject(true);
1057 NodeTypeEnum parentType = null;
1059 List<ArtifactDefinition> result;
1062 testSubject = createTestSubject();
1063 result = testSubject.getDeploymentArtifacts(component, parentType, ciId);
1067 public void testValidateFirstUpdateHasPayload() throws Exception {
1068 ArtifactsBusinessLogic testSubject;
1069 ArtifactDefinition artifactInfo = buildArtifactPayload();
1070 ArtifactDefinition currentArtifact = null;
1071 Either<Boolean, ResponseFormat> result;
1074 testSubject = createTestSubject();
1075 result = Deencapsulation.invoke(testSubject, "validateFirstUpdateHasPayload",
1076 new Object[]{artifactInfo, artifactInfo});
1080 public void testValidateAndSetArtifactname() throws Exception {
1081 ArtifactsBusinessLogic testSubject;
1082 ArtifactDefinition artifactInfo = buildArtifactPayload();
1083 Either<Boolean, ResponseFormat> result;
1086 testSubject = createTestSubject();
1087 result = Deencapsulation.invoke(testSubject, "validateAndSetArtifactname",
1088 new Object[]{artifactInfo});
1092 public void testValidateArtifactTypeNotChanged() throws Exception {
1093 ArtifactsBusinessLogic testSubject;
1094 ArtifactDefinition artifactInfo = buildArtifactPayload();
1095 ArtifactDefinition currentArtifact = null;
1096 Either<Boolean, ResponseFormat> result;
1099 testSubject = createTestSubject();
1100 result = Deencapsulation.invoke(testSubject, "validateArtifactTypeNotChanged",
1101 new Object[]{artifactInfo, artifactInfo});
1106 public void testValidateOrSetArtifactGroupType() throws Exception {
1107 ArtifactsBusinessLogic testSubject;
1108 ArtifactDefinition artifactInfo = buildArtifactPayload();
1109 ArtifactDefinition currentArtifact = null;
1110 Either<ArtifactDefinition, ResponseFormat> result;
1113 testSubject = createTestSubject();
1114 result = Deencapsulation.invoke(testSubject, "validateOrSetArtifactGroupType",
1115 new Object[]{artifactInfo, artifactInfo});
1119 public void testCheckAndSetUnUpdatableFields() throws Exception {
1120 ArtifactsBusinessLogic testSubject;
1122 ArtifactDefinition artifactInfo = buildArtifactPayload();
1123 ArtifactDefinition currentArtifact = null;
1124 ArtifactGroupTypeEnum type = null;
1127 testSubject = createTestSubject();
1129 Deencapsulation.invoke(testSubject, "checkAndSetUnUpdatableFields", user,
1130 artifactInfo, artifactInfo, ArtifactGroupTypeEnum.class);
1134 public void testCheckAndSetUnupdatableHeatParams() throws Exception {
1135 ArtifactsBusinessLogic testSubject;
1136 List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1137 List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1141 testSubject = createTestSubject();
1142 Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", heatParameters, currentParameters);
1146 public void testGetMapOfParameters() throws Exception {
1147 ArtifactsBusinessLogic testSubject;
1148 List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1149 Map<String, HeatParameterDefinition> result;
1152 testSubject = createTestSubject();
1153 result = Deencapsulation.invoke(testSubject, "getMapOfParameters", new Object[]{currentParameters});
1157 public void testGivenValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1158 final byte[] payload = "validYaml: yes".getBytes();
1159 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1161 final boolean isArtifactMetadataUpdate = false;
1162 ArtifactsBusinessLogic testSubject = getTestSubject();
1164 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1165 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1166 assertArrayEquals(payload, result.left().value());
1170 public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1171 final int expectedStatus = 100;
1172 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1173 final byte[] payload = "invalidYaml".getBytes();
1174 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1176 final boolean isArtifactMetadataUpdate = false;
1177 ArtifactsBusinessLogic testSubject = getTestSubject();
1178 testSubject.setComponentsUtils(componentsUtils);
1180 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1181 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1183 int status = result.right().value().getStatus();
1184 assertEquals(expectedStatus, status);
1188 public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() {
1189 final int expectedStatus = 101;
1190 when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1191 final byte[] payload = "".getBytes();
1192 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1194 final boolean isArtifactMetadataUpdate = false;
1195 ArtifactsBusinessLogic testSubject = getTestSubject();
1196 testSubject.setComponentsUtils(componentsUtils);
1198 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1199 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1201 int status = result.right().value().getStatus();
1202 assertEquals(expectedStatus, status);
1207 public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1208 final byte[] payload = "heat_template_version: 1.0".getBytes();
1209 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1211 final boolean isArtifactMetadataUpdate = false;
1212 ArtifactsBusinessLogic testSubject = getTestSubject();
1214 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1215 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1216 assertArrayEquals(payload, result.left().value());
1220 public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1221 final int expectedStatus = 1000;
1222 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1223 final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes();
1224 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1226 final boolean isArtifactMetadataUpdate = false;
1227 ArtifactsBusinessLogic testSubject = getTestSubject();
1228 testSubject.setComponentsUtils(componentsUtils);
1230 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1231 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1233 int status = result.right().value().getStatus();
1234 assertEquals(expectedStatus, status);
1237 private ArtifactDefinition createArtifactInfo(byte[] payload, String artifactName, ArtifactTypeEnum artifactType) {
1238 ArtifactDefinition artifactInfo = new ArtifactDefinition();
1239 artifactInfo.setArtifactName(artifactName);
1240 artifactInfo.setArtifactType(artifactType.getType());
1241 artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
1242 artifactInfo.setPayload(Base64.encodeBase64(payload));
1243 return artifactInfo;
1247 public void testValidateUserRole() throws Exception {
1248 ArtifactsBusinessLogic testSubject;
1250 AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
1251 String componentId = "";
1252 String artifactId = "";
1253 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1254 ArtifactsBusinessLogic arb = getTestSubject();
1255 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1256 Either<Boolean, ResponseFormat> result;
1259 testSubject = createTestSubject();
1260 result = Deencapsulation.invoke(testSubject, "validateUserRole",
1261 new Object[]{user, auditingAction, componentId, artifactId, componentType,
1266 public void testDetectAuditingType() throws Exception {
1267 ArtifactsBusinessLogic testSubject;
1268 ArtifactsBusinessLogic arb = getTestSubject();
1269 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1270 String origMd5 = "";
1271 AuditingActionEnum result;
1274 testSubject = createTestSubject();
1275 result = Deencapsulation.invoke(testSubject, "detectAuditingType",
1276 new Object[]{operation, origMd5});
1280 public void testCreateEsArtifactData() throws Exception {
1281 ArtifactsBusinessLogic testSubject;
1282 ArtifactDataDefinition artifactInfo = buildArtifactPayload();
1283 byte[] artifactPayload = new byte[]{' '};
1284 ESArtifactData result;
1287 testSubject = createTestSubject();
1288 result = testSubject.createEsArtifactData(artifactInfo, artifactPayload);
1292 public void testIsArtifactMetadataUpdate() throws Exception {
1293 ArtifactsBusinessLogic testSubject;
1294 AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
1298 testSubject = createTestSubject();
1299 result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
1300 new Object[]{auditingActionEnum});
1304 public void testIsDeploymentArtifact() throws Exception {
1305 ArtifactsBusinessLogic testSubject;
1306 ArtifactDefinition artifactInfo = buildArtifactPayload();
1310 testSubject = createTestSubject();
1311 result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[]{artifactInfo});
1316 public void testSetArtifactPlaceholderCommonFields() throws Exception {
1317 ArtifactsBusinessLogic testSubject;
1318 String resourceId = "";
1320 ArtifactDefinition artifactInfo = buildArtifactPayload();
1323 testSubject = createTestSubject();
1324 Deencapsulation.invoke(testSubject, "setArtifactPlaceholderCommonFields",
1325 resourceId, user, artifactInfo);
1331 public void testCreateEsHeatEnvArtifactDataFromString() throws Exception {
1332 ArtifactsBusinessLogic testSubject;
1333 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1334 String payloadStr = "";
1335 Either<ESArtifactData, ResponseFormat> result;
1338 testSubject = createTestSubject();
1339 result = Deencapsulation.invoke(testSubject, "createEsHeatEnvArtifactDataFromString",
1340 new Object[]{artifactDefinition, payloadStr});
1344 public void testUpdateArtifactOnGroupInstance() throws Exception {
1345 ArtifactsBusinessLogic testSubject;
1346 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1347 Component component = createResourceObject(true);
1348 String instanceId = "";
1349 String prevUUID = "";
1350 ArtifactDefinition artifactInfo = buildArtifactPayload();
1351 Either<ArtifactDefinition, ResponseFormat> result;
1354 testSubject = createTestSubject();
1356 result = Deencapsulation.invoke(testSubject, "updateArtifactOnGroupInstance",
1357 new Object[]{componentType, component, instanceId, prevUUID, artifactInfo,
1363 public void testGenerateHeatEnvPayload() throws Exception {
1364 ArtifactsBusinessLogic testSubject;
1365 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1369 testSubject = createTestSubject();
1370 result = Deencapsulation.invoke(testSubject, "generateHeatEnvPayload",
1371 new Object[]{artifactDefinition});
1375 public void testBuildJsonForUpdateArtifact() throws Exception {
1376 ArtifactsBusinessLogic testSubject;
1377 ArtifactDefinition artifactInfo = buildArtifactPayload();
1378 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1379 List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1380 Map<String, Object> result;
1383 testSubject = createTestSubject();
1384 result = testSubject.buildJsonForUpdateArtifact(artifactInfo, artifactGroupType, updatedRequiredArtifacts);
1388 public void testBuildJsonForUpdateArtifact_1() throws Exception {
1389 ArtifactsBusinessLogic testSubject;
1390 String artifactId = "";
1391 String artifactName = "";
1392 String artifactType = "";
1393 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1395 String displayName = "";
1396 String description = "";
1397 byte[] artifactContent = new byte[]{' '};
1398 List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1399 List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1400 Map<String, Object> result;
1403 testSubject = createTestSubject();
1405 result = testSubject.buildJsonForUpdateArtifact(artifactId, artifactName, artifactType, artifactGroupType,
1406 label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters);
1410 public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception {
1411 ArtifactsBusinessLogic testSubject;
1412 List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
1413 List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
1417 testSubject = createTestSubject();
1418 Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", currentHeatEnvParams, updatedHeatEnvParams);
1422 public void testExtractArtifactDefinition() throws Exception {
1423 ArtifactsBusinessLogic testSubject;
1424 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1425 Either<ArtifactDefinition, Operation> eitherArtifact = Either.left(artifactDefinition);
1426 ArtifactDefinition result;
1429 testSubject = createTestSubject();
1430 result = testSubject.extractArtifactDefinition(eitherArtifact);
1434 public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception {
1435 ArtifactsBusinessLogic testSubject;
1436 ArtifactDefinition artifact = null;
1437 ArtifactDefinition artifactInfo = buildArtifactPayload();
1440 testSubject = createTestSubject();
1441 Deencapsulation.invoke(testSubject, "setHeatCurrentValuesOnHeatEnvDefaultValues",
1442 artifactInfo, artifactInfo);
1446 public void testBuildHeatEnvFileName() throws Exception {
1447 ArtifactsBusinessLogic testSubject;
1448 ArtifactDefinition heatArtifact = null;
1449 ArtifactDefinition artifactInfo = buildArtifactPayload();
1450 Map<String, Object> placeHolderData = new HashMap<>();
1454 testSubject = createTestSubject();
1455 Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", artifactInfo, artifactInfo, placeHolderData);
1459 public void testHandleEnvArtifactVersion() throws Exception {
1460 ArtifactsBusinessLogic testSubject;
1461 ArtifactDefinition artifactInfo = buildArtifactPayload();
1462 Map<String, String> existingEnvVersions = new HashMap<>();
1466 testSubject = createTestSubject();
1467 Deencapsulation.invoke(testSubject, "handleEnvArtifactVersion", artifactInfo, existingEnvVersions);
1471 public void testHandleArtifactsRequestForInnerVfcComponent() throws Exception {
1472 ArtifactsBusinessLogic testSubject;
1473 List<ArtifactDefinition> artifactsToHandle = new ArrayList<>();
1474 Resource component = createResourceObject(true);
1476 List<ArtifactDefinition> vfcsNewCreatedArtifacts = new ArrayList<>();
1477 ArtifactsBusinessLogic arb = getTestSubject();
1478 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1479 boolean shouldLock = false;
1480 boolean inTransaction = false;
1481 Either<List<ArtifactDefinition>, ResponseFormat> result;
1484 testSubject = createTestSubject();
1485 result = testSubject.handleArtifactsRequestForInnerVfcComponent(artifactsToHandle, component, user,
1486 vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction);
1490 public void testSetNodeTemplateOperation() throws Exception {
1491 ArtifactsBusinessLogic testSubject;
1492 NodeTemplateOperation nodeTemplateOperation = null;
1495 testSubject = createTestSubject();
1496 Deencapsulation.invoke(testSubject, "setNodeTemplateOperation", NodeTemplateOperation.class);
1500 public void testHandleArtifactRequest() {
1502 String componentId = "componentId";
1503 ArtifactOperationInfo operationInfo = artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE);
1504 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1505 artifactDefinition.setArtifactName("other");
1506 artifactDefinition.setUniqueId("artifactId");
1507 artifactDefinition.setPayload("Test".getBytes());
1508 artifactDefinition.setArtifactLabel("other");
1509 artifactDefinition.setDescription("Test artifact");
1510 artifactDefinition.setArtifactType(ArtifactTypeEnum.OTHER.name());
1511 artifactDefinition.setArtifactUUID("artifactUId");
1512 artifactDefinition.setArtifactLabel("test");
1513 artifactDefinition.setArtifactDisplayName("Test");
1514 artifactDefinition.setEsId("esId");
1516 String requestMd5 = GeneralUtility.calculateMD5Base64EncodedByString("data");
1517 User user = new User();
1518 user.setUserId("userId");
1520 List<ComponentInstance> componentInstanceList = new ArrayList<>();
1521 List<InterfaceDefinition> interfaceDefinitionsList = new ArrayList<>();
1522 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1523 Map<String, Operation> operationsMap = new HashMap<>();
1524 artifactDefinitionMap.put("sample", artifactDefinition);
1526 ComponentInstance componentInstance = new ComponentInstance();
1527 componentInstance.setUniqueId(componentId);
1528 componentInstance.setDeploymentArtifacts(artifactDefinitionMap);
1529 componentInstanceList.add(componentInstance);
1531 Operation operation = new Operation();
1532 operation.setUniqueId("ouuid");
1533 operation.setName("operation1");
1534 operation.setImplementation(artifactDefinition);
1535 operationsMap.put("op1", operation);
1537 Map<String, InterfaceDefinition> interfaceDefinitions = new HashMap<>();
1539 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1540 interfaceDefinition.setType("iuuid");
1541 interfaceDefinition.setOperationsMap(operationsMap);
1542 interfaceDefinitions.put("iuuid", interfaceDefinition);
1544 interfaceDefinitionsList.add(interfaceDefinition);
1546 ResourceMetadataDataDefinition resourceMetadaData = new ResourceMetadataDataDefinition();
1547 resourceMetadaData.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
1548 resourceMetadaData.setLastUpdaterUserId(user.getUserId());
1549 Resource resource = new Resource(new ResourceMetadataDefinition(resourceMetadaData));
1550 resource.setComponentInstances(componentInstanceList);
1551 resource.setUniqueId(componentId);
1552 resource.setInterfaces(interfaceDefinitions);
1554 user.setRole(Role.ADMIN.name());
1556 when(userValidations.validateUserExists(Mockito.eq("userId"), any(), anyBoolean()))
1558 when(toscaOperationFacade.getToscaFullElement(any()))
1559 .thenReturn(Either.left(resource));
1560 when(artifactToscaOperation.getArtifactById(any(), any(), any(), any()))
1561 .thenReturn(Either.left(artifactDefinition));
1562 when(artifactsResolver.findArtifactOnComponent(any(), any(ComponentTypeEnum.class), anyString()))
1563 .thenReturn(artifactDefinition);
1564 when(graphLockOperation.lockComponent(eq(resource.getUniqueId()), any(NodeTypeEnum.class)))
1565 .thenReturn(StorageOperationStatus.OK);
1566 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any()))
1567 .thenReturn(Either.left(artifactDefinition));
1568 when(artifactCassandraDao.saveArtifact(any(ESArtifactData.class)))
1569 .thenReturn(CassandraOperationStatus.OK);
1570 when(toscaOperationFacade.getToscaElement(anyString()))
1571 .thenReturn(Either.left(resource));
1572 when(interfaceOperation.updateInterfaces(anyString(), anyList()))
1573 .thenReturn(Either.left(interfaceDefinitionsList));
1575 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(), ComponentTypeEnum.RESOURCE_INSTANCE
1576 , operationInfo, artifactDefinition.getUniqueId(), artifactDefinition, requestMd5, "data", "iuuid",
1577 "ouuid", componentId, "resources");
1579 Assert.assertTrue(result.isLeft());
1580 Either<ArtifactDefinition, Operation> leftResult = result.left().value();
1581 assertTrue(leftResult.isLeft());
1582 ArtifactDefinition leftValue = leftResult.left().value();
1583 assertEquals(artifactDefinition.getArtifactName(), leftValue.getArtifactName());
1587 public void testGenerateToscaArtifact() {
1589 Resource resource = new Resource();
1590 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1591 resource.setUniqueId("resourceId");
1593 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1594 artifactDefinition.setUniqueId("artifactId");
1595 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_CSAR.name());
1596 User user = new User();
1597 boolean inCertificationRequest = false;
1598 boolean fetchTemplatesFromDB = false;
1599 boolean shouldLock = false;
1600 boolean inTransaction = false;
1602 byte[] csar = "test.csar".getBytes();
1604 when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1605 .thenReturn(Either.left(csar));
1606 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), anyString(), anyString(), any(NodeTypeEnum.class), anyString()))
1607 .thenReturn(Either.left(artifactDefinition));
1608 when(artifactCassandraDao.saveArtifact(any(ESArtifactData.class)))
1609 .thenReturn(CassandraOperationStatus.OK);
1611 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result
1612 = artifactBL.generateAndSaveToscaArtifact(artifactDefinition, resource, user, inCertificationRequest,
1613 shouldLock, inTransaction, fetchTemplatesFromDB);
1615 Assert.assertTrue(result.isLeft());
1616 Either<ArtifactDefinition, Operation> leftResult = result.left().value();
1618 Assert.assertEquals(artifactDefinition.getUniqueId(), leftResult.left().value().getUniqueId());
1622 public void testHandleDownloadToscaModelRequest() {
1623 ArtifactsBusinessLogic testSubject = getTestSubject();
1624 byte[] generatedCsar = "test.csar".getBytes();
1626 Resource resource = new Resource();
1627 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1629 ArtifactDefinition csarArtifact = new ArtifactDefinition();
1630 csarArtifact.setArtifactName("csarArtifact");
1631 csarArtifact.setArtifactType(ArtifactTypeEnum.HEAT_ENV.name());
1632 csarArtifact.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1634 when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1635 .thenReturn(Either.left(generatedCsar));
1637 Either<ImmutablePair<String, byte[]>, ResponseFormat> result =
1638 testSubject.handleDownloadToscaModelRequest(resource, csarArtifact);
1640 ImmutablePair<String, byte[]> leftResult = result.left().value();
1641 assertEquals(csarArtifact.getArtifactName(), leftResult.getKey());
1645 public void testHandleDownloadRequestById_returnsSuccessful() {
1646 String componentId = "componentId";
1647 String artifactId = "artifactId";
1648 String parentId = "parentId";
1650 ESArtifactData esArtifactData = new ESArtifactData();
1651 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1652 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1653 Operation operation = new Operation();
1654 operation.setUniqueId("op1");
1656 artifactDefinition.setArtifactName("test.csar");
1657 artifactDefinition.setArtifactType(ComponentTypeEnum.RESOURCE.name());
1658 artifactDefinition.setArtifactType(ArtifactTypeEnum.HEAT.name());
1659 artifactDefinition.setUniqueId(artifactId);
1660 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1662 esArtifactData.setDataAsArray("data".getBytes());
1664 Resource resource = new Resource();
1665 resource.setUniqueId("resourceId");
1666 resource.setAbstract(false);
1668 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1669 Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
1670 interfaceDefinitionMap.put("interDef1", interfaceDefinition);
1672 artifactDefinitionMap.put("artifact1", artifactDefinition);
1674 resource.setDeploymentArtifacts(artifactDefinitionMap);
1676 User user = new User();
1677 user.setUserId("userId");
1679 when(userValidations.validateUserExists(eq(user.getUserId()), any(), anyBoolean()))
1681 when(toscaOperationFacade.getToscaFullElement(eq(componentId)))
1682 .thenReturn(Either.left(resource));
1683 when(artifactToscaOperation.getArtifactById(anyString(), anyString(), any(ComponentTypeEnum.class), anyString()))
1684 .thenReturn(Either.left(artifactDefinition));
1685 when(artifactCassandraDao.getArtifact(any()))
1686 .thenReturn(Either.left(esArtifactData));
1688 Either<ImmutablePair<String, byte[]>, ResponseFormat> result =
1689 artifactBL.handleDownloadRequestById(componentId, artifactId, user.getUserId(), ComponentTypeEnum.RESOURCE,
1691 ImmutablePair<String, byte[]> leftResult = result.left().value();
1692 Assert.assertEquals(artifactDefinition.getArtifactName(), leftResult.getKey());
1696 public void testHandleDownloadRequestById_givenUserIdIsNull_thenReturnsError() {
1697 String componentId = "componentId";
1698 String userId = null;
1699 String artifactId = "artifactId";
1701 Either<ImmutablePair<String, byte[]>, ResponseFormat> result =
1702 artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId
1704 Assert.assertTrue(result.isRight());
1708 public void testHandleGetArtifactByType_returnsSuccessful() {
1709 String parentId = "parentId";
1710 String componentId = "componentId";
1711 String artifactGroupType = ArtifactGroupTypeEnum.OTHER.name();
1712 String userId = "userId";
1714 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1715 artifactDefinition.setArtifactName("test.csar");
1717 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1718 artifactDefinitionMap.put("artifact1", artifactDefinition);
1720 Service service = new Service();
1721 service.setUniqueId(componentId);
1723 when(toscaOperationFacade.getToscaElement(eq(componentId), any(ComponentParametersView.class)))
1724 .thenReturn(Either.left(service));
1725 when(graphLockOperation.lockComponent(eq(componentId), any(NodeTypeEnum.class)))
1726 .thenReturn(StorageOperationStatus.OK);
1727 when(artifactToscaOperation.getArtifacts(any(), any(NodeTypeEnum.class), any(ArtifactGroupTypeEnum.class), any()))
1728 .thenReturn(Either.left(artifactDefinitionMap));
1730 Either<Map<String, ArtifactDefinition>, ResponseFormat> result =
1731 artifactBL.handleGetArtifactsByType(ComponentTypeEnum.SERVICE.name(), parentId, ComponentTypeEnum.SERVICE,
1732 componentId, artifactGroupType, userId);
1733 Map<String, ArtifactDefinition> leftResult = result.left().value();
1734 Assert.assertEquals(artifactDefinition.getArtifactName(), leftResult.get("artifact1").getArtifactName());
1738 public void testGetDeployment_returnsSuccessful() {
1740 Resource resource = new Resource();
1741 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1742 ComponentInstance componentInstance = new ComponentInstance();
1743 NodeTypeEnum parentType = NodeTypeEnum.ResourceInstance;
1744 String ciId = "ciId";
1746 artifactDefinition.setArtifactName("test.csar");
1747 componentInstance.setUniqueId(ciId);
1748 List<ComponentInstance> componentInstanceList = new ArrayList<>();
1749 componentInstanceList.add(componentInstance);
1751 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
1752 deploymentArtifacts.put("test.csar", artifactDefinition);
1754 resource.setDeploymentArtifacts(deploymentArtifacts);
1755 resource.setComponentInstances(componentInstanceList);
1756 componentInstance.setDeploymentArtifacts(deploymentArtifacts);
1758 List<ArtifactDefinition> result = artifactBL.getDeploymentArtifacts(resource, parentType, ciId);
1759 Assert.assertTrue(result.size() == 1);
1760 Assert.assertEquals(artifactDefinition.getArtifactName(), result.get(0).getArtifactName());
1764 public void testHandleDelete_returnsSuccessful() {
1766 String parentId = "parentId";
1767 String artifactId = "artifactId";
1768 AuditingActionEnum auditingAction = AuditingActionEnum.ARTIFACT_DELETE;
1769 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1770 Resource resource = new Resource();
1771 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1772 boolean shouldUnlock = true;
1773 boolean inTransaction = false;
1774 User user = new User();
1776 artifactDefinition.setArtifactName("test.csar");
1777 artifactDefinition.setUniqueId(artifactId);
1778 artifactDefinition.setEsId("esId");
1780 ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
1782 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
1783 deploymentArtifacts.put(artifactId, artifactDefinition);
1785 resource.setUniqueId(parentId);
1786 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1787 resource.setDeploymentArtifacts(deploymentArtifacts);
1789 when(graphLockOperation.lockComponent(eq(parentId), any(NodeTypeEnum.class)))
1790 .thenReturn(StorageOperationStatus.OK);
1791 when(toscaOperationFacade.getToscaElement(eq(parentId)))
1792 .thenReturn(Either.left(resource));
1793 when(artifactToscaOperation.isCloneNeeded(any(), any(ArtifactDefinition.class), any(NodeTypeEnum.class)))
1794 .thenReturn(Either.left(Boolean.FALSE));
1795 when(artifactToscaOperation.removeArtifactOnGraph(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class), anyBoolean()))
1796 .thenReturn(Either.left(artifactDataDefinition));
1797 when(artifactCassandraDao.deleteArtifact(any()))
1798 .thenReturn(CassandraOperationStatus.OK);
1800 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result = artifactBL.handleDelete(parentId, artifactId, user, auditingAction, componentType, resource, shouldUnlock, inTransaction);
1801 Either<ArtifactDefinition, Operation> leftValue = result.left().value();
1802 Assert.assertEquals(artifactDefinition.getArtifactName(), leftValue.left().value().getArtifactName());
1806 public void testDownloadRsrcArtifactByNames_givenServiceNameNull_thenReturnsError() {
1807 String serviceName = null;
1808 String serviceVersion = "2.0";
1809 String resourceName = "resource";
1810 String resourceVersion = "1.0";
1811 String artifactName = "artifactName";
1812 ResponseFormat responseFormat = new ResponseFormat();
1813 responseFormat.setStatus(007);
1815 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_CONTENT)))
1816 .thenReturn(responseFormat);
1817 Either<byte[], ResponseFormat> result = artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName);
1818 assertEquals(responseFormat.getStatus(), result.right().value().getStatus());
1822 public void testDownloadRsrcArtifactByNames_returnsSuccessful() {
1824 String serviceName = "service1";
1825 String resourceName = "resource1";
1826 String artifactName = "artifact1";
1827 String version = "1.0";
1829 Resource resource = new Resource();
1830 resource.setName(resourceName);
1831 resource.setVersion(version);
1833 Service service = new Service();
1834 service.setVersion(version);
1835 service.setName(serviceName);
1837 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1838 artifactDefinition.setEsId("esId");
1840 ESArtifactData esArtifactData = new ESArtifactData();
1841 esArtifactData.setDataAsArray("test".getBytes());
1843 artifactDefinition.setArtifactName(artifactName);
1844 List<Service> serviceList = new ArrayList<>();
1845 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
1846 artifacts.put(artifactName, artifactDefinition);
1848 serviceList.add(service);
1849 resource.setDeploymentArtifacts(artifacts);
1851 when(toscaOperationFacade.getComponentByNameAndVersion(eq(ComponentTypeEnum.RESOURCE), eq(resourceName), eq(version), eq(JsonParseFlagEnum.ParseMetadata)))
1852 .thenReturn(Either.left(resource));
1853 doReturn(Either.left(serviceList)).when(toscaOperationFacade).getBySystemName(eq(ComponentTypeEnum.SERVICE), eq(serviceName));
1854 when(artifactCassandraDao.getArtifact(any()))
1855 .thenReturn(Either.left(esArtifactData));
1857 Either<byte[], ResponseFormat> result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName);
1858 byte[] data = result.left().value();
1859 Assert.assertEquals(esArtifactData.getDataAsArray(), data);
1862 private ArtifactsBusinessLogic getTestSubject() {
1863 return new ArtifactsBusinessLogic(artifactCassandraDao, toscaExportHandler, csarUtils, lifecycleBusinessLogic,
1864 userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation, groupTypeOperation,
1865 interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);