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.junit.runner.RunWith;
40 import org.mockito.InjectMocks;
41 import org.mockito.Mock;
42 import org.mockito.Mockito;
43 import org.mockito.MockitoAnnotations;
44 import org.mockito.junit.MockitoJUnitRunner;
45 import org.openecomp.sdc.be.MockGenerator;
46 import org.openecomp.sdc.be.components.ArtifactsResolver;
47 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationEnum;
48 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo;
49 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
50 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
51 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
52 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
53 import org.openecomp.sdc.be.components.validation.UserValidations;
54 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
55 import org.openecomp.sdc.be.config.ConfigurationManager;
56 import org.openecomp.sdc.be.dao.api.ActionStatus;
57 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
58 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
59 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
60 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
61 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
62 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
63 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
64 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
65 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
66 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
67 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
68 import org.openecomp.sdc.be.impl.ComponentsUtils;
69 import org.openecomp.sdc.be.info.ArtifactTemplateInfo;
70 import org.openecomp.sdc.be.model.ArtifactDefinition;
71 import org.openecomp.sdc.be.model.ArtifactType;
72 import org.openecomp.sdc.be.model.Component;
73 import org.openecomp.sdc.be.model.ComponentInstance;
74 import org.openecomp.sdc.be.model.ComponentParametersView;
75 import org.openecomp.sdc.be.model.DataTypeDefinition;
76 import org.openecomp.sdc.be.model.GroupDefinition;
77 import org.openecomp.sdc.be.model.GroupInstance;
78 import org.openecomp.sdc.be.model.HeatParameterDefinition;
79 import org.openecomp.sdc.be.model.InterfaceDefinition;
80 import org.openecomp.sdc.be.model.LifecycleStateEnum;
81 import org.openecomp.sdc.be.model.Operation;
82 import org.openecomp.sdc.be.model.Resource;
83 import org.openecomp.sdc.be.model.ResourceMetadataDefinition;
84 import org.openecomp.sdc.be.model.Service;
85 import org.openecomp.sdc.be.model.User;
86 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
87 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
88 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
89 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
90 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
91 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
92 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
93 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
94 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
95 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
96 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
97 import org.openecomp.sdc.be.servlets.RepresentationUtils;
98 import org.openecomp.sdc.be.tosca.CsarUtils;
99 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
100 import org.openecomp.sdc.be.user.Role;
101 import org.openecomp.sdc.be.user.UserBusinessLogic;
102 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
103 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
104 import org.openecomp.sdc.common.datastructure.Wrapper;
105 import org.openecomp.sdc.common.util.GeneralUtility;
106 import org.openecomp.sdc.exception.ResponseFormat;
108 import java.io.IOException;
109 import java.util.ArrayList;
110 import java.util.Arrays;
111 import java.util.Collections;
112 import java.util.HashMap;
113 import java.util.List;
114 import java.util.Map;
116 import static org.assertj.core.api.Assertions.assertThat;
117 import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
118 import static org.junit.Assert.assertArrayEquals;
119 import static org.junit.Assert.assertEquals;
120 import static org.junit.Assert.assertNull;
121 import static org.junit.Assert.assertTrue;
122 import static org.junit.Assert.fail;
123 import static org.mockito.ArgumentMatchers.any;
124 import static org.mockito.ArgumentMatchers.anyBoolean;
125 import static org.mockito.ArgumentMatchers.anyList;
126 import static org.mockito.ArgumentMatchers.anyString;
127 import static org.mockito.ArgumentMatchers.eq;
128 import static org.mockito.Mockito.doReturn;
129 import static org.mockito.Mockito.times;
130 import static org.mockito.Mockito.verify;
131 import static org.mockito.Mockito.when;
132 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
133 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
135 @RunWith(MockitoJUnitRunner.Silent.class)
136 public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{
138 private static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN",
139 System.currentTimeMillis());
140 private static final String RESOURCE_INSTANCE_NAME = "Service-111";
141 private static final String INSTANCE_ID = "S-123-444-ghghghg";
143 private static final String ARTIFACT_NAME = "service-Myservice-template.yml";
144 private static final String ARTIFACT_LABEL = "assettoscatemplate";
145 private static final String ES_ARTIFACT_ID = "123123dfgdfgd0";
146 private static final byte[] PAYLOAD = "some payload".getBytes();
147 private static final String RESOURCE_NAME = "My-Resource_Name with space";
148 private static final String RESOURCE_CATEGORY1 = "Network Layer 2-3";
149 private static final String RESOURCE_SUBCATEGORY = "Router";
150 public static final String RESOURCE_CATEGORY = "Network Layer 2-3/Router";
151 public static final Resource resource = Mockito.mock(Resource.class);
154 private ArtifactsBusinessLogic artifactBL;
155 private static User user = null;
156 private static Resource resourceResponse = null;
157 private static ResponseFormatManager responseManager = null;
158 final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
160 public ComponentsUtils componentsUtils;
162 public ToscaOperationFacade toscaOperationFacade;
163 JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
165 JanusGraphDao janusGraphDao;
167 private UserBusinessLogic userBusinessLogic;
169 private ArtifactOperation artifactOperation;
171 private IInterfaceLifecycleOperation lifecycleOperation;
173 private UserAdminOperation userOperation;
175 private IElementOperation elementOperation;
177 private ArtifactCassandraDao artifactCassandraDao;
179 private NodeTemplateOperation nodeTemplateOperation;
181 private IGraphLockOperation graphLockOperation;
183 private UserValidations userValidations;
185 private ArtifactsResolver artifactsResolver;
187 private CsarUtils csarUtils;
189 private ToscaExportHandler toscaExportHandler;
191 private LifecycleBusinessLogic lifecycleBusinessLogic;
192 private Gson gson = new GsonBuilder().setPrettyPrinting().create();
194 private static List<ArtifactType> getAllTypes() {
195 List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>();
196 List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration()
198 for (String artifactType : artifactTypesList) {
199 ArtifactType artifactT = new ArtifactType();
200 artifactT.setName(artifactType);
201 artifactTypes.add(artifactT);
203 return artifactTypes;
207 public void initMocks() {
208 MockitoAnnotations.initMocks(this);
209 Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either
210 .right(StorageOperationStatus.NOT_FOUND);
212 Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either
213 .right(StorageOperationStatus.NOT_FOUND);
214 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean()))
215 .thenReturn(NotFoundResult2);
216 when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean()))
217 .thenReturn(NotFoundResult2);
219 Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either
220 .right(StorageOperationStatus.NOT_FOUND);
221 when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean()))
222 .thenReturn(notFoundInterfaces);
224 when(userOperation.getUserData("jh0003", false)).thenReturn(Either.left(USER));
226 Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
227 when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
229 when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
231 // User data and management
233 user.setUserId("jh0003");
234 user.setFirstName("Jimmi");
235 user.setLastName("Hendrix");
236 user.setRole(Role.ADMIN.name());
239 resourceResponse = createResourceObject(true);
240 Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse);
241 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
242 when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK);
243 Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>();
244 when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
245 when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
247 Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
248 .right(StorageOperationStatus.BAD_REQUEST);
249 when(toscaOperationFacade.getToscaElement(resourceResponse.getUniqueId()))
250 .thenReturn(resourceStorageOperationStatusEither);
254 public void testValidJson() {
255 ArtifactDefinition ad = createArtifactDef();
257 String jsonArtifact = "";
259 ObjectMapper mapper = new ObjectMapper();
260 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
261 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
262 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
265 jsonArtifact = mapper.writeValueAsString(ad);
266 } catch (IOException e) {
267 // TODO Auto-generated catch block
271 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact,
272 ArtifactDefinition.class, false);
273 assertEquals(ad, afterConvert);
276 private ArtifactDefinition createArtifactDef() {
277 ArtifactDefinition ad = new ArtifactDefinition();
278 ad.setArtifactName("artifact1.yaml");
279 ad.setArtifactLabel("label1");
280 ad.setDescription("description");
281 ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
282 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
283 ad.setCreationDate(System.currentTimeMillis());
284 ad.setMandatory(false);
289 private Resource createResourceObject(boolean afterCreate) {
290 Resource resource = new Resource();
291 resource.setName(RESOURCE_NAME);
292 resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
293 resource.setDescription("My short description");
294 List<String> tgs = new ArrayList<String>();
296 tgs.add(resource.getName());
297 resource.setTags(tgs);
298 List<String> template = new ArrayList<String>();
299 template.add("Root");
300 resource.setDerivedFrom(template);
301 resource.setVendorName("Motorola");
302 resource.setVendorRelease("1.0.0");
303 resource.setContactId("ya5467");
304 resource.setIcon("MyIcon");
307 resource.setName(resource.getName());
308 resource.setVersion("0.1");
309 resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
310 resource.setCreatorUserId(user.getUserId());
311 resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
312 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
318 public void testUpdateCIDeploymentArtifactTimeout() {
319 ArtifactDefinition heatArtifact = new ArtifactDefinition();
320 ArtifactDefinition envArtifact = new ArtifactDefinition();
321 ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
322 ComponentInstance ci = new ComponentInstance();
323 ci.setUniqueId("ciid");
324 ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
325 GroupInstance groupInstance = new GroupInstance();
326 groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
327 groupInstance.setCustomizationUUID("custUid");
328 groupInstance.setUniqueId("guid");
329 List<GroupInstance> groupInstances = new ArrayList<>();
330 groupInstances.addAll(Arrays.asList(groupInstance));
331 ci.setGroupInstances(groupInstances);
332 Service service = new Service();
333 service.setComponentInstances(Collections.singletonList(ci));
334 service.setUniqueId("suid");
336 when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
337 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
338 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
339 .thenReturn(StorageOperationStatus.OK);
340 when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
341 .thenReturn(Either.left(new ArrayList()));
342 when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
343 .thenReturn(StorageOperationStatus.OK);
344 artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
345 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
346 assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(envArtifact.getTimeout());
347 assertThat(ci.getDeploymentArtifacts().get("HEAT_ENV").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
351 public void testUpdateCIDeploymentTimeout_invalidTimeout() {
352 ArtifactDefinition heatArtifact = new ArtifactDefinition();
353 ArtifactDefinition envArtifact = new ArtifactDefinition();
354 ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
355 ComponentInstance ci = new ComponentInstance();
356 ci.setUniqueId("ciid");
357 ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
358 GroupInstance groupInstance = new GroupInstance();
359 groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
360 groupInstance.setCustomizationUUID("custUid");
361 groupInstance.setUniqueId("guid");
362 List<GroupInstance> groupInstances = new ArrayList<>();
363 groupInstances.addAll(Arrays.asList(groupInstance));
364 ci.setGroupInstances(groupInstances);
365 Service service = new Service();
366 service.setComponentInstances(Collections.singletonList(ci));
367 service.setUniqueId("suid");
368 envArtifact.setTimeout(130);
370 when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
371 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
372 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
373 .thenReturn(StorageOperationStatus.OK);
374 when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
375 .thenReturn(Either.left(new ArrayList()));
376 when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
377 .thenReturn(StorageOperationStatus.OK);
379 artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
380 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
381 } catch (ComponentException exp) {
382 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
389 public void testUpdateCIDeploymentTimeout_negativeTimeout() {
390 ArtifactDefinition heatArtifact = new ArtifactDefinition();
391 ArtifactDefinition envArtifact = new ArtifactDefinition();
392 ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
393 ComponentInstance ci = new ComponentInstance();
394 ci.setUniqueId("ciid");
395 ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
396 GroupInstance groupInstance = new GroupInstance();
397 groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
398 groupInstance.setCustomizationUUID("custUid");
399 groupInstance.setUniqueId("guid");
400 List<GroupInstance> groupInstances = new ArrayList<>();
401 groupInstances.addAll(Arrays.asList(groupInstance));
402 ci.setGroupInstances(groupInstances);
403 Service service = new Service();
404 service.setComponentInstances(Collections.singletonList(ci));
405 service.setUniqueId("suid");
406 envArtifact.setTimeout(-1);
408 when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
409 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
410 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
411 .thenReturn(StorageOperationStatus.OK);
412 when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
413 .thenReturn(Either.left(new ArrayList()));
414 when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
415 .thenReturn(StorageOperationStatus.OK);
417 artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
418 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
419 } catch (ComponentException exp) {
420 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
427 public void testUpdateCIDeploymentArtifactTimeout_noUpdate() {
428 ArtifactDefinition heatArtifact = new ArtifactDefinition();
429 ArtifactDefinition envArtifact = new ArtifactDefinition();
430 ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
431 ComponentInstance ci = new ComponentInstance();
432 ci.setUniqueId("ciid");
433 ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
434 envArtifact.setTimeout(heatArtifact.getTimeout());
435 GroupInstance groupInstance = new GroupInstance();
436 groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
437 groupInstance.setCustomizationUUID("custUid");
438 groupInstance.setUniqueId("guid");
439 List<GroupInstance> groupInstances = new ArrayList<>();
440 groupInstances.addAll(Arrays.asList(groupInstance));
441 ci.setGroupInstances(groupInstances);
442 Service service = new Service();
443 service.setComponentInstances(Collections.singletonList(ci));
444 service.setUniqueId("suid");
446 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
447 .thenReturn(StorageOperationStatus.OK);
448 when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
449 .thenReturn(Either.left(new ArrayList()));
450 artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
451 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
452 assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
456 public void testUpdateCIDeploymentArtifactTimeout_nonExistingArtifact() {
457 ArtifactDefinition heatArtifact = new ArtifactDefinition();
458 ArtifactDefinition envArtifact = new ArtifactDefinition();
459 ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
460 envArtifact.setTimeout(heatArtifact.getTimeout());
461 envArtifact.setArtifactType("HEAT_ENV");
462 envArtifact.setGeneratedFromId("uid1");
463 ComponentInstance ci = new ComponentInstance();
464 ci.setUniqueId("ciid");
465 ci.setDeploymentArtifacts(new HashMap<>());
466 Service service = new Service();
467 service.setComponentInstances(Collections.singletonList(ci));
468 service.setUniqueId("suid");
470 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
471 .thenReturn(StorageOperationStatus.OK);
472 when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
473 .thenReturn(Either.left(new ArrayList()));
474 assertThatThrownBy(() -> {
475 artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
476 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
477 }).isInstanceOf(ComponentException.class);
481 public void testUpdateCIDeploymentArtifactTimeout_invalidArtifactType() {
482 ArtifactDefinition envArtifact = new ArtifactDefinition();
483 envArtifact.setArtifactType("invalid");
486 artifactBL.handleUpdate("uid", ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
487 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, null, true);
489 } catch(ComponentException exp) {
490 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_TYPE_NOT_SUPPORTED);
491 assertThat(exp.getParams()[0]).isEqualTo("invalid");
495 private Map<String, ArtifactDefinition> fillDeploymentArtifacts(ArtifactDefinition heatArtifact, ArtifactDefinition envArtifact, ArtifactDefinition origEnvArtifact) {
496 heatArtifact.setArtifactType("HEAT");
497 heatArtifact.setTimeout(60);
498 heatArtifact.setEsId("es");
499 heatArtifact.setArtifactUUID("uuid1");
500 heatArtifact.setUniqueId("uid1");
501 envArtifact.setArtifactUUID("uuid2");
502 envArtifact.setArtifactType("HEAT_ENV");
503 envArtifact.setTimeout(30);
504 envArtifact.setGenerated(true);
505 envArtifact.setGeneratedFromId("uid1");
506 envArtifact.setUniqueId("uid2");
507 origEnvArtifact.setUniqueId("uid2");
508 origEnvArtifact.setGeneratedFromId("uid1");
509 origEnvArtifact.setArtifactType("HEAT_ENV");
510 origEnvArtifact.setTimeout(60);
511 origEnvArtifact.setGenerated(true);
512 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
513 deploymentArtifacts.put(heatArtifact.getArtifactType(), heatArtifact);
514 //deploymentArtifacts.put(envArtifact.getArtifactType(), envArtifact);
515 deploymentArtifacts.put(envArtifact.getArtifactType(), origEnvArtifact);
516 return deploymentArtifacts;
520 public void testInvalidStringGroupType() {
521 ArtifactDefinition ad = new ArtifactDefinition();
522 ad.setArtifactName("artifact1");
523 ad.setCreationDate(System.currentTimeMillis());
524 ad.setMandatory(false);
527 JsonElement jsonArtifact = gson.toJsonTree(ad);
528 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
529 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
530 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
531 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
533 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
534 ArtifactDefinition.class, false);
535 assertNull(afterConvert);
539 public void testUpdateArtifactWithEmptyBody() {
541 RepresentationUtils.convertJsonToArtifactDefinition("", ArtifactDefinition.class, true);
543 } catch (ComponentException exp) {
544 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_BODY);
549 public void testInvalidNumberGroupType() {
550 ArtifactDefinition ad = new ArtifactDefinition();
551 ad.setArtifactName("artifact1");
552 ad.setCreationDate(System.currentTimeMillis());
553 ad.setMandatory(false);
556 JsonElement jsonArtifact = gson.toJsonTree(ad);
557 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
558 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
559 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
560 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
562 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
563 ArtifactDefinition.class, false);
564 assertNull(afterConvert);
568 public void testMissingArtifactTypeValue() {
569 ArtifactDefinition ad = new ArtifactDefinition();
571 JsonElement jsonArtifact = gson.toJsonTree(ad);
572 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
573 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
574 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
575 jsonArtifact.getAsJsonObject().add("artifactType", null);
577 RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
578 ArtifactDefinition.class, true);
580 } catch (ComponentException exp) {
581 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MANDATORY_PROPERTY_MISSING_VALUE);
582 assertThat(exp.getParams()[0]).isEqualTo("artifactType");
587 public void testMissingArtifactLabel() {
588 ArtifactDefinition ad = new ArtifactDefinition();
590 JsonElement jsonArtifact = gson.toJsonTree(ad);
591 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
592 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
593 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
596 RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
597 ArtifactDefinition.class, false);
599 } catch (ComponentException exp) {
600 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
601 assertThat(exp.getParams()[0]).isEqualTo("artifactLabel");
606 public void testMissingArtifactTimeout() {
607 ArtifactDefinition ad = new ArtifactDefinition();
609 JsonElement jsonArtifact = gson.toJsonTree(ad);
610 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
611 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
612 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
615 RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
616 ArtifactDefinition.class, true);
618 } catch (ComponentException exp) {
619 assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
620 assertThat(exp.getParams()[0]).isEqualTo("timeout");
626 public void testInvalidGroupTypeWithSpace() {
627 ArtifactDefinition ad = new ArtifactDefinition();
628 ad.setArtifactName("artifact1");
629 ad.setCreationDate(System.currentTimeMillis());
630 ad.setMandatory(false);
633 JsonElement jsonArtifact = gson.toJsonTree(ad);
634 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
635 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
636 jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
637 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
639 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
640 ArtifactDefinition.class, false);
641 assertNull(afterConvert);
645 public void testInvalidTimeoutWithSpace() {
646 ArtifactDefinition ad = new ArtifactDefinition();
647 ad.setArtifactName("artifact1");
648 ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
649 ad.setCreationDate(System.currentTimeMillis());
650 ad.setMandatory(false);
652 JsonElement jsonArtifact = gson.toJsonTree(ad);
653 jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
654 jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
655 jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
656 jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
658 ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
659 ArtifactDefinition.class, true);
660 assertNull(afterConvert);
664 public void testValidMibAritactsConfiguration() {
665 Map<String, ArtifactTypeConfig> componentDeploymentArtifacts = ConfigurationManager.getConfigurationManager()
666 .getConfiguration().getResourceDeploymentArtifacts();
667 Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts = ConfigurationManager
668 .getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
669 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
670 assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
671 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
672 assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
676 public void testDownloadServiceArtifactByNames() {
677 Service service = new Service();
678 String serviceName = "myService";
679 String serviceVersion = "1.0";
680 String serviceId = "serviceId";
681 service.setName(serviceName);
682 service.setVersion(serviceVersion);
683 service.setUniqueId(serviceId);
685 String artifactName = "service-Myservice-template.yml";
686 String artifactLabel = "assettoscatemplate";
687 String esArtifactId = "123123dfgdfgd0";
688 byte[] payload = "some payload".getBytes();
689 ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
690 toscaTemplateArtifact.setArtifactName(artifactName);
691 toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
692 toscaTemplateArtifact.setArtifactLabel(artifactLabel);
693 toscaTemplateArtifact.setEsId(esArtifactId);
694 toscaTemplateArtifact.setPayload(payload);
696 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
697 toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
698 service.setToscaArtifacts(toscaArtifacts);
700 DAOArtifactData DAOArtifactData = new DAOArtifactData(esArtifactId);
701 DAOArtifactData.setDataAsArray(payload);
702 Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
703 when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
704 List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
705 serviceList.add(service);
706 Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either
708 when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
709 byte[] downloadServiceArtifactByNamesRes = artifactBL
710 .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
711 assertTrue(downloadServiceArtifactByNamesRes != null
712 && downloadServiceArtifactByNamesRes.length == payload.length);
716 public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
717 ArtifactDefinition heatArtifact = new ArtifactBuilder()
718 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
719 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2")).build();
721 Resource component = new Resource();
722 component.setComponentType(ComponentTypeEnum.RESOURCE);
723 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
724 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
725 eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
726 .thenReturn(Either.left(new ArtifactDefinition()));
727 ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
728 new ArrayList<>(), heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component,
729 Collections.emptyMap());
730 assertNull(heatEnvPlaceHolder.getListHeatParameters());
734 public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal()
736 HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
737 HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
738 HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
739 ArtifactDefinition heatArtifact = new ArtifactBuilder().addHeatParam(heatParam1).addHeatParam(heatParam2)
740 .addHeatParam(heatParam3).build();
742 Resource component = new Resource();
744 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
745 when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
746 eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
747 .thenReturn(Either.left(new ArtifactDefinition()));
749 ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
750 new ArrayList<>(), heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component,
751 Collections.emptyMap());
753 ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder;
754 List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
755 assertEquals(listHeatParameters.size(), 3);
756 verifyHeatParam(listHeatParameters.get(0), heatParam1);
757 verifyHeatParam(listHeatParameters.get(1), heatParam2);
758 verifyHeatParam(listHeatParameters.get(2), heatParam3);
762 public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
763 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
764 artifactDefinition.setArtifactName(ARTIFACT_NAME);
765 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
766 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
767 artifactDefinition.setEsId(ES_ARTIFACT_ID);
768 artifactDefinition.setPayload(PAYLOAD);
769 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
771 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
772 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
773 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
774 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
775 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
776 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
777 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, true);
781 public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
782 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
783 artifactDefinition.setArtifactName(ARTIFACT_NAME);
784 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
785 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
786 artifactDefinition.setEsId(ES_ARTIFACT_ID);
787 artifactDefinition.setPayload(PAYLOAD);
788 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
790 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
791 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
792 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
793 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
794 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
795 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
796 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
797 verify(janusGraphDao, times(1)).commit();
800 private ArtifactDefinition buildArtifactPayload() {
801 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
802 artifactDefinition.setArtifactName(ARTIFACT_NAME);
803 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
804 artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
805 artifactDefinition.setEsId(ES_ARTIFACT_ID);
806 artifactDefinition.setPayload(PAYLOAD);
807 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
809 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
810 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
811 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
812 when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
813 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
814 artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
815 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
816 verify(janusGraphDao, times(1)).commit();
817 return artifactDefinition;
820 private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
821 assertEquals(heatEnvParam.getDefaultValue(), heatYamlParam.getCurrentValue());
822 assertNull(heatEnvParam.getCurrentValue());
825 //////////////////////////////////////////////////////////////////////////////////
826 //////////////////////////////////new tests///////////////////////////////////////
827 /////////////////////////////////////////////////////////////////////////////////
828 private ArtifactsBusinessLogic createTestSubject() {
829 return getTestSubject();
833 public void testBuildJsonStringForCsarVfcArtifact() throws Exception {
834 ArtifactsBusinessLogic testSubject;
835 ArtifactDefinition artifact = new ArtifactDefinition();
839 testSubject = createTestSubject();
840 result = Deencapsulation.invoke(testSubject, "buildJsonStringForCsarVfcArtifact", new Object[]{artifact});
844 public void testCheckArtifactInComponent() throws Exception {
845 ArtifactsBusinessLogic testSubject;
846 Component component = new Resource();
847 component.setComponentType(ComponentTypeEnum.RESOURCE);
848 String artifactId = "";
852 testSubject = createTestSubject();
853 result = Deencapsulation.invoke(testSubject, "checkArtifactInComponent",
854 new Object[]{component, artifactId});
859 public void testCheckCreateFields() throws Exception {
860 ArtifactsBusinessLogic testSubject;
862 ArtifactDefinition artifactInfo = buildArtifactPayload();
863 ArtifactGroupTypeEnum type = ArtifactGroupTypeEnum.DEPLOYMENT;
866 testSubject = createTestSubject();
867 Deencapsulation.invoke(testSubject, "checkCreateFields", user, artifactInfo, type);
871 public void testComposeArtifactId() throws Exception {
872 ArtifactsBusinessLogic testSubject;
873 String resourceId = "";
874 String artifactId = "";
875 ArtifactDefinition artifactInfo = buildArtifactPayload();
876 String interfaceName = "";
877 String operationName = "";
881 testSubject = createTestSubject();
882 result = Deencapsulation.invoke(testSubject, "composeArtifactId",
883 new Object[]{resourceId, artifactId, artifactInfo, interfaceName, operationName});
887 public void testConvertParentType() throws Exception {
888 ArtifactsBusinessLogic testSubject;
889 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
893 testSubject = createTestSubject();
894 result = Deencapsulation.invoke(testSubject, "convertParentType", new Object[]{componentType});
898 public void testConvertToOperation() throws Exception {
899 ArtifactsBusinessLogic testSubject;
900 ArtifactDefinition artifactInfo = buildArtifactPayload();
901 String operationName = "";
905 testSubject = createTestSubject();
906 result = Deencapsulation.invoke(testSubject, "convertToOperation",
907 new Object[]{artifactInfo, operationName});
911 public void testCreateInterfaceArtifactNameFromOperation() throws Exception {
912 ArtifactsBusinessLogic testSubject;
913 String operationName = "";
914 String artifactName = "";
918 testSubject = createTestSubject();
919 result = Deencapsulation.invoke(testSubject, "createInterfaceArtifactNameFromOperation",
920 new Object[]{operationName, artifactName});
924 public void testFetchArtifactsFromComponent() throws Exception {
925 ArtifactsBusinessLogic testSubject;
926 String artifactId = "";
927 Component component = createResourceObject(true);
928 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
931 testSubject = createTestSubject();
932 Deencapsulation.invoke(testSubject, "fetchArtifactsFromComponent",
933 artifactId, component, artifacts);
938 public void testValidateArtifact() throws Exception {
939 ArtifactsBusinessLogic testSubject;
940 String componentId = "";
941 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
942 ArtifactsBusinessLogic arb = getTestSubject();
943 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
944 String artifactId = "";
945 ArtifactDefinition artifactInfo = buildArtifactPayload();
946 AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
948 Component component = createResourceObject(true);
949 boolean shouldLock = false;
950 boolean inTransaction = false;
953 testSubject = createTestSubject();
954 testSubject.validateArtifact(componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, shouldLock, inTransaction);
958 public void testHandleHeatEnvDownload() throws Exception {
959 ArtifactsBusinessLogic testSubject;
960 String componentId = "";
961 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
963 Component component = createResourceObject(true);
964 ArtifactDefinition artifactInfo = buildArtifactPayload();
965 boolean shouldLock = false;
966 boolean inTransaction = false;
970 testSubject = createTestSubject();
971 testSubject.handleHeatEnvDownload(componentId, componentType, user, component, artifactInfo, shouldLock, inTransaction);
975 public void testArtifactGenerationRequired() throws Exception {
976 ArtifactsBusinessLogic testSubject;
977 Component component = createResourceObject(true);
978 ArtifactDefinition artifactInfo = buildArtifactPayload();
982 testSubject = createTestSubject();
983 result = Deencapsulation.invoke(testSubject, "artifactGenerationRequired",
984 new Object[]{component, artifactInfo});
988 public void testUpdateGroupForHeat() throws Exception {
989 ArtifactsBusinessLogic testSubject;
990 ArtifactDefinition artifactInfo = buildArtifactPayload();
991 ArtifactDefinition artAfterUpdate = null;
992 Component component = createResourceObject(true);
993 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
996 testSubject = createTestSubject();
997 testSubject.updateGroupForHeat(artifactInfo, artifactInfo, component);
1001 public void testUpdateGroupForHeat_1() throws Exception {
1002 ArtifactsBusinessLogic testSubject;
1003 ArtifactDefinition artifactInfo = buildArtifactPayload();
1004 Component component = createResourceObject(true);
1005 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1008 testSubject = createTestSubject();
1009 testSubject.updateGroupForHeat(artifactInfo, artifactInfo, artifactInfo,
1010 artifactInfo, component);
1015 public void testHandleAuditing() throws Exception {
1016 ArtifactsBusinessLogic testSubject;
1017 AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
1018 Component component = createResourceObject(true);
1019 String componentId = "";
1021 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1022 String prevArtifactUuid = "";
1023 String currentArtifactUuid = "";
1024 ResponseFormat responseFormat = new ResponseFormat();
1025 ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1026 String resourceInstanceName = "";
1029 testSubject = createTestSubject();
1030 testSubject.setComponentsUtils(MockGenerator.mockComponentUtils());
1031 testSubject.handleAuditing(auditingActionEnum, component, componentId, user, artifactDefinition,
1032 prevArtifactUuid, currentArtifactUuid, responseFormat, componentTypeEnum, resourceInstanceName);
1036 public void testIgnoreUnupdateableFieldsInUpdate() throws Exception {
1037 ArtifactsBusinessLogic testSubject;
1038 ArtifactsBusinessLogic arb = getTestSubject();
1039 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1040 ArtifactDefinition artifactInfo = buildArtifactPayload();
1041 ArtifactDefinition currentArtifactInfo = null;
1044 testSubject = createTestSubject();
1045 Deencapsulation.invoke(testSubject, "ignoreUnupdateableFieldsInUpdate",
1046 operation, artifactInfo, artifactInfo);
1050 public void testFindArtifactOnParentComponent() throws Exception {
1051 ArtifactsBusinessLogic testSubject;
1052 Component component = createResourceObject(true);
1053 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1054 String parentId = "";
1055 ArtifactsBusinessLogic arb = getTestSubject();
1056 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1057 String artifactId = "";
1058 Either<ArtifactDefinition, ResponseFormat> result;
1061 testSubject = createTestSubject();
1062 result = Deencapsulation.invoke(testSubject, "findArtifactOnParentComponent", new Object[]{component,
1063 componentType, parentId, operation, artifactId});
1068 public void testValidateInformationalArtifact() throws Exception {
1069 ArtifactsBusinessLogic testSubject;
1070 ArtifactDefinition artifactInfo = buildArtifactPayload();
1071 Component component = createResourceObject(true);
1072 Either<Boolean, ResponseFormat> result;
1075 testSubject = createTestSubject();
1076 result = Deencapsulation.invoke(testSubject, "validateInformationalArtifact",
1077 new Object[]{artifactInfo, component});
1082 public void testGetUpdatedGroups() throws Exception {
1083 ArtifactsBusinessLogic testSubject;
1084 String artifactId = "";
1085 ArtifactDefinition artifactInfo = buildArtifactPayload();
1086 List<GroupDefinition> groups = new ArrayList<>();
1087 List<GroupDataDefinition> result;
1090 testSubject = createTestSubject();
1091 result = Deencapsulation.invoke(testSubject, "getUpdatedGroups", new Object[]{artifactId, artifactInfo, groups});
1096 public void testGetUpdatedGroupInstances() throws Exception {
1097 ArtifactsBusinessLogic testSubject;
1098 String artifactId = "";
1099 ArtifactDefinition artifactInfo = buildArtifactPayload();
1100 List<GroupDefinition> groups = new ArrayList<>();
1101 List<GroupInstance> result;
1104 testSubject = createTestSubject();
1105 result = Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups});
1110 public void testFindArtifact_1() throws Exception {
1111 ArtifactsBusinessLogic testSubject;
1112 String artifactId = "";
1113 Component component = createResourceObject(true);
1114 String parentId = "";
1115 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1116 Either<ImmutablePair<ArtifactDefinition, ComponentInstance>, ActionStatus> result;
1119 testSubject = createTestSubject();
1120 result = Deencapsulation.invoke(testSubject, "findArtifact",
1121 new Object[]{artifactId, component, parentId, componentType});
1126 public void testFetchArtifactsFromInstance() throws Exception {
1127 ArtifactsBusinessLogic testSubject;
1128 String artifactId = "";
1129 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
1130 ComponentInstance instance = new ComponentInstance();
1134 testSubject = createTestSubject();
1135 Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", new Object[]{artifactId, artifacts, instance});
1140 public void testGenerateCustomizationUUIDOnInstance() throws Exception {
1141 ArtifactsBusinessLogic testSubject;
1142 String componentId = "";
1143 String instanceId = "";
1144 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1145 StorageOperationStatus result;
1148 testSubject = createTestSubject();
1149 result = Deencapsulation.invoke(testSubject, "generateCustomizationUUIDOnInstance",
1150 new Object[]{componentId, instanceId, componentType});
1155 public void testFindComponentInstance() throws Exception {
1156 ArtifactsBusinessLogic testSubject;
1157 String componentInstanceId = "";
1158 Component component = createResourceObject(true);
1159 ComponentInstance result;
1162 testSubject = createTestSubject();
1163 result = Deencapsulation.invoke(testSubject, "findComponentInstance",
1164 new Object[]{componentInstanceId, component});
1168 @Test(expected= ComponentException.class)
1169 public void testDeploymentArtifactTypeIsLegalForParent_shouldThrowException() throws Exception {
1170 ArtifactsBusinessLogic testSubject;
1171 ArtifactDefinition artifactInfo = buildArtifactPayload();
1172 ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
1173 Map<String, ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>();
1175 testSubject = createTestSubject();
1176 testSubject.validateDeploymentArtifactTypeIsLegalForParent(artifactInfo, artifactType, resourceDeploymentArtifacts);
1181 public void testFillDeploymentArtifactTypeConf() throws Exception {
1182 ArtifactsBusinessLogic testSubject;
1183 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1184 Map<String, ArtifactTypeConfig> result;
1187 testSubject = createTestSubject();
1188 result = Deencapsulation.invoke(testSubject, "fillDeploymentArtifactTypeConf",
1189 new Object[]{parentType});
1194 public void testValidateArtifactTypeExists() throws Exception {
1195 ArtifactsBusinessLogic testSubject;
1196 Wrapper<ResponseFormat> responseWrapper = null;
1197 ArtifactDefinition artifactInfo = buildArtifactPayload();
1200 testSubject = createTestSubject();
1201 testSubject.getValidArtifactType(artifactInfo);
1206 public void testGetDeploymentArtifactTypeConfig() throws Exception {
1207 ArtifactsBusinessLogic testSubject;
1208 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1209 ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
1210 ArtifactTypeConfig result;
1213 testSubject = createTestSubject();
1214 result = Deencapsulation.invoke(testSubject, "getDeploymentArtifactTypeConfig",
1215 new Object[]{parentType, artifactType});
1219 @Test(expected= ComponentException.class)
1220 public void testValidateHeatEnvDeploymentArtifact_shouldThrowException() throws Exception {
1221 ArtifactsBusinessLogic testSubject;
1222 Component component = createResourceObject(true);
1223 String parentId = "";
1224 ArtifactDefinition artifactInfo = buildArtifactPayload();
1225 NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1227 testSubject = createTestSubject();
1228 testSubject.validateHeatEnvDeploymentArtifact(component, parentId, artifactInfo, parentType);
1232 public void testFillArtifactPayloadValidation() throws Exception {
1233 ArtifactsBusinessLogic testSubject;
1234 Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
1235 Wrapper<byte[]> payloadWrapper = new Wrapper<>();
1236 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1239 testSubject = createTestSubject();
1240 testSubject.fillArtifactPayload(payloadWrapper, artifactDefinition);
1246 public void testIsValidXml() throws Exception {
1247 ArtifactsBusinessLogic testSubject;
1248 byte[] xmlToParse = new byte[]{' '};
1252 testSubject = createTestSubject();
1253 result = Deencapsulation.invoke(testSubject, "isValidXml", new Object[]{xmlToParse});
1257 public void testHeatTimeoutValue() throws Exception {
1258 ArtifactsBusinessLogic testSubject;
1259 boolean isCreate = false;
1260 ArtifactDefinition artifactInfo = buildArtifactPayload();
1261 ArtifactDefinition currentArtifact = null;
1262 Either<Boolean, ResponseFormat> result;
1265 testSubject = createTestSubject();
1266 testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo);
1270 public void testValidateHeatDeploymentArtifact() throws Exception {
1271 ArtifactsBusinessLogic testSubject;
1272 boolean isCreate = false;
1273 ArtifactDefinition artifactInfo = buildArtifactPayload();
1274 ArtifactDefinition currentArtifact = null;
1275 Either<Boolean, ResponseFormat> result;
1278 testSubject = createTestSubject();
1279 testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo);
1283 @Test(expected= ComponentException.class)
1284 public void testValidateResourceType_shouldThrowException() throws Exception {
1285 ArtifactsBusinessLogic testSubject;
1286 ResourceTypeEnum resourceType = ResourceTypeEnum.VF;
1287 ArtifactDefinition artifactInfo = buildArtifactPayload();
1288 List<String> typeList = new ArrayList<>();
1289 Either<Boolean, ResponseFormat> result;
1292 testSubject = createTestSubject();
1293 testSubject.validateResourceType(resourceType, artifactInfo, typeList);
1294 result = Deencapsulation.invoke(testSubject, "validateResourceType", new Object[]{resourceType, artifactInfo, typeList});
1299 public void testValidateAndConvertHeatParameters() throws Exception {
1300 ArtifactsBusinessLogic testSubject;
1301 ArtifactDefinition artifactInfo = buildArtifactPayload();
1302 String artifactType = "";
1303 Either<ArtifactDefinition, ResponseFormat> result;
1306 testSubject = createTestSubject();
1307 testSubject.validateAndConvertHeatParameters(artifactInfo, artifactType);
1311 public void testGetDeploymentArtifacts() throws Exception {
1312 ArtifactsBusinessLogic testSubject;
1313 Component component = createResourceObject(true);
1314 NodeTypeEnum parentType = null;
1316 List<ArtifactDefinition> result;
1319 testSubject = createTestSubject();
1320 result = testSubject.getDeploymentArtifacts(component, parentType, ciId);
1325 public void testValidateFirstUpdateHasPayload() throws Exception {
1326 ArtifactsBusinessLogic testSubject;
1327 ArtifactDefinition artifactInfo = buildArtifactPayload();
1328 ArtifactDefinition currentArtifact = null;
1329 Either<Boolean, ResponseFormat> result;
1332 testSubject = createTestSubject();
1333 result = Deencapsulation.invoke(testSubject, "validateFirstUpdateHasPayload",
1334 new Object[]{artifactInfo, artifactInfo});
1338 public void testValidateAndSetArtifactname() throws Exception {
1339 ArtifactsBusinessLogic testSubject;
1340 ArtifactDefinition artifactInfo = buildArtifactPayload();
1341 Either<Boolean, ResponseFormat> result;
1344 testSubject = createTestSubject();
1345 testSubject.validateAndSetArtifactName(artifactInfo);
1349 public void testValidateArtifactTypeNotChanged() throws Exception {
1350 ArtifactsBusinessLogic testSubject;
1351 ArtifactDefinition artifactInfo = buildArtifactPayload();
1352 ArtifactDefinition currentArtifact = null;
1353 Either<Boolean, ResponseFormat> result;
1356 testSubject = createTestSubject();
1357 result = Deencapsulation.invoke(testSubject, "validateArtifactTypeNotChanged",
1358 new Object[]{artifactInfo, artifactInfo});
1363 public void testValidateOrSetArtifactGroupType() throws Exception {
1364 ArtifactsBusinessLogic testSubject;
1365 ArtifactDefinition artifactInfo = buildArtifactPayload();
1366 ArtifactDefinition currentArtifact = null;
1367 Either<ArtifactDefinition, ResponseFormat> result;
1370 testSubject = createTestSubject();
1371 result = Deencapsulation.invoke(testSubject, "validateOrSetArtifactGroupType",
1372 new Object[]{artifactInfo, artifactInfo});
1376 public void testCheckAndSetUnUpdatableFields() throws Exception {
1377 ArtifactsBusinessLogic testSubject;
1379 ArtifactDefinition artifactInfo = buildArtifactPayload();
1380 ArtifactDefinition currentArtifact = null;
1381 ArtifactGroupTypeEnum type = null;
1384 testSubject = createTestSubject();
1386 Deencapsulation.invoke(testSubject, "checkAndSetUnUpdatableFields", user,
1387 artifactInfo, artifactInfo, ArtifactGroupTypeEnum.class);
1391 public void testCheckAndSetUnupdatableHeatParams() throws Exception {
1392 ArtifactsBusinessLogic testSubject;
1393 List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1394 List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1398 testSubject = createTestSubject();
1399 Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", new Object[]{heatParameters, currentParameters});
1403 public void testGetMapOfParameters() throws Exception {
1404 ArtifactsBusinessLogic testSubject;
1405 List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1406 Map<String, HeatParameterDefinition> result;
1409 testSubject = createTestSubject();
1410 result = Deencapsulation.invoke(testSubject, "getMapOfParameters", new Object[]{currentParameters});
1414 public void testGivenValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1415 final byte[] payload = "validYaml: yes".getBytes();
1416 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1418 final boolean isArtifactMetadataUpdate = false;
1419 ArtifactsBusinessLogic testSubject = getTestSubject();
1421 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1422 new Object[] { artifactInfo, isArtifactMetadataUpdate });
1423 assertArrayEquals(payload, result.left().value());
1431 public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1432 final int expectedStatus = 100;
1433 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1434 final byte[] payload = "invalidYaml".getBytes();
1435 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1437 final boolean isArtifactMetadataUpdate = false;
1438 ArtifactsBusinessLogic testSubject = getTestSubject();
1439 testSubject.setComponentsUtils(componentsUtils);
1441 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1442 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1444 int status = result.right().value().getStatus();
1445 assertEquals(expectedStatus, status);
1449 public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() {
1450 final int expectedStatus = 101;
1451 when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1452 final byte[] payload = "".getBytes();
1453 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1455 final boolean isArtifactMetadataUpdate = false;
1456 ArtifactsBusinessLogic testSubject = getTestSubject();
1457 testSubject.setComponentsUtils(componentsUtils);
1459 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1460 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1462 int status = result.right().value().getStatus();
1463 assertEquals(expectedStatus, status);
1468 public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1469 final byte[] payload = "heat_template_version: 1.0".getBytes();
1470 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1472 final boolean isArtifactMetadataUpdate = false;
1473 ArtifactsBusinessLogic testSubject = getTestSubject();
1475 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1476 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1477 assertArrayEquals(payload, result.left().value());
1481 public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1482 final int expectedStatus = 1000;
1483 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1484 final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes();
1485 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1487 final boolean isArtifactMetadataUpdate = false;
1488 ArtifactsBusinessLogic testSubject = getTestSubject();
1489 testSubject.setComponentsUtils(componentsUtils);
1491 Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1492 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1494 int status = result.right().value().getStatus();
1495 assertEquals(expectedStatus, status);
1498 private ArtifactDefinition createArtifactInfo(byte[] payload, String artifactName, ArtifactTypeEnum artifactType) {
1499 ArtifactDefinition artifactInfo = new ArtifactDefinition();
1500 artifactInfo.setArtifactName(artifactName);
1501 artifactInfo.setArtifactType(artifactType.getType());
1502 artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
1503 artifactInfo.setPayload(Base64.encodeBase64(payload));
1504 return artifactInfo;
1508 public void testValidateUserRole() throws Exception {
1509 ArtifactsBusinessLogic testSubject;
1511 AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
1512 String componentId = "";
1513 String artifactId = "";
1514 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1515 ArtifactsBusinessLogic arb = getTestSubject();
1516 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1517 Either<Boolean, ResponseFormat> result;
1520 testSubject = createTestSubject();
1521 result = Deencapsulation.invoke(testSubject, "validateUserRole",
1522 new Object[]{user, auditingAction, componentId, artifactId, componentType,
1527 public void testDetectAuditingType() throws Exception {
1528 ArtifactsBusinessLogic testSubject;
1529 ArtifactsBusinessLogic arb = getTestSubject();
1530 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1531 String origMd5 = "";
1532 AuditingActionEnum result;
1535 testSubject = createTestSubject();
1536 result = Deencapsulation.invoke(testSubject, "detectAuditingType",
1537 new Object[]{operation, origMd5});
1542 public void testCreateEsArtifactData() throws Exception {
1543 ArtifactsBusinessLogic testSubject;
1544 ArtifactDataDefinition artifactInfo = buildArtifactPayload();
1545 byte[] artifactPayload = new byte[]{' '};
1546 DAOArtifactData result;
1549 testSubject = createTestSubject();
1550 result = testSubject.createEsArtifactData(artifactInfo, artifactPayload);
1555 public void testIsArtifactMetadataUpdate() throws Exception {
1556 ArtifactsBusinessLogic testSubject;
1557 AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
1561 testSubject = createTestSubject();
1562 result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
1563 new Object[]{auditingActionEnum});
1567 public void testIsDeploymentArtifact() throws Exception {
1568 ArtifactsBusinessLogic testSubject;
1569 ArtifactDefinition artifactInfo = buildArtifactPayload();
1573 testSubject = createTestSubject();
1574 result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[]{artifactInfo});
1579 public void testSetArtifactPlaceholderCommonFields() throws Exception {
1580 ArtifactsBusinessLogic testSubject;
1581 String resourceId = "";
1583 ArtifactDefinition artifactInfo = buildArtifactPayload();
1586 testSubject = createTestSubject();
1587 Deencapsulation.invoke(testSubject, "setArtifactPlaceholderCommonFields",
1588 resourceId, user, artifactInfo);
1594 public void testCreateEsHeatEnvArtifactDataFromString() throws Exception {
1595 ArtifactsBusinessLogic testSubject;
1596 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1597 String payloadStr = "";
1598 Either<DAOArtifactData, ResponseFormat> result;
1601 testSubject = createTestSubject();
1602 result = Deencapsulation.invoke(testSubject, "createEsHeatEnvArtifactDataFromString",
1603 new Object[]{artifactDefinition, payloadStr});
1607 public void testUpdateArtifactOnGroupInstance() throws Exception {
1608 ArtifactsBusinessLogic testSubject;
1609 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1610 Component component = createResourceObject(true);
1611 String instanceId = "";
1612 String prevUUID = "";
1613 ArtifactDefinition artifactInfo = buildArtifactPayload();
1614 Either<ArtifactDefinition, ResponseFormat> result;
1617 testSubject = createTestSubject();
1618 testSubject.updateArtifactOnGroupInstance(component, instanceId, prevUUID, artifactInfo, artifactInfo);
1622 public void testGenerateHeatEnvPayload() throws Exception {
1623 ArtifactsBusinessLogic testSubject;
1624 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1628 testSubject = createTestSubject();
1629 result = Deencapsulation.invoke(testSubject, "generateHeatEnvPayload",
1630 new Object[]{artifactDefinition});
1635 public void testBuildJsonForUpdateArtifact() throws Exception {
1636 ArtifactsBusinessLogic testSubject;
1637 ArtifactDefinition artifactInfo = buildArtifactPayload();
1638 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1639 List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1640 Map<String, Object> result;
1643 testSubject = createTestSubject();
1644 result = testSubject.buildJsonForUpdateArtifact(artifactInfo, artifactGroupType, updatedRequiredArtifacts);
1648 public void testBuildJsonForUpdateArtifact_1() throws Exception {
1649 ArtifactsBusinessLogic testSubject;
1650 String artifactId = "";
1651 String artifactName = "";
1652 String artifactType = "";
1653 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1655 String displayName = "";
1656 String description = "";
1657 byte[] artifactContent = new byte[]{' '};
1658 List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1659 List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1660 Map<String, Object> result;
1663 testSubject = createTestSubject();
1665 result = testSubject.buildJsonForUpdateArtifact(artifactId, artifactName, artifactType, artifactGroupType,
1666 label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters);
1671 public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception {
1672 ArtifactsBusinessLogic testSubject;
1673 List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
1674 List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
1678 testSubject = createTestSubject();
1679 Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", new Object[]{currentHeatEnvParams, updatedHeatEnvParams});
1684 public void testExtractArtifactDefinition() throws Exception {
1685 ArtifactsBusinessLogic testSubject;
1686 ArtifactDefinition artifactDefinition = buildArtifactPayload();
1687 Either<ArtifactDefinition, Operation> eitherArtifact = Either.left(artifactDefinition);
1688 ArtifactDefinition result;
1691 testSubject = createTestSubject();
1692 result = testSubject.extractArtifactDefinition(eitherArtifact);
1697 public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception {
1698 ArtifactsBusinessLogic testSubject;
1699 ArtifactDefinition artifact = null;
1700 ArtifactDefinition artifactInfo = buildArtifactPayload();
1703 testSubject = createTestSubject();
1704 Deencapsulation.invoke(testSubject, "setHeatCurrentValuesOnHeatEnvDefaultValues",
1705 artifactInfo, artifactInfo);
1709 public void testBuildHeatEnvFileName() throws Exception {
1710 ArtifactsBusinessLogic testSubject;
1711 ArtifactDefinition heatArtifact = null;
1712 ArtifactDefinition artifactInfo = buildArtifactPayload();
1713 Map<String, Object> placeHolderData = new HashMap<>();
1717 testSubject = createTestSubject();
1718 Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{artifactInfo, artifactInfo, placeHolderData});
1722 public void testHandleEnvArtifactVersion() throws Exception {
1723 ArtifactsBusinessLogic testSubject;
1724 ArtifactDefinition artifactInfo = buildArtifactPayload();
1725 Map<String, String> existingEnvVersions = new HashMap<>();
1729 testSubject = createTestSubject();
1730 Deencapsulation.invoke(testSubject, "handleEnvArtifactVersion", artifactInfo, existingEnvVersions);
1734 public void testHandleArtifactsRequestForInnerVfcComponent() throws Exception {
1735 ArtifactsBusinessLogic testSubject;
1736 List<ArtifactDefinition> artifactsToHandle = new ArrayList<>();
1737 Resource component = createResourceObject(true);
1739 List<ArtifactDefinition> vfcsNewCreatedArtifacts = new ArrayList<>();
1740 ArtifactsBusinessLogic arb = getTestSubject();
1741 ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1742 boolean shouldLock = false;
1743 boolean inTransaction = false;
1744 List<ArtifactDefinition> result;
1747 testSubject = createTestSubject();
1748 result = testSubject.handleArtifactsForInnerVfcComponent(artifactsToHandle, component, user,
1749 vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction);
1753 public void testSetNodeTemplateOperation() throws Exception {
1754 ArtifactsBusinessLogic testSubject;
1755 NodeTemplateOperation nodeTemplateOperation = null;
1758 testSubject = createTestSubject();
1759 Deencapsulation.invoke(testSubject, "setNodeTemplateOperation", NodeTemplateOperation.class);
1763 public void testHandleArtifactRequest() {
1765 String componentId = "componentId";
1766 ArtifactOperationInfo operationInfo = artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE);
1767 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1768 artifactDefinition.setArtifactName("other");
1769 artifactDefinition.setUniqueId("artifactId");
1770 artifactDefinition.setPayload("Test".getBytes());
1771 artifactDefinition.setArtifactLabel("other");
1772 artifactDefinition.setDescription("Test artifact");
1773 artifactDefinition.setArtifactType(ArtifactTypeEnum.OTHER.name());
1774 artifactDefinition.setArtifactUUID("artifactUId");
1775 artifactDefinition.setArtifactLabel("test");
1776 artifactDefinition.setArtifactDisplayName("Test");
1777 artifactDefinition.setEsId("esId");
1779 String requestMd5 = GeneralUtility.calculateMD5Base64EncodedByString("data");
1780 User user = new User();
1781 user.setUserId("userId");
1783 List<ComponentInstance> componentInstanceList = new ArrayList<>();
1784 List<InterfaceDefinition> interfaceDefinitionsList = new ArrayList<>();
1785 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1786 Map<String, Operation> operationsMap = new HashMap<>();
1787 artifactDefinitionMap.put("sample", artifactDefinition);
1789 ComponentInstance componentInstance = new ComponentInstance();
1790 componentInstance.setUniqueId(componentId);
1791 componentInstance.setDeploymentArtifacts(artifactDefinitionMap);
1792 componentInstanceList.add(componentInstance);
1794 Operation operation = new Operation();
1795 operation.setUniqueId("ouuid");
1796 operation.setName("operation1");
1797 operation.setImplementation(artifactDefinition);
1798 operationsMap.put("op1", operation);
1800 Map<String, InterfaceDefinition> interfaceDefinitions = new HashMap<>();
1802 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1803 interfaceDefinition.setType("iuuid");
1804 interfaceDefinition.setOperationsMap(operationsMap);
1805 interfaceDefinitions.put("iuuid", interfaceDefinition);
1807 interfaceDefinitionsList.add(interfaceDefinition);
1809 ResourceMetadataDataDefinition resourceMetadaData = new ResourceMetadataDataDefinition();
1810 resourceMetadaData.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
1811 resourceMetadaData.setLastUpdaterUserId(user.getUserId());
1812 Resource resource = new Resource(new ResourceMetadataDefinition(resourceMetadaData));
1813 resource.setComponentInstances(componentInstanceList);
1814 resource.setUniqueId(componentId);
1815 resource.setInterfaces(interfaceDefinitions);
1817 user.setRole(Role.ADMIN.name());
1819 when(userValidations.validateUserExists(Mockito.eq("userId")))
1821 when(toscaOperationFacade.getToscaFullElement(any()))
1822 .thenReturn(Either.left(resource));
1823 when(artifactToscaOperation.getArtifactById(any(), any(), any(), any()))
1824 .thenReturn(Either.left(artifactDefinition));
1825 when(artifactsResolver.findArtifactOnComponent(any(), any(ComponentTypeEnum.class), anyString()))
1826 .thenReturn(artifactDefinition);
1827 when(graphLockOperation.lockComponent(eq(resource.getUniqueId()), any(NodeTypeEnum.class)))
1828 .thenReturn(StorageOperationStatus.OK);
1829 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any(), anyBoolean()))
1830 .thenReturn(Either.left(artifactDefinition));
1831 when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class)))
1832 .thenReturn(CassandraOperationStatus.OK);
1833 when(toscaOperationFacade.getToscaElement(anyString()))
1834 .thenReturn(Either.left(resource));
1835 when(interfaceOperation.updateInterfaces(anyString(), anyList()))
1836 .thenReturn(Either.left(interfaceDefinitionsList));
1837 when(artifactToscaOperation.getAllInstanceArtifacts(resource.getUniqueId(), componentId)).thenReturn(Either.left(artifactDefinitionMap));
1838 when(toscaOperationFacade.generateCustomizationUUIDOnInstance(any(), any())).thenReturn(StorageOperationStatus.OK);
1840 Either<ArtifactDefinition, Operation> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(), ComponentTypeEnum.RESOURCE_INSTANCE
1841 , operationInfo, artifactDefinition.getUniqueId(), artifactDefinition, requestMd5, "data", "iuuid",
1842 null, componentId, "resources");
1844 assertTrue(result.isLeft());
1845 ArtifactDefinition leftValue = result.left().value();
1846 assertEquals(artifactDefinition.getArtifactName(), leftValue.getArtifactName());
1850 public void testGenerateToscaArtifact() {
1852 Resource resource = new Resource();
1853 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1854 resource.setUniqueId("resourceId");
1856 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1857 artifactDefinition.setUniqueId("artifactId");
1858 artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_CSAR.name());
1859 User user = new User();
1860 boolean inCertificationRequest = false;
1861 boolean fetchTemplatesFromDB = false;
1862 boolean shouldLock = false;
1863 boolean inTransaction = false;
1865 byte[] csar = "test.csar".getBytes();
1867 when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1868 .thenReturn(Either.left(csar));
1869 when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(Component.class), anyString(), any(NodeTypeEnum.class), anyString(), anyBoolean()))
1870 .thenReturn(Either.left(artifactDefinition));
1871 when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class)))
1872 .thenReturn(CassandraOperationStatus.OK);
1874 Either<ArtifactDefinition, Operation> result
1875 = artifactBL.generateAndSaveToscaArtifact(artifactDefinition, resource, user, inCertificationRequest,
1876 shouldLock, inTransaction, fetchTemplatesFromDB);
1879 Assert.assertEquals(artifactDefinition.getUniqueId(), result.left().value().getUniqueId());
1883 public void testHandleDownloadToscaModelRequest() {
1884 ArtifactsBusinessLogic testSubject = getTestSubject();
1885 byte[] generatedCsar = "test.csar".getBytes();
1887 Resource resource = new Resource();
1888 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1890 ArtifactDefinition csarArtifact = new ArtifactDefinition();
1891 csarArtifact.setArtifactName("csarArtifact");
1892 csarArtifact.setArtifactType(ArtifactTypeEnum.HEAT_ENV.name());
1893 csarArtifact.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1895 when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1896 .thenReturn(Either.left(generatedCsar));
1898 ImmutablePair<String, byte[]> result =
1899 testSubject.handleDownloadToscaModelRequest(resource, csarArtifact);
1901 assertEquals(csarArtifact.getArtifactName(), result.getKey());
1905 public void testHandleDownloadRequestById_returnsSuccessful() {
1906 String componentId = "componentId";
1907 String artifactId = "artifactId";
1908 String parentId = "parentId";
1910 DAOArtifactData daoArtifactData = new DAOArtifactData();
1911 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1912 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1913 Operation operation = new Operation();
1914 operation.setUniqueId("op1");
1916 artifactDefinition.setArtifactName("test.csar");
1917 artifactDefinition.setArtifactType(ComponentTypeEnum.RESOURCE.name());
1918 artifactDefinition.setArtifactType(ArtifactTypeEnum.HEAT.name());
1919 artifactDefinition.setUniqueId(artifactId);
1920 artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1922 daoArtifactData.setDataAsArray("data".getBytes());
1924 Resource resource = new Resource();
1925 resource.setUniqueId("resourceId");
1926 resource.setAbstract(false);
1928 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1929 Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
1930 interfaceDefinitionMap.put("interDef1", interfaceDefinition);
1932 artifactDefinitionMap.put("artifact1", artifactDefinition);
1934 resource.setDeploymentArtifacts(artifactDefinitionMap);
1936 User user = new User();
1937 user.setUserId("userId");
1939 when(userValidations.validateUserExists(eq(user.getUserId())))
1941 when(toscaOperationFacade.getToscaFullElement(eq(componentId)))
1942 .thenReturn(Either.left(resource));
1943 when(artifactToscaOperation.getArtifactById(anyString(), anyString(), any(ComponentTypeEnum.class), anyString()))
1944 .thenReturn(Either.left(artifactDefinition));
1945 when(artifactCassandraDao.getArtifact(any()))
1946 .thenReturn(Either.left(daoArtifactData));
1947 when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
1949 ImmutablePair<String, byte[]> result =
1950 artifactBL.handleDownloadRequestById(componentId, artifactId, user.getUserId(), ComponentTypeEnum.RESOURCE,
1952 Assert.assertEquals(artifactDefinition.getArtifactName(), result.getKey());
1956 public void testHandleDownloadRequestById_givenUserIdIsNull_thenReturnsError() {
1957 String componentId = "componentId";
1958 String userId = null;
1959 String artifactId = "artifactId";
1962 ImmutablePair<String, byte[]> result =
1963 artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId
1965 } catch (ComponentException e) {
1966 assertEquals(e.getActionStatus(), ActionStatus.MISSING_INFORMATION);
1973 public void testHandleGetArtifactByType_returnsSuccessful() {
1974 String parentId = "parentId";
1975 String componentId = "componentId";
1976 String artifactGroupType = ArtifactGroupTypeEnum.OTHER.name();
1977 String userId = "userId";
1979 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1980 artifactDefinition.setArtifactName("test.csar");
1982 Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1983 artifactDefinitionMap.put("artifact1", artifactDefinition);
1985 Service service = new Service();
1986 service.setUniqueId(componentId);
1988 when(toscaOperationFacade.getToscaElement(eq(componentId), any(ComponentParametersView.class)))
1989 .thenReturn(Either.left(service));
1990 when(graphLockOperation.lockComponent(eq(componentId), any(NodeTypeEnum.class)))
1991 .thenReturn(StorageOperationStatus.OK);
1992 when(artifactToscaOperation.getArtifacts(any(), any(NodeTypeEnum.class), any(ArtifactGroupTypeEnum.class), any()))
1993 .thenReturn(Either.left(artifactDefinitionMap));
1995 Map<String, ArtifactDefinition> result =
1996 artifactBL.handleGetArtifactsByType(ComponentTypeEnum.SERVICE.name(), parentId, ComponentTypeEnum.SERVICE,
1997 componentId, artifactGroupType, userId);
1998 Assert.assertEquals(artifactDefinition.getArtifactName(), result.get("artifact1").getArtifactName());
2002 public void testGetDeployment_returnsSuccessful() {
2004 Resource resource = new Resource();
2005 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2006 ComponentInstance componentInstance = new ComponentInstance();
2007 NodeTypeEnum parentType = NodeTypeEnum.ResourceInstance;
2008 String ciId = "ciId";
2010 artifactDefinition.setArtifactName("test.csar");
2011 componentInstance.setUniqueId(ciId);
2012 List<ComponentInstance> componentInstanceList = new ArrayList<>();
2013 componentInstanceList.add(componentInstance);
2015 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
2016 deploymentArtifacts.put("test.csar", artifactDefinition);
2018 resource.setDeploymentArtifacts(deploymentArtifacts);
2019 resource.setComponentInstances(componentInstanceList);
2020 componentInstance.setDeploymentArtifacts(deploymentArtifacts);
2022 List<ArtifactDefinition> result = artifactBL.getDeploymentArtifacts(resource, parentType, ciId);
2023 Assert.assertTrue(result.size() == 1);
2024 Assert.assertEquals(artifactDefinition.getArtifactName(), result.get(0).getArtifactName());
2028 public void testHandleDelete_returnsSuccessful() {
2030 String parentId = "parentId";
2031 String artifactId = "artifactId";
2032 AuditingActionEnum auditingAction = AuditingActionEnum.ARTIFACT_DELETE;
2033 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2034 Resource resource = new Resource();
2035 ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
2036 boolean shouldUnlock = true;
2037 boolean inTransaction = false;
2038 User user = new User();
2040 artifactDefinition.setArtifactName("test.csar");
2041 artifactDefinition.setUniqueId(artifactId);
2042 artifactDefinition.setEsId("esId");
2044 ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
2046 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
2047 deploymentArtifacts.put(artifactId, artifactDefinition);
2049 resource.setUniqueId(parentId);
2050 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2051 resource.setDeploymentArtifacts(deploymentArtifacts);
2053 when(graphLockOperation.lockComponent(eq(parentId), any(NodeTypeEnum.class)))
2054 .thenReturn(StorageOperationStatus.OK);
2055 when(toscaOperationFacade.getToscaElement(eq(parentId)))
2056 .thenReturn(Either.left(resource));
2057 when(artifactToscaOperation.isCloneNeeded(any(), any(ArtifactDefinition.class), any(NodeTypeEnum.class)))
2058 .thenReturn(Either.left(Boolean.FALSE));
2059 when(artifactToscaOperation.removeArtifactOnGraph(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class), anyBoolean()))
2060 .thenReturn(Either.left(artifactDataDefinition));
2061 when(artifactCassandraDao.deleteArtifact(any()))
2062 .thenReturn(CassandraOperationStatus.OK);
2064 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result = artifactBL.handleDelete(parentId, artifactId, user, auditingAction, componentType, resource, shouldUnlock, inTransaction);
2065 Either<ArtifactDefinition, Operation> leftValue = result.left().value();
2066 Assert.assertEquals(artifactDefinition.getArtifactName(), leftValue.left().value().getArtifactName());
2070 public void testDownloadRsrcArtifactByNames_givenServiceNameNull_thenReturnsError() {
2071 String serviceName = null;
2072 String serviceVersion = "2.0";
2073 String resourceName = "resource";
2074 String resourceVersion = "1.0";
2075 String artifactName = "artifactName";
2078 artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName);
2079 } catch(ComponentException e) {
2080 assertEquals(ActionStatus.INVALID_CONTENT, e.getActionStatus());
2088 public void testDownloadRsrcArtifactByNames_returnsSuccessful() {
2090 String serviceName = "service1";
2091 String resourceName = "resource1";
2092 String artifactName = "artifact1";
2093 String version = "1.0";
2095 Resource resource = new Resource();
2096 resource.setName(resourceName);
2097 resource.setVersion(version);
2099 Service service = new Service();
2100 service.setVersion(version);
2101 service.setName(serviceName);
2103 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2104 artifactDefinition.setEsId("esId");
2106 DAOArtifactData esArtifactData = new DAOArtifactData();
2107 esArtifactData.setDataAsArray("test".getBytes());
2109 artifactDefinition.setArtifactName(artifactName);
2110 List<Service> serviceList = new ArrayList<>();
2111 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
2112 artifacts.put(artifactName, artifactDefinition);
2114 serviceList.add(service);
2115 resource.setDeploymentArtifacts(artifacts);
2117 when(toscaOperationFacade.getComponentByNameAndVersion(eq(ComponentTypeEnum.RESOURCE), eq(resourceName), eq(version), eq(JsonParseFlagEnum.ParseMetadata)))
2118 .thenReturn(Either.left(resource));
2119 doReturn(Either.left(serviceList)).when(toscaOperationFacade).getBySystemName(eq(ComponentTypeEnum.SERVICE), eq(serviceName));
2120 when(artifactCassandraDao.getArtifact(any()))
2121 .thenReturn(Either.left(esArtifactData));
2123 byte[] result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName);
2124 Assert.assertEquals(esArtifactData.getDataAsArray(), result);
2127 private ArtifactsBusinessLogic getTestSubject() {
2128 return new ArtifactsBusinessLogic(artifactCassandraDao, toscaExportHandler, csarUtils, lifecycleBusinessLogic,
2129 userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation, groupTypeOperation,
2130 interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);