Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ArtifactBusinessLogicTest.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  */
20
21 package org.openecomp.sdc.be.components.impl;
22
23 import com.fasterxml.jackson.annotation.JsonInclude;
24 import com.fasterxml.jackson.databind.DeserializationFeature;
25 import com.fasterxml.jackson.databind.ObjectMapper;
26 import com.fasterxml.jackson.databind.SerializationFeature;
27 import com.google.gson.Gson;
28 import com.google.gson.GsonBuilder;
29 import com.google.gson.JsonElement;
30 import fj.data.Either;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.InjectMocks;
35 import org.mockito.Mock;
36 import org.mockito.Mockito;
37 import org.mockito.junit.MockitoJUnitRunner;
38 import org.openecomp.sdc.be.components.ArtifactsResolver;
39 import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
40 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
41 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
42 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
43 import org.openecomp.sdc.be.config.ConfigurationManager;
44 import org.openecomp.sdc.be.dao.api.ActionStatus;
45 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
46 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
47 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
48 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
49 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
50 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
51 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
52 import org.openecomp.sdc.be.impl.ComponentsUtils;
53 import org.openecomp.sdc.be.model.ArtifactDefinition;
54 import org.openecomp.sdc.be.model.ArtifactType;
55 import org.openecomp.sdc.be.model.HeatParameterDefinition;
56 import org.openecomp.sdc.be.model.InterfaceDefinition;
57 import org.openecomp.sdc.be.model.Operation;
58 import org.openecomp.sdc.be.model.Resource;
59 import org.openecomp.sdc.be.model.Service;
60 import org.openecomp.sdc.be.model.User;
61 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
62 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
63 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
64 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
65 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
66 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
67 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
68 import org.openecomp.sdc.be.resources.data.DAOArtifactData;
69 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
70 import org.openecomp.sdc.be.servlets.RepresentationUtils;
71 import org.openecomp.sdc.be.tosca.CsarUtils;
72 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
73 import org.openecomp.sdc.be.user.UserBusinessLogic;
74 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
75 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
76 import org.openecomp.sdc.common.api.ConfigurationSource;
77 import org.openecomp.sdc.common.impl.ExternalConfiguration;
78 import org.openecomp.sdc.common.impl.FSConfigurationSource;
79 import org.openecomp.sdc.exception.ResponseFormat;
80
81 import java.io.IOException;
82 import java.util.ArrayList;
83 import java.util.Collections;
84 import java.util.HashMap;
85 import java.util.List;
86 import java.util.Map;
87
88 import static org.assertj.core.api.Java6Assertions.assertThat;
89 import static org.mockito.ArgumentMatchers.any;
90 import static org.mockito.ArgumentMatchers.anyBoolean;
91 import static org.mockito.ArgumentMatchers.anyString;
92 import static org.mockito.ArgumentMatchers.eq;
93 import static org.mockito.Mockito.times;
94 import static org.mockito.Mockito.verify;
95 import static org.mockito.Mockito.when;
96 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
97 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
98
99 @RunWith(MockitoJUnitRunner.class)
100 public class ArtifactBusinessLogicTest extends BaseBusinessLogicMock{
101
102     public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN", System.currentTimeMillis());
103     private final static String RESOURCE_INSTANCE_NAME = "Service-111";
104     private final static String INSTANCE_ID = "S-123-444-ghghghg";
105
106     private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
107     private final static String ARTIFACT_LABEL = "assettoscatemplate";
108     private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
109     private final static byte[] PAYLOAD = "some payload".getBytes();
110
111     static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
112     static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
113
114     @InjectMocks
115     private ArtifactsBusinessLogic artifactBL;
116     @Mock
117     private UserBusinessLogic userBusinessLogic;
118     @Mock
119     private ArtifactOperation artifactOperation;
120     @Mock
121     public ComponentsUtils componentsUtils;
122     @Mock
123     private UserAdminOperation userOperation;
124     @Mock
125     private ArtifactCassandraDao artifactCassandraDao;
126     @Mock
127     public ToscaOperationFacade toscaOperationFacade;
128     @Mock
129     private NodeTemplateOperation nodeTemplateOperation;
130     @Mock
131     private IGraphLockOperation graphLockOperation;
132     @Mock
133     JanusGraphDao janusGraphDao;
134     @Mock
135     private IInterfaceLifecycleOperation interfaceLifecycleOperation;
136
137     // public static final InformationDeployedArtifactsBusinessLogic
138     // informationDeployedArtifactsBusinessLogic =
139     // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
140     @Mock
141     private ToscaExportHandler toscaExportHandler;
142     @Mock
143     private CsarUtils csarUtils;
144     @Mock
145     private LifecycleBusinessLogic lifecycleBusinessLogic;
146     @Mock
147     private ArtifactsResolver artifactsResolver;
148
149     public static final Resource resource = Mockito.mock(Resource.class);
150     private Gson gson = new GsonBuilder().setPrettyPrinting().create();
151
152
153     private static List<ArtifactType> getAllTypes() {
154         List<ArtifactType> artifactTypes = new ArrayList<>();
155         List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes();
156         for (String artifactType : artifactTypesList) {
157             ArtifactType artifactT = new ArtifactType();
158             artifactT.setName(artifactType);
159             artifactTypes.add(artifactT);
160         }
161         return artifactTypes;
162     }
163
164     @Before
165     public void initMocks() {
166 //        MockitoAnnotations.initMocks(this);
167         Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either.right(StorageOperationStatus.NOT_FOUND);
168
169         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either.right(StorageOperationStatus.NOT_FOUND);
170
171         when(userBusinessLogic.getUser(eq("jh0003"), anyBoolean())).thenReturn(USER);
172
173
174         when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
175     }
176
177     @Test
178     public void testValidJson() {
179         ArtifactDefinition ad = createArtifactDef("artifact1.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
180
181         String jsonArtifact  = "";
182
183         ObjectMapper mapper = new ObjectMapper();
184         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
185         mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
186         mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
187
188         try {
189             jsonArtifact = mapper.writeValueAsString(ad);
190         } catch (IOException e) {
191             // TODO Auto-generated catch block
192             e.printStackTrace();
193         }
194
195         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact, ArtifactDefinition.class, false);
196         assertThat(afterConvert).isEqualTo(ad);
197     }
198
199     private ArtifactDefinition createArtifactDef(String artifactName, ArtifactGroupTypeEnum groupTypeEnum) {
200         ArtifactDefinition ad = new ArtifactDefinition();
201         ad.setArtifactName(artifactName);
202         ad.setArtifactLabel("label1");
203         ad.setDescription("description");
204         ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
205         ad.setArtifactGroupType(groupTypeEnum);
206         ad.setCreationDate(System.currentTimeMillis());
207         ad.setMandatory(false);
208         ad.setTimeout(15);
209         return ad;
210     }
211
212     @Test
213     public void testInvalidStringGroupType() {
214         ArtifactDefinition ad = new ArtifactDefinition();
215         ad.setArtifactName("artifact1");
216         ad.setCreationDate(System.currentTimeMillis());
217         ad.setMandatory(false);
218         ad.setTimeout(15);
219
220         JsonElement jsonArtifact = gson.toJsonTree(ad);
221         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
222         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
223         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
224         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
225
226         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
227         assertThat(afterConvert).isNull();
228     }
229
230     @Test
231     public void testInvalidNumberGroupType() {
232         ArtifactDefinition ad = new ArtifactDefinition();
233         ad.setArtifactName("artifact1");
234         ad.setCreationDate(System.currentTimeMillis());
235         ad.setMandatory(false);
236         ad.setTimeout(15);
237
238         JsonElement jsonArtifact = gson.toJsonTree(ad);
239         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
240         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
241         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
242         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
243
244         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
245         assertThat(afterConvert).isNull();
246     }
247
248     @Test
249     public void testInvalidGroupTypeWithSpace() {
250         ArtifactDefinition ad = new ArtifactDefinition();
251         ad.setArtifactName("artifact1");
252         ad.setCreationDate(System.currentTimeMillis());
253         ad.setMandatory(false);
254         ad.setTimeout(15);
255
256         JsonElement jsonArtifact = gson.toJsonTree(ad);
257         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
258         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
259         jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
260         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
261
262         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, false);
263         assertThat(afterConvert).isNull();
264     }
265
266     @Test
267     public void testInvalidTimeoutWithSpace() {
268         ArtifactDefinition ad = new ArtifactDefinition();
269         ad.setArtifactName("artifact1");
270         ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
271         ad.setCreationDate(System.currentTimeMillis());
272         ad.setMandatory(false);
273
274         JsonElement jsonArtifact = gson.toJsonTree(ad);
275         jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
276         jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
277         jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
278         jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
279
280         ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(), ArtifactDefinition.class, true);
281         assertThat(afterConvert).isNull();
282     }
283
284     @Test
285     public void validateArtifactNameUniqueness_Unique() {
286
287         ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
288         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
289                 ArtifactGroupTypeEnum.INFORMATIONAL);
290         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
291                 ArtifactGroupTypeEnum.DEPLOYMENT);
292
293         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
294         artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
295         artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
296
297         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
298         when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
299
300         Resource parent = new Resource();
301         parent.setUniqueId("uniqueId");
302
303         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
304                 artifactInfo , ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
305     }
306
307     @Test
308     public void validateArtifactNameUniqueness_nonUniqueResourceInterfaces() {
309
310         ArtifactDefinition artifactInfo = createArtifactDef("artifactName3.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
311         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
312                 ArtifactGroupTypeEnum.INFORMATIONAL);
313         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
314                 ArtifactGroupTypeEnum.DEPLOYMENT);
315
316         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
317         artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
318         artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
319
320         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
321         when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
322
323
324         Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
325                 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
326         when(interfaceLifecycleOperation.getAllInterfacesOfResource("componentId", true, true))
327                 .thenReturn(allInterfacesOfResource);
328
329         Resource parent = new Resource();
330         parent.setUniqueId("uniqueId");
331
332         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
333                 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
334     }
335
336     @Test
337     public void validateArtifactNameUniqueness_UniqueInterface() {
338
339         ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
340         artifactInfo.setArtifactLabel("uniqueLabel");
341         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
342                 ArtifactGroupTypeEnum.INFORMATIONAL);
343         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
344                 ArtifactGroupTypeEnum.DEPLOYMENT);
345
346         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
347         artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
348         artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
349
350         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
351         when(artifactToscaOperation.getArtifacts(anyString())).thenReturn(artifacts);
352
353
354         Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource =
355                 Either.left(createInterfaceDefinitionMap("artifactName3.yml"));
356
357         Resource parent = new Resource();
358         parent.setUniqueId("uniqueId");
359
360         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
361                 artifactInfo, ComponentTypeEnum.RESOURCE)).isFalse();
362     }
363
364     @Test
365     public void validateArtifactNameUniqueness_updateName() {
366         //artifacts with the same name have the same label
367         ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.DEPLOYMENT);
368         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
369                 ArtifactGroupTypeEnum.INFORMATIONAL);
370         informationArtifactDefinition1.setArtifactLabel("label2");
371         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
372                 ArtifactGroupTypeEnum.DEPLOYMENT);
373
374         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
375         artifactDefinitionMap.put(artifactInfo.getArtifactLabel(), artifactInfo);
376         artifactDefinitionMap.put(informationArtifactDefinition1.getArtifactLabel(), informationArtifactDefinition1);
377         artifactDefinitionMap.put(deploymentArtifactDefinition2.getArtifactLabel(), deploymentArtifactDefinition2);
378
379         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
380         when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
381
382         Resource parent = new Resource();
383         parent.setUniqueId("uniqueId");
384
385         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent,
386                 artifactInfo, ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
387     }
388
389     @Test
390     public void validateArtifactNameUniqueness_UniqueInGroupType() {
391
392         ArtifactDefinition artifactInfo = createArtifactDef("artifactName2.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
393         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
394                 ArtifactGroupTypeEnum.INFORMATIONAL);
395         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
396                 ArtifactGroupTypeEnum.DEPLOYMENT);
397
398         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
399         artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
400         artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
401
402         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
403         when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
404
405         Resource parent = new Resource();
406         parent.setUniqueId("uniqueId");
407
408         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
409                 ComponentTypeEnum.RESOURCE_INSTANCE)).isTrue();
410     }
411
412     @Test
413     public void validateArtifactNameUniqueness_NonUnique() {
414
415         ArtifactDefinition artifactInfo = createArtifactDef("artifactName1.yml", ArtifactGroupTypeEnum.INFORMATIONAL);
416         artifactInfo.setArtifactLabel("artifactLabel");
417         ArtifactDefinition informationArtifactDefinition1 = createArtifactDef("artifactName1.yml",
418                 ArtifactGroupTypeEnum.INFORMATIONAL);
419         ArtifactDefinition deploymentArtifactDefinition2 = createArtifactDef("artifactName2.yml",
420                 ArtifactGroupTypeEnum.DEPLOYMENT);
421
422         Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
423         artifactDefinitionMap.put("informationArtifact", informationArtifactDefinition1);
424         artifactDefinitionMap.put("DeploymentArtifact", deploymentArtifactDefinition2);
425
426         Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = Either.left(artifactDefinitionMap);
427         when(artifactToscaOperation.getAllInstanceArtifacts(anyString(), anyString())).thenReturn(artifacts);
428
429         Resource parent = new Resource();
430         parent.setUniqueId("uniqueId");
431
432         assertThat(artifactBL.validateArtifactNameUniqueness("componentId", parent, artifactInfo,
433                 ComponentTypeEnum.RESOURCE_INSTANCE)).isFalse();
434     }
435
436
437     private Map<String, InterfaceDefinition> createInterfaceDefinitionMap(String artifactName) {
438
439         InterfaceDefinition id1 = new InterfaceDefinition();
440         Map<String, Operation> operationMap = new HashMap<>();
441         Operation operation1 = new Operation();
442         ArtifactDataDefinition dataImplementation = new ArtifactDataDefinition();
443         dataImplementation.setArtifactName(artifactName);
444         operation1.setImplementation(dataImplementation);
445         operationMap.put("operation1", operation1);
446         id1.setOperationsMap(operationMap);
447         Map<String, InterfaceDefinition> interfaceDefMap = new HashMap<>();
448         interfaceDefMap.put("id1",id1);
449         return interfaceDefMap;
450     }
451
452     @Test
453     public void testValidMibAritactsConfiguration() {
454         Map<String, ArtifactTypeConfig> componentDeploymentArtifacts =
455                     ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts();
456         Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts =
457                     ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
458         assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
459         assertThat(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
460         assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType())).isTrue();
461         assertThat(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType())).isTrue();
462     }
463
464     @Test
465     public void testDownloadServiceArtifactByNames() {
466         Service service = new Service();
467         String serviceName = "myService";
468         String serviceVersion = "1.0";
469         String serviceId = "serviceId";
470         service.setName(serviceName);
471         service.setVersion(serviceVersion);
472         service.setUniqueId(serviceId);
473
474         String artifactName = "service-Myservice-template.yml";
475         String artifactLabel = "assettoscatemplate";
476         String esArtifactId = "123123dfgdfgd0";
477         byte[] payload = "some payload".getBytes();
478         ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
479         toscaTemplateArtifact.setArtifactName(artifactName);
480         toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
481         toscaTemplateArtifact.setArtifactLabel(artifactLabel);
482         toscaTemplateArtifact.setEsId(esArtifactId);
483         toscaTemplateArtifact.setPayload(payload);
484
485         Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
486         toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
487         service.setToscaArtifacts(toscaArtifacts);
488
489         DAOArtifactData DAOArtifactData =new DAOArtifactData(esArtifactId);
490         DAOArtifactData.setDataAsArray(payload);
491         Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
492         when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
493         List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
494         serviceList.add(service);
495         Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either.left(serviceList);
496         when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
497         byte[] downloadServiceArtifactByNamesRes =
498         artifactBL.downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
499         assertThat(downloadServiceArtifactByNamesRes !=null &&
500                 downloadServiceArtifactByNamesRes.length == payload.length).isTrue();
501     }
502
503     @Test
504     public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
505         ArtifactDefinition heatArtifact = new ArtifactBuilder()
506                 .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
507                 .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2"))
508                 .build();
509
510         Resource component = new Resource();
511         when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
512         when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class), eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
513                 .thenReturn(Either.left(new ArtifactDefinition()));
514         ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component, Collections.emptyMap());
515         assertThat(heatEnvPlaceHolder.getListHeatParameters()).isNull();
516     }
517
518     @Test
519     public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal() throws Exception {
520         HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
521         HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
522         HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
523         ArtifactDefinition heatArtifact = new ArtifactBuilder()
524                 .addHeatParam(heatParam1)
525                 .addHeatParam(heatParam2)
526                 .addHeatParam(heatParam3)
527                 .build();
528
529         Resource component = new Resource();
530
531
532         ArtifactDefinition heatEnvArtifact = artifactBL.createHeatEnvPlaceHolder(new ArrayList<>(),heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component, Collections.emptyMap());
533         List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
534         assertThat(listHeatParameters.size()).isEqualTo(3);
535         verifyHeatParam(listHeatParameters.get(0), heatParam1);
536         verifyHeatParam(listHeatParameters.get(1), heatParam2);
537         verifyHeatParam(listHeatParameters.get(2), heatParam3);
538     }
539
540     @Test
541     public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
542         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
543         artifactDefinition.setArtifactName(ARTIFACT_NAME);
544         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
545         artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
546         artifactDefinition.setEsId(ES_ARTIFACT_ID);
547         artifactDefinition.setPayload(PAYLOAD);
548         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
549
550         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
551         //TODO Remove if passes
552         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
553                 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
554         when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
555         when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
556         artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
557                 USER, INSTANCE_ID, true, true);
558     }
559
560     private ArtifactsBusinessLogic getArtifactsBusinessLogic() {
561         ArtifactsBusinessLogic artifactsBusinessLogic = new ArtifactsBusinessLogic(artifactCassandraDao,
562             toscaExportHandler, csarUtils, lifecycleBusinessLogic,
563             userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation,
564             groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation);
565         artifactsBusinessLogic.setGraphLockOperation(graphLockOperation);
566         artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
567         return artifactsBusinessLogic;
568     }
569
570     @Test
571     public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
572         ArtifactDefinition artifactDefinition = new ArtifactDefinition();
573         artifactDefinition.setArtifactName(ARTIFACT_NAME);
574         artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
575         artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
576         artifactDefinition.setEsId(ES_ARTIFACT_ID);
577         artifactDefinition.setPayload(PAYLOAD);
578         artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
579
580         when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
581         //TODO Remove if passes
582         when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class)
583                 , any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
584         when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
585         when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
586         artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD), ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME,
587                 USER, INSTANCE_ID, true, false);
588         verify(janusGraphDao, times(1)).commit();
589     }
590
591     @Test
592     public void testDeleteComponent_ArtifactNotFound(){
593         Either<Either<ArtifactDefinition, Operation>, ResponseFormat> result;
594         Resource resource = new Resource();
595         String uniqueId = "uniqueId";
596         resource.setUniqueId(uniqueId);
597         Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
598         ArtifactDefinition artifact = new ArtifactDefinition();
599         artifact.setArtifactName("artifactName");
600         artifact.setEsId("esId");
601         artifact.setArtifactUUID("artifactUUID");
602         artifact.setArtifactType("YANG");
603         artifact.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
604         artifact.setDescription("description");
605         artifact.setArtifactLabel("artifactLabel");
606         toscaArtifacts.put("artifactId", artifact);
607         resource.setArtifacts(toscaArtifacts);
608         resource.setToscaArtifacts(toscaArtifacts);
609         when(graphLockOperation.lockComponent(uniqueId, NodeTypeEnum.Resource))
610                 .thenReturn(StorageOperationStatus.OK);
611         when(graphLockOperation.unlockComponent(uniqueId, NodeTypeEnum.Resource))
612                 .thenReturn(StorageOperationStatus.OK);
613         result = artifactBL.handleDelete("parentId", "artifactId", USER, AuditingActionEnum.ARTIFACT_DELETE,
614                 ComponentTypeEnum.RESOURCE, resource,
615                 true, false);
616         assertThat(result.isRight());
617     }
618
619     private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
620         assertThat(heatYamlParam.getCurrentValue()).isEqualTo(heatEnvParam.getDefaultValue());
621         assertThat(heatEnvParam.getCurrentValue()).isNull();
622     }
623 }