Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ArtifactsBusinessLogicTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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  * ================================================================================
21  */
22
23 package org.openecomp.sdc.be.components.impl;
24
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.impl.exceptions.ComponentException;
48 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
49 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
50 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
51 import org.openecomp.sdc.be.components.validation.UserValidations;
52 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
53 import org.openecomp.sdc.be.config.ConfigurationManager;
54 import org.openecomp.sdc.be.dao.api.ActionStatus;
55 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
56 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
57 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
58 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
59 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
60 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
61 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
62 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
63 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
64 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
65 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
66 import org.openecomp.sdc.be.impl.ComponentsUtils;
67 import org.openecomp.sdc.be.info.ArtifactTemplateInfo;
68 import org.openecomp.sdc.be.model.ArtifactDefinition;
69 import org.openecomp.sdc.be.model.ArtifactType;
70 import org.openecomp.sdc.be.model.Component;
71 import org.openecomp.sdc.be.model.ComponentInstance;
72 import org.openecomp.sdc.be.model.ComponentParametersView;
73 import org.openecomp.sdc.be.model.DataTypeDefinition;
74 import org.openecomp.sdc.be.model.GroupDefinition;
75 import org.openecomp.sdc.be.model.GroupInstance;
76 import org.openecomp.sdc.be.model.HeatParameterDefinition;
77 import org.openecomp.sdc.be.model.InterfaceDefinition;
78 import org.openecomp.sdc.be.model.LifecycleStateEnum;
79 import org.openecomp.sdc.be.model.Operation;
80 import org.openecomp.sdc.be.model.Resource;
81 import org.openecomp.sdc.be.model.ResourceMetadataDefinition;
82 import org.openecomp.sdc.be.model.Service;
83 import org.openecomp.sdc.be.model.User;
84 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
85 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
86 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
87 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
88 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
89 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
90 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
91 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
92 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
93 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
94 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
95 import org.openecomp.sdc.be.servlets.RepresentationUtils;
96 import org.openecomp.sdc.be.tosca.CsarUtils;
97 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
98 import org.openecomp.sdc.be.user.Role;
99 import org.openecomp.sdc.be.user.UserBusinessLogic;
100 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
101 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
102 import org.openecomp.sdc.common.api.ConfigurationSource;
103 import org.openecomp.sdc.common.datastructure.Wrapper;
104 import org.openecomp.sdc.common.impl.ExternalConfiguration;
105 import org.openecomp.sdc.common.impl.FSConfigurationSource;
106 import org.openecomp.sdc.common.util.GeneralUtility;
107 import org.openecomp.sdc.exception.ResponseFormat;
108
109 import java.io.IOException;
110 import java.util.ArrayList;
111 import java.util.Arrays;
112 import java.util.Collections;
113 import java.util.HashMap;
114 import java.util.List;
115 import java.util.Map;
116
117 import static org.assertj.core.api.Assertions.assertThat;
118 import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
119 import static org.junit.Assert.assertArrayEquals;
120 import static org.junit.Assert.assertEquals;
121 import static org.junit.Assert.assertNull;
122 import static org.junit.Assert.assertTrue;
123 import static org.junit.Assert.fail;
124 import static org.mockito.ArgumentMatchers.any;
125 import static org.mockito.ArgumentMatchers.anyBoolean;
126 import static org.mockito.ArgumentMatchers.anyList;
127 import static org.mockito.ArgumentMatchers.anyString;
128 import static org.mockito.ArgumentMatchers.eq;
129 import static org.mockito.Mockito.doReturn;
130 import static org.mockito.Mockito.times;
131 import static org.mockito.Mockito.verify;
132 import static org.mockito.Mockito.when;
133 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
134 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
135
136 public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock{
137
138     private static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN",
139             System.currentTimeMillis());
140     private final static String RESOURCE_INSTANCE_NAME = "Service-111";
141     private final static String INSTANCE_ID = "S-123-444-ghghghg";
142
143     private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
144     private final static String ARTIFACT_LABEL = "assettoscatemplate";
145     private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
146     private final static 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);
152
153     static ConfigurationSource configurationSource = new FSConfigurationSource(
154             ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
155     static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
156     @InjectMocks
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);
162     @Mock
163     public ComponentsUtils componentsUtils;
164     @Mock
165     public ToscaOperationFacade toscaOperationFacade;
166     JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
167     @Mock
168     JanusGraphDao janusGraphDao;
169     @Mock
170     private UserBusinessLogic userBusinessLogic;
171     @Mock
172     private ArtifactOperation artifactOperation;
173     @Mock
174     private IInterfaceLifecycleOperation lifecycleOperation;
175     @Mock
176     private UserAdminOperation userOperation;
177     @Mock
178     private IElementOperation elementOperation;
179     @Mock
180     private ArtifactCassandraDao artifactCassandraDao;
181     @Mock
182     private NodeTemplateOperation nodeTemplateOperation;
183     @Mock
184     private IGraphLockOperation graphLockOperation;
185     @Mock
186     private UserValidations userValidations;
187     @Mock
188     private ArtifactsResolver artifactsResolver;
189     @Mock
190     private CsarUtils csarUtils;
191     @Mock
192     private ToscaExportHandler toscaExportHandler;
193     @Mock
194     private LifecycleBusinessLogic lifecycleBusinessLogic;
195     private Gson gson = new GsonBuilder().setPrettyPrinting().create();
196
197     private static List<ArtifactType> getAllTypes() {
198         List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>();
199         List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration()
200                 .getArtifactTypes();
201         for (String artifactType : artifactTypesList) {
202             ArtifactType artifactT = new ArtifactType();
203             artifactT.setName(artifactType);
204             artifactTypes.add(artifactT);
205         }
206         return artifactTypes;
207     }
208
209     @Before
210     public void initMocks() {
211         MockitoAnnotations.initMocks(this);
212         Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either
213                 .right(StorageOperationStatus.NOT_FOUND);
214
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);
221
222         Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either
223                 .right(StorageOperationStatus.NOT_FOUND);
224         when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean()))
225                 .thenReturn(notFoundInterfaces);
226
227                 when(userOperation.getUserData("jh0003", false)).thenReturn(Either.left(USER));
228
229         Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
230         when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
231
232         when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
233
234         // User data and management
235         user = new User();
236         user.setUserId("jh0003");
237         user.setFirstName("Jimmi");
238         user.setLastName("Hendrix");
239         user.setRole(Role.ADMIN.name());
240
241         // createResource
242         resourceResponse = createResourceObject(true);
243         Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse);
244         when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
245         when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK);
246         Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>();
247         when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
248         when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
249
250         Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
251                 .right(StorageOperationStatus.BAD_REQUEST);
252         when(toscaOperationFacade.getToscaElement(resourceResponse.getUniqueId()))
253                 .thenReturn(resourceStorageOperationStatusEither);
254     }
255
256     @Test
257     public void testValidJson() {
258         ArtifactDefinition ad = createArtifactDef();
259
260         String jsonArtifact = "";
261
262         ObjectMapper mapper = new ObjectMapper();
263         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
264         mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
265         mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
266
267         try {
268             jsonArtifact = mapper.writeValueAsString(ad);
269         } catch (IOException e) {
270             // TODO Auto-generated catch block
271             e.printStackTrace();
272         }
273
274         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact,
275                 ArtifactDefinition.class, false);
276         assertEquals(ad, afterConvert);
277     }
278
279     private ArtifactDefinition createArtifactDef() {
280         ArtifactDefinition ad = new ArtifactDefinition();
281         ad.setArtifactName("artifact1.yaml");
282         ad.setArtifactLabel("label1");
283         ad.setDescription("description");
284         ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
285         ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
286         ad.setCreationDate(System.currentTimeMillis());
287         ad.setMandatory(false);
288         ad.setTimeout(15);
289         return ad;
290     }
291
292     private Resource createResourceObject(boolean afterCreate) {
293         Resource resource = new Resource();
294         resource.setName(RESOURCE_NAME);
295         resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
296         resource.setDescription("My short description");
297         List<String> tgs = new ArrayList<String>();
298         tgs.add("test");
299         tgs.add(resource.getName());
300         resource.setTags(tgs);
301         List<String> template = new ArrayList<String>();
302         template.add("Root");
303         resource.setDerivedFrom(template);
304         resource.setVendorName("Motorola");
305         resource.setVendorRelease("1.0.0");
306         resource.setContactId("ya5467");
307         resource.setIcon("MyIcon");
308
309         if (afterCreate) {
310             resource.setName(resource.getName());
311             resource.setVersion("0.1");
312             resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
313             resource.setCreatorUserId(user.getUserId());
314             resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
315             resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
316         }
317         return resource;
318     }
319
320     @Test
321     public void testUpdateCIDeploymentArtifactTimeout() {
322         ArtifactDefinition heatArtifact = new ArtifactDefinition();
323         ArtifactDefinition envArtifact = new ArtifactDefinition();
324         ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
325         ComponentInstance ci = new ComponentInstance();
326         ci.setUniqueId("ciid");
327         ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
328         GroupInstance groupInstance = new GroupInstance();
329         groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
330         groupInstance.setCustomizationUUID("custUid");
331         groupInstance.setUniqueId("guid");
332         List<GroupInstance> groupInstances = new ArrayList<>();
333         groupInstances.addAll(Arrays.asList(groupInstance));
334         ci.setGroupInstances(groupInstances);
335         Service service = new Service();
336         service.setComponentInstances(Collections.singletonList(ci));
337         service.setUniqueId("suid");
338
339         when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
340                 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
341         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
342                 .thenReturn(StorageOperationStatus.OK);
343         when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
344                 .thenReturn(Either.left(new ArrayList()));
345         when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
346                 .thenReturn(StorageOperationStatus.OK);
347         artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
348                 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
349         assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(envArtifact.getTimeout());
350         assertThat(ci.getDeploymentArtifacts().get("HEAT_ENV").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
351     }
352
353     @Test
354     public void testUpdateCIDeploymentTimeout_invalidTimeout() {
355         ArtifactDefinition heatArtifact = new ArtifactDefinition();
356         ArtifactDefinition envArtifact = new ArtifactDefinition();
357         ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
358         ComponentInstance ci = new ComponentInstance();
359         ci.setUniqueId("ciid");
360         ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
361         GroupInstance groupInstance = new GroupInstance();
362         groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
363         groupInstance.setCustomizationUUID("custUid");
364         groupInstance.setUniqueId("guid");
365         List<GroupInstance> groupInstances = new ArrayList<>();
366         groupInstances.addAll(Arrays.asList(groupInstance));
367         ci.setGroupInstances(groupInstances);
368         Service service = new Service();
369         service.setComponentInstances(Collections.singletonList(ci));
370         service.setUniqueId("suid");
371         envArtifact.setTimeout(130);
372
373         when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
374                 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
375         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
376                 .thenReturn(StorageOperationStatus.OK);
377         when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
378                 .thenReturn(Either.left(new ArrayList()));
379         when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
380                 .thenReturn(StorageOperationStatus.OK);
381         try {
382             artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
383                     "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
384         } catch (ComponentException exp) {
385             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
386             return;
387         }
388         fail();
389     }
390
391     @Test
392     public void testUpdateCIDeploymentTimeout_negativeTimeout() {
393         ArtifactDefinition heatArtifact = new ArtifactDefinition();
394         ArtifactDefinition envArtifact = new ArtifactDefinition();
395         ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
396         ComponentInstance ci = new ComponentInstance();
397         ci.setUniqueId("ciid");
398         ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
399         GroupInstance groupInstance = new GroupInstance();
400         groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
401         groupInstance.setCustomizationUUID("custUid");
402         groupInstance.setUniqueId("guid");
403         List<GroupInstance> groupInstances = new ArrayList<>();
404         groupInstances.addAll(Arrays.asList(groupInstance));
405         ci.setGroupInstances(groupInstances);
406         Service service = new Service();
407         service.setComponentInstances(Collections.singletonList(ci));
408         service.setUniqueId("suid");
409         envArtifact.setTimeout(-1);
410
411         when (artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
412                 heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(Either.left(heatArtifact));
413         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
414                 .thenReturn(StorageOperationStatus.OK);
415         when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
416                 .thenReturn(Either.left(new ArrayList()));
417         when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(), new ArrayList<>(Arrays.asList("guid"))))
418                 .thenReturn(StorageOperationStatus.OK);
419         try {
420             artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
421                     "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
422         } catch (ComponentException exp) {
423             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
424             return;
425         }
426         fail();
427     }
428
429     @Test
430     public void testUpdateCIDeploymentArtifactTimeout_noUpdate() {
431         ArtifactDefinition heatArtifact = new ArtifactDefinition();
432         ArtifactDefinition envArtifact = new ArtifactDefinition();
433         ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
434         ComponentInstance ci = new ComponentInstance();
435         ci.setUniqueId("ciid");
436         ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact,envArtifact, origEnvArtifact));
437         envArtifact.setTimeout(heatArtifact.getTimeout());
438         GroupInstance groupInstance = new GroupInstance();
439         groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
440         groupInstance.setCustomizationUUID("custUid");
441         groupInstance.setUniqueId("guid");
442         List<GroupInstance> groupInstances = new ArrayList<>();
443         groupInstances.addAll(Arrays.asList(groupInstance));
444         ci.setGroupInstances(groupInstances);
445         Service service = new Service();
446         service.setComponentInstances(Collections.singletonList(ci));
447         service.setUniqueId("suid");
448
449         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
450                 .thenReturn(StorageOperationStatus.OK);
451         when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
452                 .thenReturn(Either.left(new ArrayList()));
453         artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
454                 "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
455         assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
456     }
457
458     @Test
459     public void testUpdateCIDeploymentArtifactTimeout_nonExistingArtifact() {
460         ArtifactDefinition heatArtifact = new ArtifactDefinition();
461         ArtifactDefinition envArtifact = new ArtifactDefinition();
462         ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
463         envArtifact.setTimeout(heatArtifact.getTimeout());
464         envArtifact.setArtifactType("HEAT_ENV");
465         envArtifact.setGeneratedFromId("uid1");
466         ComponentInstance ci = new ComponentInstance();
467         ci.setUniqueId("ciid");
468         ci.setDeploymentArtifacts(new HashMap<>());
469         Service service = new Service();
470         service.setComponentInstances(Collections.singletonList(ci));
471         service.setUniqueId("suid");
472
473         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
474                 .thenReturn(StorageOperationStatus.OK);
475         when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service),eq(ci.getUniqueId()), any(List.class)))
476                 .thenReturn(Either.left(new ArrayList()));
477
478         assertThatThrownBy(() -> {
479             artifactBL.handleUpdate(ci.getUniqueId(),ComponentTypeEnum.RESOURCE_INSTANCE,artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
480                     "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
481         }).isInstanceOf(ComponentException.class);
482     }
483
484     @Test
485     public void testUpdateCIDeploymentArtifactTimeout_invalidArtifactType() {
486         ArtifactDefinition envArtifact = new ArtifactDefinition();
487         envArtifact.setArtifactType("invalid");
488
489         try {
490             artifactBL.handleUpdate("uid", ComponentTypeEnum.RESOURCE_INSTANCE, artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
491                     "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, null, true);
492             fail();
493         } catch(ComponentException exp) {
494             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_TYPE_NOT_SUPPORTED);
495             assertThat(exp.getParams()[0]).isEqualTo("invalid");
496         }
497     }
498
499     private Map<String, ArtifactDefinition> fillDeploymentArtifacts(ArtifactDefinition heatArtifact, ArtifactDefinition envArtifact, ArtifactDefinition origEnvArtifact) {
500         heatArtifact.setArtifactType("HEAT");
501         heatArtifact.setTimeout(60);
502         heatArtifact.setEsId("es");
503         heatArtifact.setArtifactUUID("uuid1");
504         heatArtifact.setUniqueId("uid1");
505         envArtifact.setArtifactUUID("uuid2");
506         envArtifact.setArtifactType("HEAT_ENV");
507         envArtifact.setTimeout(30);
508         envArtifact.setGenerated(true);
509         envArtifact.setGeneratedFromId("uid1");
510         envArtifact.setUniqueId("uid2");
511         origEnvArtifact.setUniqueId("uid2");
512         origEnvArtifact.setGeneratedFromId("uid1");
513         origEnvArtifact.setArtifactType("HEAT_ENV");
514         origEnvArtifact.setTimeout(60);
515         origEnvArtifact.setGenerated(true);
516         Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
517         deploymentArtifacts.put(heatArtifact.getArtifactType(), heatArtifact);
518         //deploymentArtifacts.put(envArtifact.getArtifactType(), envArtifact);
519         deploymentArtifacts.put(envArtifact.getArtifactType(), origEnvArtifact);
520         return  deploymentArtifacts;
521     }
522
523     @Test
524     public void testInvalidStringGroupType() {
525         ArtifactDefinition ad = new ArtifactDefinition();
526         ad.setArtifactName("artifact1");
527         ad.setCreationDate(System.currentTimeMillis());
528         ad.setMandatory(false);
529         ad.setTimeout(15);
530
531         JsonElement jsonArtifact = gson.toJsonTree(ad);
532         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
533         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
534         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
535         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
536
537         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
538                 ArtifactDefinition.class, false);
539         assertNull(afterConvert);
540     }
541
542     @Test
543     public void testUpdateArtifactWithEmptyBody() {
544         try {
545             RepresentationUtils.convertJsonToArtifactDefinition("", ArtifactDefinition.class, true);
546             fail();
547         } catch (ComponentException exp) {
548             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_BODY);
549         }
550     }
551
552     @Test
553     public void testInvalidNumberGroupType() {
554         ArtifactDefinition ad = new ArtifactDefinition();
555         ad.setArtifactName("artifact1");
556         ad.setCreationDate(System.currentTimeMillis());
557         ad.setMandatory(false);
558         ad.setTimeout(15);
559
560         JsonElement jsonArtifact = gson.toJsonTree(ad);
561         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
562         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
563         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
564         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
565
566         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
567                 ArtifactDefinition.class, false);
568         assertNull(afterConvert);
569     }
570
571     @Test
572     public void testMissingArtifactTypeValue() {
573         ArtifactDefinition ad = new ArtifactDefinition();
574
575         JsonElement jsonArtifact = gson.toJsonTree(ad);
576         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
577         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
578         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
579         jsonArtifact.getAsJsonObject().add("artifactType", null);
580         try {
581             RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
582                     ArtifactDefinition.class, true);
583             fail();
584         } catch (ComponentException exp) {
585             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MANDATORY_PROPERTY_MISSING_VALUE);
586             assertThat(exp.getParams()[0]).isEqualTo("artifactType");
587         }
588     }
589
590     @Test
591     public void testMissingArtifactLabel() {
592         ArtifactDefinition ad = new ArtifactDefinition();
593
594         JsonElement jsonArtifact = gson.toJsonTree(ad);
595         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
596         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
597         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
598
599         try {
600             RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
601                     ArtifactDefinition.class, false);
602             fail();
603         } catch (ComponentException exp) {
604             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
605             assertThat(exp.getParams()[0]).isEqualTo("artifactLabel");
606         }
607     }
608
609     @Test
610     public void testMissingArtifactTimeout() {
611         ArtifactDefinition ad = new ArtifactDefinition();
612
613         JsonElement jsonArtifact = gson.toJsonTree(ad);
614         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
615         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
616         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
617
618         try {
619             RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
620                     ArtifactDefinition.class, true);
621             fail();
622         } catch (ComponentException exp) {
623             assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
624             assertThat(exp.getParams()[0]).isEqualTo("timeout");
625         }
626     }
627
628
629     @Test
630     public void testInvalidGroupTypeWithSpace() {
631         ArtifactDefinition ad = new ArtifactDefinition();
632         ad.setArtifactName("artifact1");
633         ad.setCreationDate(System.currentTimeMillis());
634         ad.setMandatory(false);
635         ad.setTimeout(15);
636
637         JsonElement jsonArtifact = gson.toJsonTree(ad);
638         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
639         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
640         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
641         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
642
643         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
644                 ArtifactDefinition.class, false);
645         assertNull(afterConvert);
646     }
647
648     @Test
649     public void testInvalidTimeoutWithSpace() {
650         ArtifactDefinition ad = new ArtifactDefinition();
651         ad.setArtifactName("artifact1");
652         ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
653         ad.setCreationDate(System.currentTimeMillis());
654         ad.setMandatory(false);
655
656         JsonElement jsonArtifact = gson.toJsonTree(ad);
657         jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
658         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
659         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
660         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
661
662         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
663                 ArtifactDefinition.class, true);
664         assertNull(afterConvert);
665     }
666
667     @Test
668     public void testValidMibAritactsConfiguration() {
669         Map<String, ArtifactTypeConfig> componentDeploymentArtifacts = ConfigurationManager.getConfigurationManager()
670                 .getConfiguration().getResourceDeploymentArtifacts();
671         Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts = ConfigurationManager
672                 .getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
673         assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
674         assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
675         assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
676         assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
677     }
678
679     @Test
680     public void testDownloadServiceArtifactByNames() {
681         Service service = new Service();
682         String serviceName = "myService";
683         String serviceVersion = "1.0";
684         String serviceId = "serviceId";
685         service.setName(serviceName);
686         service.setVersion(serviceVersion);
687         service.setUniqueId(serviceId);
688
689         String artifactName = "service-Myservice-template.yml";
690         String artifactLabel = "assettoscatemplate";
691         String esArtifactId = "123123dfgdfgd0";
692         byte[] payload = "some payload".getBytes();
693         ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
694         toscaTemplateArtifact.setArtifactName(artifactName);
695         toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
696         toscaTemplateArtifact.setArtifactLabel(artifactLabel);
697         toscaTemplateArtifact.setEsId(esArtifactId);
698         toscaTemplateArtifact.setPayload(payload);
699
700         Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
701         toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
702         service.setToscaArtifacts(toscaArtifacts);
703
704         DAOArtifactData DAOArtifactData = new DAOArtifactData(esArtifactId);
705         DAOArtifactData.setDataAsArray(payload);
706         Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
707         when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
708         List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
709         serviceList.add(service);
710         Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either
711                 .left(serviceList);
712         when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
713         byte[] downloadServiceArtifactByNamesRes = artifactBL
714                 .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
715         assertTrue(downloadServiceArtifactByNamesRes != null
716                 && downloadServiceArtifactByNamesRes.length == payload.length);
717     }
718
719     @Test
720     public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
721         ArtifactDefinition heatArtifact = new ArtifactBuilder()
722                 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
723                 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2")).build();
724
725         Resource component = new Resource();
726         component.setComponentType(ComponentTypeEnum.RESOURCE);
727                 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
728         when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
729                 eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
730                 .thenReturn(Either.left(new ArtifactDefinition()));
731         ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
732                 new ArrayList<>(), heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component,
733                 Collections.emptyMap());
734         assertNull(heatEnvPlaceHolder.getListHeatParameters());
735     }
736
737     @Test
738     public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal()
739             throws Exception {
740         HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
741         HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
742         HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
743         ArtifactDefinition heatArtifact = new ArtifactBuilder().addHeatParam(heatParam1).addHeatParam(heatParam2)
744                 .addHeatParam(heatParam3).build();
745
746         Resource component = new Resource();
747
748                 when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
749         when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
750                 eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
751                 .thenReturn(Either.left(new ArtifactDefinition()));
752
753         ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
754                 new ArrayList<>(), heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component,
755                 Collections.emptyMap());
756
757         ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder;
758         List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
759         assertEquals(listHeatParameters.size(), 3);
760         verifyHeatParam(listHeatParameters.get(0), heatParam1);
761         verifyHeatParam(listHeatParameters.get(1), heatParam2);
762         verifyHeatParam(listHeatParameters.get(2), heatParam3);
763     }
764
765     @Test
766     public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
767         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
768         artifactDefinition.setArtifactName(ARTIFACT_NAME);
769         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
770         artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
771         artifactDefinition.setEsId(ES_ARTIFACT_ID);
772         artifactDefinition.setPayload(PAYLOAD);
773         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
774
775         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
776         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
777                 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
778         when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
779         when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
780         artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
781                 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, true);
782     }
783
784     @Test
785     public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
786         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
787         artifactDefinition.setArtifactName(ARTIFACT_NAME);
788         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
789         artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
790         artifactDefinition.setEsId(ES_ARTIFACT_ID);
791         artifactDefinition.setPayload(PAYLOAD);
792         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
793
794         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
795         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
796                 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
797         when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
798         when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
799         artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
800                 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
801         verify(janusGraphDao, times(1)).commit();
802     }
803
804     private ArtifactDefinition buildArtifactPayload() {
805         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
806         artifactDefinition.setArtifactName(ARTIFACT_NAME);
807         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
808         artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
809         artifactDefinition.setEsId(ES_ARTIFACT_ID);
810         artifactDefinition.setPayload(PAYLOAD);
811         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
812
813         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
814         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
815                 any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
816         when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
817         when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
818         artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
819                 ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
820         verify(janusGraphDao, times(1)).commit();
821         return artifactDefinition;
822     }
823
824     private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
825         assertEquals(heatEnvParam.getDefaultValue(), heatYamlParam.getCurrentValue());
826         assertNull(heatEnvParam.getCurrentValue());
827     }
828
829     //////////////////////////////////////////////////////////////////////////////////
830     //////////////////////////////////new tests///////////////////////////////////////
831     /////////////////////////////////////////////////////////////////////////////////
832     private ArtifactsBusinessLogic createTestSubject() {
833         return getTestSubject();
834     }
835
836     @Test
837     public void testBuildJsonStringForCsarVfcArtifact() throws Exception {
838         ArtifactsBusinessLogic testSubject;
839         ArtifactDefinition artifact = new ArtifactDefinition();
840         String result;
841
842         // default test
843         testSubject = createTestSubject();
844         result = Deencapsulation.invoke(testSubject, "buildJsonStringForCsarVfcArtifact", new Object[]{artifact});
845     }
846
847     @Test
848     public void testCheckArtifactInComponent() throws Exception {
849         ArtifactsBusinessLogic testSubject;
850         Component component = new Resource();
851         component.setComponentType(ComponentTypeEnum.RESOURCE);
852         String artifactId = "";
853         boolean result;
854
855         // default test
856         testSubject = createTestSubject();
857         result = Deencapsulation.invoke(testSubject, "checkArtifactInComponent",
858                 new Object[]{component, artifactId});
859     }
860
861
862     @Test
863     public void testCheckCreateFields() throws Exception {
864         ArtifactsBusinessLogic testSubject;
865         // User user = USER;
866         ArtifactDefinition artifactInfo = buildArtifactPayload();
867         ArtifactGroupTypeEnum type = ArtifactGroupTypeEnum.DEPLOYMENT;
868
869         // default test
870         testSubject = createTestSubject();
871         Deencapsulation.invoke(testSubject, "checkCreateFields", user, artifactInfo, type);
872     }
873
874     @Test
875     public void testComposeArtifactId() throws Exception {
876         ArtifactsBusinessLogic testSubject;
877         String resourceId = "";
878         String artifactId = "";
879         ArtifactDefinition artifactInfo = buildArtifactPayload();
880         String interfaceName = "";
881         String operationName = "";
882         String result;
883
884         // test 1
885         testSubject = createTestSubject();
886         result = Deencapsulation.invoke(testSubject, "composeArtifactId",
887                 new Object[]{resourceId, artifactId, artifactInfo, interfaceName, operationName});
888     }
889
890     @Test
891     public void testConvertParentType() throws Exception {
892         ArtifactsBusinessLogic testSubject;
893         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
894         NodeTypeEnum result;
895
896         // default test
897         testSubject = createTestSubject();
898         result = Deencapsulation.invoke(testSubject, "convertParentType", new Object[]{componentType});
899     }
900
901     @Test
902     public void testConvertToOperation() throws Exception {
903         ArtifactsBusinessLogic testSubject;
904         ArtifactDefinition artifactInfo = buildArtifactPayload();
905         String operationName = "";
906         Operation result;
907
908         // default test
909         testSubject = createTestSubject();
910         result = Deencapsulation.invoke(testSubject, "convertToOperation",
911                 new Object[]{artifactInfo, operationName});
912     }
913
914     @Test
915     public void testCreateInterfaceArtifactNameFromOperation() throws Exception {
916         ArtifactsBusinessLogic testSubject;
917         String operationName = "";
918         String artifactName = "";
919         String result;
920
921         // default test
922         testSubject = createTestSubject();
923         result = Deencapsulation.invoke(testSubject, "createInterfaceArtifactNameFromOperation",
924                 new Object[]{operationName, artifactName});
925     }
926
927     @Test
928     public void testFetchArtifactsFromComponent() throws Exception {
929         ArtifactsBusinessLogic testSubject;
930         String artifactId = "";
931         Component component = createResourceObject(true);
932         Map<String, ArtifactDefinition> artifacts = new HashMap<>();
933
934         // default test
935         testSubject = createTestSubject();
936         Deencapsulation.invoke(testSubject, "fetchArtifactsFromComponent",
937                 artifactId, component, artifacts);
938     }
939
940
941     @Test
942     public void testValidateArtifact() throws Exception {
943         ArtifactsBusinessLogic testSubject;
944         String componentId = "";
945         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
946         ArtifactsBusinessLogic arb = getTestSubject();
947         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
948         String artifactId = "";
949         ArtifactDefinition artifactInfo = buildArtifactPayload();
950         AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
951
952         Component component = createResourceObject(true);
953         boolean shouldLock = false;
954         boolean inTransaction = false;
955
956         // default test
957         testSubject = createTestSubject();
958         testSubject.validateArtifact(componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, shouldLock, inTransaction);
959     }
960
961     @Test
962     public void testHandleHeatEnvDownload() throws Exception {
963         ArtifactsBusinessLogic testSubject;
964         String componentId = "";
965         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
966
967         Component component = createResourceObject(true);
968         ArtifactDefinition artifactInfo = buildArtifactPayload();
969         boolean shouldLock = false;
970         boolean inTransaction = false;
971
972
973         // default test
974         testSubject = createTestSubject();
975         testSubject.handleHeatEnvDownload(componentId, componentType, user, component, artifactInfo, shouldLock, inTransaction);
976     }
977
978     @Test
979     public void testArtifactGenerationRequired() throws Exception {
980         ArtifactsBusinessLogic testSubject;
981         Component component = createResourceObject(true);
982         ArtifactDefinition artifactInfo = buildArtifactPayload();
983         boolean result;
984
985         // default test
986         testSubject = createTestSubject();
987         result = Deencapsulation.invoke(testSubject, "artifactGenerationRequired",
988                 new Object[]{component, artifactInfo});
989     }
990
991     @Test
992     public void testUpdateGroupForHeat() throws Exception {
993         ArtifactsBusinessLogic testSubject;
994         ArtifactDefinition artifactInfo = buildArtifactPayload();
995         ArtifactDefinition artAfterUpdate = null;
996         Component component = createResourceObject(true);
997         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
998
999         // default test
1000         testSubject = createTestSubject();
1001         testSubject.updateGroupForHeat(artifactInfo, artifactInfo, component);
1002     }
1003
1004     @Test
1005     public void testUpdateGroupForHeat_1() throws Exception {
1006         ArtifactsBusinessLogic testSubject;
1007         ArtifactDefinition artifactInfo = buildArtifactPayload();
1008         Component component = createResourceObject(true);
1009         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1010
1011         // default test
1012         testSubject = createTestSubject();
1013         testSubject.updateGroupForHeat(artifactInfo, artifactInfo, artifactInfo,
1014                 artifactInfo, component);
1015     }
1016
1017
1018     @Test
1019     public void testHandleAuditing() throws Exception {
1020         ArtifactsBusinessLogic testSubject;
1021         AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
1022         Component component = createResourceObject(true);
1023         String componentId = "";
1024
1025         ArtifactDefinition artifactDefinition = buildArtifactPayload();
1026         String prevArtifactUuid = "";
1027         String currentArtifactUuid = "";
1028         ResponseFormat responseFormat = new ResponseFormat();
1029         ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
1030         String resourceInstanceName = "";
1031
1032         // test 1
1033         testSubject = createTestSubject();
1034         testSubject.setComponentsUtils(MockGenerator.mockComponentUtils());
1035         testSubject.handleAuditing(auditingActionEnum, component, componentId, user, artifactDefinition,
1036                 prevArtifactUuid, currentArtifactUuid, responseFormat, componentTypeEnum, resourceInstanceName);
1037     }
1038
1039     @Test
1040     public void testIgnoreUnupdateableFieldsInUpdate() throws Exception {
1041         ArtifactsBusinessLogic testSubject;
1042         ArtifactsBusinessLogic arb = getTestSubject();
1043         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1044         ArtifactDefinition artifactInfo = buildArtifactPayload();
1045         ArtifactDefinition currentArtifactInfo = null;
1046
1047         // default test
1048         testSubject = createTestSubject();
1049         Deencapsulation.invoke(testSubject, "ignoreUnupdateableFieldsInUpdate",
1050                 operation, artifactInfo, artifactInfo);
1051     }
1052
1053     @Test
1054     public void testFindArtifactOnParentComponent() throws Exception {
1055         ArtifactsBusinessLogic testSubject;
1056         Component component = createResourceObject(true);
1057         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1058         String parentId = "";
1059         ArtifactsBusinessLogic arb = getTestSubject();
1060         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1061         String artifactId = "";
1062         Either<ArtifactDefinition, ResponseFormat> result;
1063
1064         // default test
1065         testSubject = createTestSubject();
1066         result = Deencapsulation.invoke(testSubject, "findArtifactOnParentComponent", new Object[]{component,
1067                 componentType, parentId, operation, artifactId});
1068     }
1069
1070
1071     @Test
1072     public void testValidateInformationalArtifact() throws Exception {
1073         ArtifactsBusinessLogic testSubject;
1074         ArtifactDefinition artifactInfo = buildArtifactPayload();
1075         Component component = createResourceObject(true);
1076         Either<Boolean, ResponseFormat> result;
1077
1078         // default test
1079         testSubject = createTestSubject();
1080         result = Deencapsulation.invoke(testSubject, "validateInformationalArtifact",
1081                 new Object[]{artifactInfo, component});
1082     }
1083
1084
1085     @Test
1086     public void testGetUpdatedGroups() throws Exception {
1087         ArtifactsBusinessLogic testSubject;
1088         String artifactId = "";
1089         ArtifactDefinition artifactInfo = buildArtifactPayload();
1090         List<GroupDefinition> groups = new ArrayList<>();
1091         List<GroupDataDefinition> result;
1092
1093         // test 1
1094         testSubject = createTestSubject();
1095         result = Deencapsulation.invoke(testSubject, "getUpdatedGroups", new Object[]{artifactId, artifactInfo, groups});
1096     }
1097
1098
1099     @Test
1100     public void testGetUpdatedGroupInstances() throws Exception {
1101         ArtifactsBusinessLogic testSubject;
1102         String artifactId = "";
1103         ArtifactDefinition artifactInfo = buildArtifactPayload();
1104         List<GroupDefinition> groups = new ArrayList<>();
1105         List<GroupInstance> result;
1106
1107         // default test
1108         testSubject = createTestSubject();
1109         result = Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups});
1110     }
1111
1112
1113     @Test
1114     public void testFindArtifact_1() throws Exception {
1115         ArtifactsBusinessLogic testSubject;
1116         String artifactId = "";
1117         Component component = createResourceObject(true);
1118         String parentId = "";
1119         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1120         Either<ImmutablePair<ArtifactDefinition, ComponentInstance>, ActionStatus> result;
1121
1122         // default test
1123         testSubject = createTestSubject();
1124         result = Deencapsulation.invoke(testSubject, "findArtifact",
1125                 new Object[]{artifactId, component, parentId, componentType});
1126     }
1127
1128
1129     @Test
1130     public void testFetchArtifactsFromInstance() throws Exception {
1131         ArtifactsBusinessLogic testSubject;
1132         String artifactId = "";
1133         Map<String, ArtifactDefinition> artifacts = new HashMap<>();
1134         ComponentInstance instance = new ComponentInstance();
1135
1136
1137         // default test
1138         testSubject = createTestSubject();
1139         Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", new Object[]{artifactId, artifacts, instance});
1140     }
1141
1142
1143     @Test
1144     public void testGenerateCustomizationUUIDOnInstance() throws Exception {
1145         ArtifactsBusinessLogic testSubject;
1146         String componentId = "";
1147         String instanceId = "";
1148         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1149         StorageOperationStatus result;
1150
1151         // default test
1152         testSubject = createTestSubject();
1153         result = Deencapsulation.invoke(testSubject, "generateCustomizationUUIDOnInstance",
1154                 new Object[]{componentId, instanceId, componentType});
1155     }
1156
1157
1158     @Test
1159     public void testFindComponentInstance() throws Exception {
1160         ArtifactsBusinessLogic testSubject;
1161         String componentInstanceId = "";
1162         Component component = createResourceObject(true);
1163         ComponentInstance result;
1164
1165         // default test
1166         testSubject = createTestSubject();
1167         result = Deencapsulation.invoke(testSubject, "findComponentInstance",
1168                 new Object[]{componentInstanceId, component});
1169     }
1170
1171
1172     @Test(expected= ComponentException.class)
1173     public void testDeploymentArtifactTypeIsLegalForParent_shouldThrowException() throws Exception {
1174         ArtifactsBusinessLogic testSubject;
1175         ArtifactDefinition artifactInfo = buildArtifactPayload();
1176         ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
1177         Map<String, ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>();
1178         // test 1
1179         testSubject = createTestSubject();
1180         testSubject.validateDeploymentArtifactTypeIsLegalForParent(artifactInfo, artifactType, resourceDeploymentArtifacts);
1181     }
1182
1183
1184     @Test
1185     public void testFillDeploymentArtifactTypeConf() throws Exception {
1186         ArtifactsBusinessLogic testSubject;
1187         NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1188         Map<String, ArtifactTypeConfig> result;
1189
1190         // default test
1191         testSubject = createTestSubject();
1192         result = Deencapsulation.invoke(testSubject, "fillDeploymentArtifactTypeConf",
1193                 new Object[]{parentType});
1194     }
1195
1196
1197     @Test
1198     public void testValidateArtifactTypeExists() throws Exception {
1199         ArtifactsBusinessLogic testSubject;
1200         Wrapper<ResponseFormat> responseWrapper = null;
1201         ArtifactDefinition artifactInfo = buildArtifactPayload();
1202
1203         // default test
1204         testSubject = createTestSubject();
1205         testSubject.getValidArtifactType(artifactInfo);
1206     }
1207
1208
1209     @Test
1210     public void testGetDeploymentArtifactTypeConfig() throws Exception {
1211         ArtifactsBusinessLogic testSubject;
1212         NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1213         ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
1214         ArtifactTypeConfig result;
1215
1216         // default test
1217         testSubject = createTestSubject();
1218         result = Deencapsulation.invoke(testSubject, "getDeploymentArtifactTypeConfig",
1219                 new Object[]{parentType, artifactType});
1220     }
1221
1222
1223     @Test(expected= ComponentException.class)
1224     public void testValidateHeatEnvDeploymentArtifact_shouldThrowException() throws Exception {
1225         ArtifactsBusinessLogic testSubject;
1226         Component component = createResourceObject(true);
1227         String parentId = "";
1228         ArtifactDefinition artifactInfo = buildArtifactPayload();
1229         NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
1230         // default test
1231         testSubject = createTestSubject();
1232         testSubject.validateHeatEnvDeploymentArtifact(component, parentId, artifactInfo, parentType);
1233     }
1234
1235     @Test
1236     public void testFillArtifactPayloadValidation() throws Exception {
1237         ArtifactsBusinessLogic testSubject;
1238         Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
1239         Wrapper<byte[]> payloadWrapper = new Wrapper<>();
1240         ArtifactDefinition artifactDefinition = buildArtifactPayload();
1241
1242         // default test
1243         testSubject = createTestSubject();
1244         testSubject.fillArtifactPayload(payloadWrapper, artifactDefinition);
1245     }
1246
1247
1248
1249     @Test
1250     public void testIsValidXml() throws Exception {
1251         ArtifactsBusinessLogic testSubject;
1252         byte[] xmlToParse = new byte[]{' '};
1253         boolean result;
1254
1255         // default test
1256         testSubject = createTestSubject();
1257         result = Deencapsulation.invoke(testSubject, "isValidXml", new Object[]{xmlToParse});
1258     }
1259
1260     @Test
1261     public void testHeatTimeoutValue() throws Exception {
1262         ArtifactsBusinessLogic testSubject;
1263         boolean isCreate = false;
1264         ArtifactDefinition artifactInfo = buildArtifactPayload();
1265         ArtifactDefinition currentArtifact = null;
1266         Either<Boolean, ResponseFormat> result;
1267
1268         // default test
1269         testSubject = createTestSubject();
1270         testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo);
1271     }
1272
1273     @Test
1274     public void testValidateHeatDeploymentArtifact() throws Exception {
1275         ArtifactsBusinessLogic testSubject;
1276         boolean isCreate = false;
1277         ArtifactDefinition artifactInfo = buildArtifactPayload();
1278         ArtifactDefinition currentArtifact = null;
1279         Either<Boolean, ResponseFormat> result;
1280
1281         // default test
1282         testSubject = createTestSubject();
1283         testSubject.validateHeatTimeoutValue(isCreate, artifactInfo, artifactInfo);
1284     }
1285
1286
1287     @Test(expected= ComponentException.class)
1288     public void testValidateResourceType_shouldThrowException() throws Exception {
1289         ArtifactsBusinessLogic testSubject;
1290         ResourceTypeEnum resourceType = ResourceTypeEnum.VF;
1291         ArtifactDefinition artifactInfo = buildArtifactPayload();
1292         List<String> typeList = new ArrayList<>();
1293         Either<Boolean, ResponseFormat> result;
1294
1295         // test 1
1296         testSubject = createTestSubject();
1297         testSubject.validateResourceType(resourceType, artifactInfo, typeList);
1298         result = Deencapsulation.invoke(testSubject, "validateResourceType", new Object[]{resourceType, artifactInfo, typeList});
1299     }
1300
1301
1302     @Test
1303     public void testValidateAndConvertHeatParameters() throws Exception {
1304         ArtifactsBusinessLogic testSubject;
1305         ArtifactDefinition artifactInfo = buildArtifactPayload();
1306         String artifactType = "";
1307         Either<ArtifactDefinition, ResponseFormat> result;
1308
1309         // default test
1310         testSubject = createTestSubject();
1311         testSubject.validateAndConvertHeatParameters(artifactInfo, artifactType);
1312     }
1313
1314     @Test
1315     public void testGetDeploymentArtifacts() throws Exception {
1316         ArtifactsBusinessLogic testSubject;
1317         Component component = createResourceObject(true);
1318         NodeTypeEnum parentType = null;
1319         String ciId = "";
1320         List<ArtifactDefinition> result;
1321
1322         // default test
1323         testSubject = createTestSubject();
1324         result = testSubject.getDeploymentArtifacts(component, parentType, ciId);
1325     }
1326
1327
1328     @Test
1329     public void testValidateFirstUpdateHasPayload() throws Exception {
1330         ArtifactsBusinessLogic testSubject;
1331         ArtifactDefinition artifactInfo = buildArtifactPayload();
1332         ArtifactDefinition currentArtifact = null;
1333         Either<Boolean, ResponseFormat> result;
1334
1335         // default test
1336         testSubject = createTestSubject();
1337         result = Deencapsulation.invoke(testSubject, "validateFirstUpdateHasPayload",
1338                 new Object[]{artifactInfo, artifactInfo});
1339     }
1340
1341     @Test
1342     public void testValidateAndSetArtifactname() throws Exception {
1343         ArtifactsBusinessLogic testSubject;
1344         ArtifactDefinition artifactInfo = buildArtifactPayload();
1345         Either<Boolean, ResponseFormat> result;
1346
1347         // default test
1348         testSubject = createTestSubject();
1349         testSubject.validateAndSetArtifactName(artifactInfo);
1350     }
1351
1352     @Test
1353     public void testValidateArtifactTypeNotChanged() throws Exception {
1354         ArtifactsBusinessLogic testSubject;
1355         ArtifactDefinition artifactInfo = buildArtifactPayload();
1356         ArtifactDefinition currentArtifact = null;
1357         Either<Boolean, ResponseFormat> result;
1358
1359         // default test
1360         testSubject = createTestSubject();
1361         result = Deencapsulation.invoke(testSubject, "validateArtifactTypeNotChanged",
1362                 new Object[]{artifactInfo, artifactInfo});
1363     }
1364
1365
1366     @Test
1367     public void testValidateOrSetArtifactGroupType() throws Exception {
1368         ArtifactsBusinessLogic testSubject;
1369         ArtifactDefinition artifactInfo = buildArtifactPayload();
1370         ArtifactDefinition currentArtifact = null;
1371         Either<ArtifactDefinition, ResponseFormat> result;
1372
1373         // default test
1374         testSubject = createTestSubject();
1375         result = Deencapsulation.invoke(testSubject, "validateOrSetArtifactGroupType",
1376                 new Object[]{artifactInfo, artifactInfo});
1377     }
1378
1379     @Test
1380     public void testCheckAndSetUnUpdatableFields() throws Exception {
1381         ArtifactsBusinessLogic testSubject;
1382
1383         ArtifactDefinition artifactInfo = buildArtifactPayload();
1384         ArtifactDefinition currentArtifact = null;
1385         ArtifactGroupTypeEnum type = null;
1386
1387         // test 1
1388         testSubject = createTestSubject();
1389         type = null;
1390         Deencapsulation.invoke(testSubject, "checkAndSetUnUpdatableFields", user,
1391                 artifactInfo, artifactInfo, ArtifactGroupTypeEnum.class);
1392     }
1393
1394     @Test
1395     public void testCheckAndSetUnupdatableHeatParams() throws Exception {
1396         ArtifactsBusinessLogic testSubject;
1397         List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1398         List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1399
1400
1401         // default test
1402         testSubject = createTestSubject();
1403         Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", new Object[]{heatParameters, currentParameters});
1404     }
1405
1406     @Test
1407     public void testGetMapOfParameters() throws Exception {
1408         ArtifactsBusinessLogic testSubject;
1409         List<HeatParameterDefinition> currentParameters = new ArrayList<>();
1410         Map<String, HeatParameterDefinition> result;
1411
1412         // default test
1413         testSubject = createTestSubject();
1414         result = Deencapsulation.invoke(testSubject, "getMapOfParameters", new Object[]{currentParameters});
1415     }
1416
1417     @Test
1418     public void testGivenValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1419         final byte[] payload = "validYaml: yes".getBytes();
1420         ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1421
1422         final boolean isArtifactMetadataUpdate = false;
1423         ArtifactsBusinessLogic testSubject = getTestSubject();
1424
1425         Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1426                 new Object[] { artifactInfo, isArtifactMetadataUpdate });
1427         assertArrayEquals(payload, result.left().value());
1428     }
1429
1430
1431
1432
1433
1434     @Test
1435         public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1436                 final int expectedStatus = 100;
1437                 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1438                 final byte[] payload = "invalidYaml".getBytes();
1439                 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1440
1441         final boolean isArtifactMetadataUpdate = false;
1442         ArtifactsBusinessLogic testSubject = getTestSubject();
1443         testSubject.setComponentsUtils(componentsUtils);
1444
1445         Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1446                 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1447
1448         int status = result.right().value().getStatus();
1449         assertEquals(expectedStatus, status);
1450     }
1451
1452     @Test
1453         public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() {
1454                 final int expectedStatus = 101;
1455                 when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1456                 final byte[] payload = "".getBytes();
1457                 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
1458
1459         final boolean isArtifactMetadataUpdate = false;
1460         ArtifactsBusinessLogic testSubject = getTestSubject();
1461         testSubject.setComponentsUtils(componentsUtils);
1462
1463         Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1464                 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1465
1466                 int status = result.right().value().getStatus();
1467                 assertEquals(expectedStatus, status);
1468     }
1469
1470
1471     @Test
1472         public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
1473                 final byte[] payload = "heat_template_version: 1.0".getBytes();
1474                 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1475
1476         final boolean isArtifactMetadataUpdate = false;
1477         ArtifactsBusinessLogic testSubject = getTestSubject();
1478
1479         Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1480                 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1481         assertArrayEquals(payload, result.left().value());
1482     }
1483
1484     @Test
1485         public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
1486                 final int expectedStatus = 1000;
1487                 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
1488                 final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes();
1489                 ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
1490
1491         final boolean isArtifactMetadataUpdate = false;
1492         ArtifactsBusinessLogic testSubject = getTestSubject();
1493         testSubject.setComponentsUtils(componentsUtils);
1494
1495         Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
1496                 new Object[]{artifactInfo, isArtifactMetadataUpdate});
1497
1498         int status = result.right().value().getStatus();
1499         assertEquals(expectedStatus, status);
1500     }
1501
1502     private ArtifactDefinition createArtifactInfo(byte[] payload, String artifactName, ArtifactTypeEnum artifactType) {
1503         ArtifactDefinition artifactInfo = new ArtifactDefinition();
1504         artifactInfo.setArtifactName(artifactName);
1505         artifactInfo.setArtifactType(artifactType.getType());
1506         artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
1507         artifactInfo.setPayload(Base64.encodeBase64(payload));
1508         return artifactInfo;
1509     }
1510
1511     @Test
1512     public void testValidateUserRole() throws Exception {
1513         ArtifactsBusinessLogic testSubject;
1514
1515         AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
1516         String componentId = "";
1517         String artifactId = "";
1518         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1519         ArtifactsBusinessLogic arb = getTestSubject();
1520         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1521         Either<Boolean, ResponseFormat> result;
1522
1523         // default test
1524         testSubject = createTestSubject();
1525         result = Deencapsulation.invoke(testSubject, "validateUserRole",
1526                 new Object[]{user, auditingAction, componentId, artifactId, componentType,
1527                         operation});
1528     }
1529
1530     @Test
1531     public void testDetectAuditingType() throws Exception {
1532         ArtifactsBusinessLogic testSubject;
1533         ArtifactsBusinessLogic arb = getTestSubject();
1534         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1535         String origMd5 = "";
1536         AuditingActionEnum result;
1537
1538         // default test
1539         testSubject = createTestSubject();
1540         result = Deencapsulation.invoke(testSubject, "detectAuditingType",
1541                 new Object[]{operation, origMd5});
1542     }
1543
1544
1545     @Test
1546     public void testCreateEsArtifactData() throws Exception {
1547         ArtifactsBusinessLogic testSubject;
1548         ArtifactDataDefinition artifactInfo = buildArtifactPayload();
1549         byte[] artifactPayload = new byte[]{' '};
1550         DAOArtifactData result;
1551
1552         // default test
1553         testSubject = createTestSubject();
1554         result = testSubject.createEsArtifactData(artifactInfo, artifactPayload);
1555     }
1556
1557
1558     @Test
1559     public void testIsArtifactMetadataUpdate() throws Exception {
1560         ArtifactsBusinessLogic testSubject;
1561         AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
1562         boolean result;
1563
1564         // default test
1565         testSubject = createTestSubject();
1566         result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
1567                 new Object[]{auditingActionEnum});
1568     }
1569
1570     @Test
1571     public void testIsDeploymentArtifact() throws Exception {
1572         ArtifactsBusinessLogic testSubject;
1573         ArtifactDefinition artifactInfo = buildArtifactPayload();
1574         boolean result;
1575
1576         // default test
1577         testSubject = createTestSubject();
1578         result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[]{artifactInfo});
1579     }
1580
1581
1582     @Test
1583     public void testSetArtifactPlaceholderCommonFields() throws Exception {
1584         ArtifactsBusinessLogic testSubject;
1585         String resourceId = "";
1586
1587         ArtifactDefinition artifactInfo = buildArtifactPayload();
1588
1589         // test 1
1590         testSubject = createTestSubject();
1591         Deencapsulation.invoke(testSubject, "setArtifactPlaceholderCommonFields",
1592                 resourceId, user, artifactInfo);
1593
1594     }
1595
1596
1597     @Test
1598     public void testCreateEsHeatEnvArtifactDataFromString() throws Exception {
1599         ArtifactsBusinessLogic testSubject;
1600         ArtifactDefinition artifactDefinition = buildArtifactPayload();
1601         String payloadStr = "";
1602         Either<DAOArtifactData, ResponseFormat> result;
1603
1604         // default test
1605         testSubject = createTestSubject();
1606         result = Deencapsulation.invoke(testSubject, "createEsHeatEnvArtifactDataFromString",
1607                 new Object[]{artifactDefinition, payloadStr});
1608     }
1609
1610     @Test
1611     public void testUpdateArtifactOnGroupInstance() throws Exception {
1612         ArtifactsBusinessLogic testSubject;
1613         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
1614         Component component = createResourceObject(true);
1615         String instanceId = "";
1616         String prevUUID = "";
1617         ArtifactDefinition artifactInfo = buildArtifactPayload();
1618         Either<ArtifactDefinition, ResponseFormat> result;
1619
1620         // test 1
1621         testSubject = createTestSubject();
1622         testSubject.updateArtifactOnGroupInstance(component, instanceId, prevUUID, artifactInfo, artifactInfo);
1623     }
1624
1625     @Test
1626     public void testGenerateHeatEnvPayload() throws Exception {
1627         ArtifactsBusinessLogic testSubject;
1628         ArtifactDefinition artifactDefinition = buildArtifactPayload();
1629         String result;
1630
1631         // default test
1632         testSubject = createTestSubject();
1633         result = Deencapsulation.invoke(testSubject, "generateHeatEnvPayload",
1634                 new Object[]{artifactDefinition});
1635     }
1636
1637
1638     @Test
1639     public void testBuildJsonForUpdateArtifact() throws Exception {
1640         ArtifactsBusinessLogic testSubject;
1641         ArtifactDefinition artifactInfo = buildArtifactPayload();
1642         ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1643         List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1644         Map<String, Object> result;
1645
1646         // default test
1647         testSubject = createTestSubject();
1648         result = testSubject.buildJsonForUpdateArtifact(artifactInfo, artifactGroupType, updatedRequiredArtifacts);
1649     }
1650
1651     @Test
1652     public void testBuildJsonForUpdateArtifact_1() throws Exception {
1653         ArtifactsBusinessLogic testSubject;
1654         String artifactId = "";
1655         String artifactName = "";
1656         String artifactType = "";
1657         ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
1658         String label = "";
1659         String displayName = "";
1660         String description = "";
1661         byte[] artifactContent = new byte[]{' '};
1662         List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
1663         List<HeatParameterDefinition> heatParameters = new ArrayList<>();
1664         Map<String, Object> result;
1665
1666         // test 1
1667         testSubject = createTestSubject();
1668         artifactId = "";
1669         result = testSubject.buildJsonForUpdateArtifact(artifactId, artifactName, artifactType, artifactGroupType,
1670                 label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters);
1671     }
1672
1673
1674     @Test
1675     public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception {
1676         ArtifactsBusinessLogic testSubject;
1677         List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
1678         List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
1679
1680
1681         // default test
1682         testSubject = createTestSubject();
1683         Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", new Object[]{currentHeatEnvParams, updatedHeatEnvParams});
1684     }
1685
1686
1687     @Test
1688     public void testExtractArtifactDefinition() throws Exception {
1689         ArtifactsBusinessLogic testSubject;
1690         ArtifactDefinition artifactDefinition = buildArtifactPayload();
1691         Either<ArtifactDefinition, Operation> eitherArtifact = Either.left(artifactDefinition);
1692         ArtifactDefinition result;
1693
1694         // default test
1695         testSubject = createTestSubject();
1696         result = testSubject.extractArtifactDefinition(eitherArtifact);
1697     }
1698
1699
1700     @Test
1701     public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception {
1702         ArtifactsBusinessLogic testSubject;
1703         ArtifactDefinition artifact = null;
1704         ArtifactDefinition artifactInfo = buildArtifactPayload();
1705
1706         // default test
1707         testSubject = createTestSubject();
1708         Deencapsulation.invoke(testSubject, "setHeatCurrentValuesOnHeatEnvDefaultValues",
1709                 artifactInfo, artifactInfo);
1710     }
1711
1712     @Test
1713     public void testBuildHeatEnvFileName() throws Exception {
1714         ArtifactsBusinessLogic testSubject;
1715         ArtifactDefinition heatArtifact = null;
1716         ArtifactDefinition artifactInfo = buildArtifactPayload();
1717         Map<String, Object> placeHolderData = new HashMap<>();
1718
1719
1720         // default test
1721         testSubject = createTestSubject();
1722         Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{artifactInfo, artifactInfo, placeHolderData});
1723     }
1724
1725     @Test
1726     public void testHandleEnvArtifactVersion() throws Exception {
1727         ArtifactsBusinessLogic testSubject;
1728         ArtifactDefinition artifactInfo = buildArtifactPayload();
1729         Map<String, String> existingEnvVersions = new HashMap<>();
1730
1731
1732         // test 1
1733         testSubject = createTestSubject();
1734         Deencapsulation.invoke(testSubject, "handleEnvArtifactVersion", artifactInfo, existingEnvVersions);
1735     }
1736
1737     @Test
1738     public void testHandleArtifactsRequestForInnerVfcComponent() throws Exception {
1739         ArtifactsBusinessLogic testSubject;
1740         List<ArtifactDefinition> artifactsToHandle = new ArrayList<>();
1741         Resource component = createResourceObject(true);
1742
1743         List<ArtifactDefinition> vfcsNewCreatedArtifacts = new ArrayList<>();
1744         ArtifactsBusinessLogic arb = getTestSubject();
1745         ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
1746         boolean shouldLock = false;
1747         boolean inTransaction = false;
1748         List<ArtifactDefinition> result;
1749
1750         // default test
1751         testSubject = createTestSubject();
1752         result = testSubject.handleArtifactsForInnerVfcComponent(artifactsToHandle, component, user,
1753                 vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction);
1754     }
1755
1756     @Test
1757     public void testSetNodeTemplateOperation() throws Exception {
1758         ArtifactsBusinessLogic testSubject;
1759         NodeTemplateOperation nodeTemplateOperation = null;
1760
1761         // default test
1762         testSubject = createTestSubject();
1763         Deencapsulation.invoke(testSubject, "setNodeTemplateOperation", NodeTemplateOperation.class);
1764     }
1765
1766     @Test
1767     public void testHandleArtifactRequest() {
1768
1769         String componentId = "componentId";
1770         ArtifactOperationInfo operationInfo = artifactBL.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE);
1771         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1772         artifactDefinition.setArtifactName("other");
1773         artifactDefinition.setUniqueId("artifactId");
1774         artifactDefinition.setPayload("Test".getBytes());
1775         artifactDefinition.setArtifactLabel("other");
1776         artifactDefinition.setDescription("Test artifact");
1777         artifactDefinition.setArtifactType(ArtifactTypeEnum.OTHER.name());
1778         artifactDefinition.setArtifactUUID("artifactUId");
1779         artifactDefinition.setArtifactLabel("test");
1780         artifactDefinition.setArtifactDisplayName("Test");
1781         artifactDefinition.setEsId("esId");
1782
1783         String requestMd5 = GeneralUtility.calculateMD5Base64EncodedByString("data");
1784         User user = new User();
1785         user.setUserId("userId");
1786
1787         List<ComponentInstance> componentInstanceList = new ArrayList<>();
1788         List<InterfaceDefinition> interfaceDefinitionsList = new ArrayList<>();
1789         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1790         Map<String, Operation> operationsMap = new HashMap<>();
1791         artifactDefinitionMap.put("sample", artifactDefinition);
1792
1793         ComponentInstance componentInstance = new ComponentInstance();
1794         componentInstance.setUniqueId(componentId);
1795         componentInstance.setDeploymentArtifacts(artifactDefinitionMap);
1796         componentInstanceList.add(componentInstance);
1797
1798         Operation operation = new Operation();
1799         operation.setUniqueId("ouuid");
1800         operation.setName("operation1");
1801         operation.setImplementation(artifactDefinition);
1802         operationsMap.put("op1", operation);
1803
1804         Map<String, InterfaceDefinition> interfaceDefinitions = new HashMap<>();
1805
1806         InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1807         interfaceDefinition.setType("iuuid");
1808         interfaceDefinition.setOperationsMap(operationsMap);
1809         interfaceDefinitions.put("iuuid", interfaceDefinition);
1810
1811         interfaceDefinitionsList.add(interfaceDefinition);
1812
1813         ResourceMetadataDataDefinition resourceMetadaData = new ResourceMetadataDataDefinition();
1814         resourceMetadaData.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
1815         resourceMetadaData.setLastUpdaterUserId(user.getUserId());
1816         Resource resource = new Resource(new ResourceMetadataDefinition(resourceMetadaData));
1817         resource.setComponentInstances(componentInstanceList);
1818         resource.setUniqueId(componentId);
1819         resource.setInterfaces(interfaceDefinitions);
1820
1821         user.setRole(Role.ADMIN.name());
1822
1823         when(userValidations.validateUserExists(Mockito.eq("userId")))
1824                 .thenReturn(user);
1825         when(toscaOperationFacade.getToscaFullElement(any()))
1826                 .thenReturn(Either.left(resource));
1827         when(artifactToscaOperation.getArtifactById(any(), any(), any(), any()))
1828                 .thenReturn(Either.left(artifactDefinition));
1829         when(artifactsResolver.findArtifactOnComponent(any(), any(ComponentTypeEnum.class), anyString()))
1830                 .thenReturn(artifactDefinition);
1831         when(graphLockOperation.lockComponent(eq(resource.getUniqueId()), any(NodeTypeEnum.class)))
1832                 .thenReturn(StorageOperationStatus.OK);
1833         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any(), anyBoolean()))
1834                 .thenReturn(Either.left(artifactDefinition));
1835         when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class)))
1836                 .thenReturn(CassandraOperationStatus.OK);
1837         when(toscaOperationFacade.getToscaElement(anyString()))
1838                 .thenReturn(Either.left(resource));
1839         when(interfaceOperation.updateInterfaces(anyString(), anyList()))
1840                 .thenReturn(Either.left(interfaceDefinitionsList));
1841         when(artifactToscaOperation.getAllInstanceArtifacts(resource.getUniqueId(), componentId)).thenReturn(Either.left(artifactDefinitionMap));
1842         when(toscaOperationFacade.generateCustomizationUUIDOnInstance(any(), any())).thenReturn(StorageOperationStatus.OK);
1843
1844         Either<ArtifactDefinition, Operation> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(), ComponentTypeEnum.RESOURCE_INSTANCE
1845                 , operationInfo, artifactDefinition.getUniqueId(), artifactDefinition, requestMd5, "data", "iuuid",
1846                 null, componentId, "resources");
1847
1848         assertTrue(result.isLeft());
1849         ArtifactDefinition leftValue = result.left().value();
1850         assertEquals(artifactDefinition.getArtifactName(), leftValue.getArtifactName());
1851     }
1852
1853     @Test
1854     public void testGenerateToscaArtifact() {
1855
1856         Resource resource = new Resource();
1857         resource.setComponentType(ComponentTypeEnum.RESOURCE);
1858         resource.setUniqueId("resourceId");
1859
1860         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1861         artifactDefinition.setUniqueId("artifactId");
1862         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_CSAR.name());
1863         User user = new User();
1864         boolean inCertificationRequest = false;
1865         boolean fetchTemplatesFromDB = false;
1866         boolean shouldLock = false;
1867         boolean inTransaction = false;
1868
1869         byte[] csar = "test.csar".getBytes();
1870
1871         when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1872                 .thenReturn(Either.left(csar));
1873         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(Component.class), anyString(), any(NodeTypeEnum.class), anyString(), anyBoolean()))
1874                 .thenReturn(Either.left(artifactDefinition));
1875         when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class)))
1876                 .thenReturn(CassandraOperationStatus.OK);
1877
1878         Either<ArtifactDefinition, Operation> result
1879                 = artifactBL.generateAndSaveToscaArtifact(artifactDefinition, resource, user, inCertificationRequest,
1880                 shouldLock, inTransaction, fetchTemplatesFromDB);
1881
1882
1883         Assert.assertEquals(artifactDefinition.getUniqueId(), result.left().value().getUniqueId());
1884     }
1885
1886     @Test
1887     public void testHandleDownloadToscaModelRequest() {
1888         ArtifactsBusinessLogic testSubject = getTestSubject();
1889         byte[] generatedCsar = "test.csar".getBytes();
1890
1891         Resource resource = new Resource();
1892         resource.setComponentType(ComponentTypeEnum.RESOURCE);
1893
1894         ArtifactDefinition csarArtifact = new ArtifactDefinition();
1895         csarArtifact.setArtifactName("csarArtifact");
1896         csarArtifact.setArtifactType(ArtifactTypeEnum.HEAT_ENV.name());
1897         csarArtifact.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1898
1899         when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
1900                 .thenReturn(Either.left(generatedCsar));
1901
1902         ImmutablePair<String, byte[]> result =
1903                 testSubject.handleDownloadToscaModelRequest(resource, csarArtifact);
1904
1905         assertEquals(csarArtifact.getArtifactName(), result.getKey());
1906     }
1907
1908     @Test
1909     public void testHandleDownloadRequestById_returnsSuccessful() {
1910         String componentId = "componentId";
1911         String artifactId = "artifactId";
1912         String parentId = "parentId";
1913
1914         DAOArtifactData daoArtifactData = new DAOArtifactData();
1915         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1916         InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
1917         Operation operation = new Operation();
1918         operation.setUniqueId("op1");
1919
1920         artifactDefinition.setArtifactName("test.csar");
1921         artifactDefinition.setArtifactType(ComponentTypeEnum.RESOURCE.name());
1922         artifactDefinition.setArtifactType(ArtifactTypeEnum.HEAT.name());
1923         artifactDefinition.setUniqueId(artifactId);
1924         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
1925
1926         daoArtifactData.setDataAsArray("data".getBytes());
1927
1928         Resource resource = new Resource();
1929         resource.setUniqueId("resourceId");
1930         resource.setAbstract(false);
1931
1932         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1933         Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
1934         interfaceDefinitionMap.put("interDef1", interfaceDefinition);
1935
1936         artifactDefinitionMap.put("artifact1", artifactDefinition);
1937
1938         resource.setDeploymentArtifacts(artifactDefinitionMap);
1939
1940         User user = new User();
1941         user.setUserId("userId");
1942
1943         when(userValidations.validateUserExists(eq(user.getUserId())))
1944                 .thenReturn(user);
1945         when(toscaOperationFacade.getToscaFullElement(eq(componentId)))
1946                 .thenReturn(Either.left(resource));
1947         when(artifactToscaOperation.getArtifactById(anyString(), anyString(), any(ComponentTypeEnum.class), anyString()))
1948                 .thenReturn(Either.left(artifactDefinition));
1949         when(artifactCassandraDao.getArtifact(any()))
1950                 .thenReturn(Either.left(daoArtifactData));
1951         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
1952
1953         ImmutablePair<String, byte[]> result =
1954                 artifactBL.handleDownloadRequestById(componentId, artifactId, user.getUserId(), ComponentTypeEnum.RESOURCE,
1955                         parentId, null);
1956         Assert.assertEquals(artifactDefinition.getArtifactName(), result.getKey());
1957     }
1958
1959     @Test
1960     public void testHandleDownloadRequestById_givenUserIdIsNull_thenReturnsError() {
1961         String componentId = "componentId";
1962         String userId = null;
1963         String artifactId = "artifactId";
1964
1965         try {
1966             ImmutablePair<String, byte[]> result =
1967                     artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId
1968                             , null);
1969         } catch (ComponentException e) {
1970             assertEquals(e.getActionStatus(), ActionStatus.MISSING_INFORMATION);
1971             return;
1972         }
1973         fail();
1974     }
1975
1976     @Test
1977     public void testHandleGetArtifactByType_returnsSuccessful() {
1978         String parentId = "parentId";
1979         String componentId = "componentId";
1980         String artifactGroupType = ArtifactGroupTypeEnum.OTHER.name();
1981         String userId = "userId";
1982
1983         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1984         artifactDefinition.setArtifactName("test.csar");
1985
1986         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
1987         artifactDefinitionMap.put("artifact1", artifactDefinition);
1988
1989         Service service = new Service();
1990         service.setUniqueId(componentId);
1991
1992         when(toscaOperationFacade.getToscaElement(eq(componentId), any(ComponentParametersView.class)))
1993                 .thenReturn(Either.left(service));
1994         when(graphLockOperation.lockComponent(eq(componentId), any(NodeTypeEnum.class)))
1995                 .thenReturn(StorageOperationStatus.OK);
1996         when(artifactToscaOperation.getArtifacts(any(), any(NodeTypeEnum.class), any(ArtifactGroupTypeEnum.class), any()))
1997                 .thenReturn(Either.left(artifactDefinitionMap));
1998
1999         Map<String, ArtifactDefinition> result =
2000                 artifactBL.handleGetArtifactsByType(ComponentTypeEnum.SERVICE.name(), parentId, ComponentTypeEnum.SERVICE,
2001                         componentId, artifactGroupType, userId);
2002         Assert.assertEquals(artifactDefinition.getArtifactName(), result.get("artifact1").getArtifactName());
2003     }
2004
2005     @Test
2006     public void testGetDeployment_returnsSuccessful() {
2007
2008         Resource resource = new Resource();
2009         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2010         ComponentInstance componentInstance = new ComponentInstance();
2011         NodeTypeEnum parentType = NodeTypeEnum.ResourceInstance;
2012         String ciId = "ciId";
2013
2014         artifactDefinition.setArtifactName("test.csar");
2015         componentInstance.setUniqueId(ciId);
2016         List<ComponentInstance> componentInstanceList = new ArrayList<>();
2017         componentInstanceList.add(componentInstance);
2018
2019         Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
2020         deploymentArtifacts.put("test.csar", artifactDefinition);
2021
2022         resource.setDeploymentArtifacts(deploymentArtifacts);
2023         resource.setComponentInstances(componentInstanceList);
2024         componentInstance.setDeploymentArtifacts(deploymentArtifacts);
2025
2026         List<ArtifactDefinition> result = artifactBL.getDeploymentArtifacts(resource, parentType, ciId);
2027         Assert.assertTrue(result.size() == 1);
2028         Assert.assertEquals(artifactDefinition.getArtifactName(), result.get(0).getArtifactName());
2029     }
2030
2031     @Test
2032     public void testHandleDelete_returnsSuccessful() {
2033
2034         String parentId = "parentId";
2035         String artifactId = "artifactId";
2036         AuditingActionEnum auditingAction = AuditingActionEnum.ARTIFACT_DELETE;
2037         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2038         Resource resource = new Resource();
2039         ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
2040         boolean shouldUnlock = true;
2041         boolean inTransaction = false;
2042         User user = new User();
2043
2044         artifactDefinition.setArtifactName("test.csar");
2045         artifactDefinition.setUniqueId(artifactId);
2046         artifactDefinition.setEsId("esId");
2047
2048         ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
2049
2050         Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
2051         deploymentArtifacts.put(artifactId, artifactDefinition);
2052
2053         resource.setUniqueId(parentId);
2054         resource.setComponentType(ComponentTypeEnum.RESOURCE);
2055         resource.setDeploymentArtifacts(deploymentArtifacts);
2056
2057         when(graphLockOperation.lockComponent(eq(parentId), any(NodeTypeEnum.class)))
2058                 .thenReturn(StorageOperationStatus.OK);
2059         when(toscaOperationFacade.getToscaElement(eq(parentId)))
2060                 .thenReturn(Either.left(resource));
2061         when(artifactToscaOperation.isCloneNeeded(any(), any(ArtifactDefinition.class), any(NodeTypeEnum.class)))
2062                 .thenReturn(Either.left(Boolean.FALSE));
2063         when(artifactToscaOperation.removeArtifactOnGraph(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class), anyBoolean()))
2064                 .thenReturn(Either.left(artifactDataDefinition));
2065         when(artifactCassandraDao.deleteArtifact(any()))
2066                 .thenReturn(CassandraOperationStatus.OK);
2067
2068         Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result = artifactBL.handleDelete(parentId, artifactId, user, auditingAction, componentType, resource, shouldUnlock, inTransaction);
2069         Either<ArtifactDefinition, Operation> leftValue = result.left().value();
2070         Assert.assertEquals(artifactDefinition.getArtifactName(), leftValue.left().value().getArtifactName());
2071     }
2072
2073     @Test
2074     public void testDownloadRsrcArtifactByNames_givenServiceNameNull_thenReturnsError() {
2075         String serviceName = null;
2076         String serviceVersion = "2.0";
2077         String resourceName = "resource";
2078         String resourceVersion = "1.0";
2079         String artifactName = "artifactName";
2080
2081         try{
2082             artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName);
2083         } catch(ComponentException e) {
2084             assertEquals(ActionStatus.INVALID_CONTENT, e.getActionStatus());
2085             return;
2086         }
2087         fail();
2088
2089     }
2090
2091     @Test
2092     public void testDownloadRsrcArtifactByNames_returnsSuccessful() {
2093
2094         String serviceName = "service1";
2095         String resourceName = "resource1";
2096         String artifactName = "artifact1";
2097         String version = "1.0";
2098
2099         Resource resource = new Resource();
2100         resource.setName(resourceName);
2101         resource.setVersion(version);
2102
2103         Service service = new Service();
2104         service.setVersion(version);
2105         service.setName(serviceName);
2106
2107         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2108         artifactDefinition.setEsId("esId");
2109
2110         DAOArtifactData esArtifactData = new DAOArtifactData();
2111         esArtifactData.setDataAsArray("test".getBytes());
2112
2113         artifactDefinition.setArtifactName(artifactName);
2114         List<Service> serviceList = new ArrayList<>();
2115         Map<String, ArtifactDefinition> artifacts = new HashMap<>();
2116         artifacts.put(artifactName, artifactDefinition);
2117
2118         serviceList.add(service);
2119         resource.setDeploymentArtifacts(artifacts);
2120
2121         when(toscaOperationFacade.getComponentByNameAndVersion(eq(ComponentTypeEnum.RESOURCE), eq(resourceName), eq(version), eq(JsonParseFlagEnum.ParseMetadata)))
2122                 .thenReturn(Either.left(resource));
2123         doReturn(Either.left(serviceList)).when(toscaOperationFacade).getBySystemName(eq(ComponentTypeEnum.SERVICE), eq(serviceName));
2124         when(artifactCassandraDao.getArtifact(any()))
2125                 .thenReturn(Either.left(esArtifactData));
2126
2127         byte[] result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName);
2128         Assert.assertEquals(esArtifactData.getDataAsArray(), result);
2129     }
2130
2131     private ArtifactsBusinessLogic getTestSubject() {
2132         return new ArtifactsBusinessLogic(artifactCassandraDao, toscaExportHandler, csarUtils, lifecycleBusinessLogic,
2133             userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation, groupTypeOperation,
2134             interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);
2135     }
2136 }