Fix error in userId handling
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ArtifactsBusinessLogicTest.java
index 3492c07..36d22bc 100644 (file)
@@ -7,59 +7,96 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
+ * Modifications copyright (c) 2019 Nokia
+ * ================================================================================
  */
 
 package org.openecomp.sdc.be.components.impl;
 
-import static org.junit.Assert.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyList;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_ENV_NAME;
 import static org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.HEAT_VF_ENV_NAME;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import fj.data.Either;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
+import java.util.Optional;
+import java.util.stream.Collectors;
+import mockit.Deencapsulation;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.be.MockGenerator;
+import org.openecomp.sdc.be.components.ArtifactsResolver;
 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationEnum;
-import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo;
+import org.openecomp.sdc.be.components.impl.artifact.ArtifactOperationInfo;
+import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
+import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
+import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
+import org.openecomp.sdc.be.components.validation.UserValidations;
+import org.openecomp.sdc.be.config.ArtifactConfigManager;
+import org.openecomp.sdc.be.config.ArtifactConfiguration;
+import org.openecomp.sdc.be.config.ComponentType;
 import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
-import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
+import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
+import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
@@ -71,1543 +108,2347 @@ import org.openecomp.sdc.be.model.ArtifactDefinition;
 import org.openecomp.sdc.be.model.ArtifactType;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.ComponentInstance;
+import org.openecomp.sdc.be.model.ComponentParametersView;
 import org.openecomp.sdc.be.model.DataTypeDefinition;
 import org.openecomp.sdc.be.model.GroupDefinition;
 import org.openecomp.sdc.be.model.GroupInstance;
 import org.openecomp.sdc.be.model.HeatParameterDefinition;
 import org.openecomp.sdc.be.model.InterfaceDefinition;
 import org.openecomp.sdc.be.model.LifecycleStateEnum;
+import org.openecomp.sdc.be.model.Operation;
 import org.openecomp.sdc.be.model.Resource;
+import org.openecomp.sdc.be.model.ResourceMetadataDefinition;
 import org.openecomp.sdc.be.model.Service;
 import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
-import org.openecomp.sdc.be.model.jsontitan.operations.ArtifactsOperations;
-import org.openecomp.sdc.be.model.jsontitan.operations.NodeTemplateOperation;
-import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
 import org.openecomp.sdc.be.model.operations.api.IInterfaceLifecycleOperation;
-import org.openecomp.sdc.be.model.operations.api.IUserAdminOperation;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.model.operations.impl.ArtifactOperation;
-import org.openecomp.sdc.be.resources.data.ESArtifactData;
+import org.openecomp.sdc.be.model.operations.impl.ArtifactTypeOperation;
+import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
+import org.openecomp.sdc.be.resources.data.DAOArtifactData;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
 import org.openecomp.sdc.be.servlets.RepresentationUtils;
-import org.openecomp.sdc.be.user.IUserBusinessLogic;
+import org.openecomp.sdc.be.tosca.CsarUtils;
+import org.openecomp.sdc.be.tosca.ToscaExportHandler;
 import org.openecomp.sdc.be.user.Role;
 import org.openecomp.sdc.be.user.UserBusinessLogic;
 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
-import org.openecomp.sdc.common.api.ConfigurationSource;
-import org.openecomp.sdc.common.impl.ExternalConfiguration;
-import org.openecomp.sdc.common.impl.FSConfigurationSource;
-import org.openecomp.sdc.exception.ResponseFormat;
-import org.xml.sax.XMLReader;
-import org.openecomp.sdc.be.model.Operation;
-import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
 import org.openecomp.sdc.common.datastructure.Wrapper;
+import org.openecomp.sdc.common.util.GeneralUtility;
+import org.openecomp.sdc.exception.ResponseFormat;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
-
-import fj.data.Either;
-import mockit.Deencapsulation;
-import java.util.*;
-import org.junit.Assert;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-
-public class ArtifactsBusinessLogicTest {
-
-       public static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN",
-                       System.currentTimeMillis());
-       private final static String RESOURCE_INSTANCE_NAME = "Service-111";
-       private final static String INSTANCE_ID = "S-123-444-ghghghg";
-
-       private final static String ARTIFACT_NAME = "service-Myservice-template.yml";
-       private final static String ARTIFACT_LABEL = "assettoscatemplate";
-       private final static String ES_ARTIFACT_ID = "123123dfgdfgd0";
-       private final static byte[] PAYLOAD = "some payload".getBytes();
-       public static final String RESOURCE_NAME = "My-Resource_Name with   space";
-       public static final String RESOURCE_CATEGORY = "Network Layer 2-3/Router";
-       public static final String RESOURCE_CATEGORY1 = "Network Layer 2-3";
-       public static final String RESOURCE_SUBCATEGORY = "Router";
-       final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
-
-       TitanDao mockTitanDao = Mockito.mock(TitanDao.class);
-
-       static ConfigurationSource configurationSource = new FSConfigurationSource(
-                       ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
-       static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
-
-       @InjectMocks
-       private static ArtifactsBusinessLogic artifactBL;
-
-       private static User user = null;
-       private static Resource resourceResponse = null;
-       private static ResponseFormatManager responseManager = null;
-
-       @Mock
-       private UserBusinessLogic userBusinessLogic;
-       @Mock
-       private ArtifactOperation artifactOperation;
-       @Mock
-       public ComponentsUtils componentsUtils;
-       @Mock
-       private IInterfaceLifecycleOperation lifecycleOperation;
-       @Mock
-       private IUserAdminOperation userOperation;
-       @Mock
-       private IElementOperation elementOperation;
-       @Mock
-       private ArtifactCassandraDao artifactCassandraDao;
-       @Mock
-       public ToscaOperationFacade toscaOperationFacade;
-       @Mock
-       private NodeTemplateOperation nodeTemplateOperation;
-       @Mock
-       private ArtifactsOperations artifactsOperations;
-       @Mock
-       private IGraphLockOperation graphLockOperation;
-       @Mock
-       TitanDao titanDao;
-
-       // public static final InformationDeployedArtifactsBusinessLogic
-       // informationDeployedArtifactsBusinessLogic =
-       // Mockito.mock(InformationDeployedArtifactsBusinessLogic.class);
-
-       public static final Resource resource = Mockito.mock(Resource.class);
-       private Gson gson = new GsonBuilder().setPrettyPrinting().create();
-
-       private static List<ArtifactType> getAllTypes() {
-               List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>();
-               List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration()
-                               .getArtifactTypes();
-               for (String artifactType : artifactTypesList) {
-                       ArtifactType artifactT = new ArtifactType();
-                       artifactT.setName(artifactType);
-                       artifactTypes.add(artifactT);
-               }
-               return artifactTypes;
-       }
-
-       @Before
-       public void initMocks() {
-               MockitoAnnotations.initMocks(this);
-               Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either
-                               .right(StorageOperationStatus.NOT_FOUND);
-
-               Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either
-                               .right(StorageOperationStatus.NOT_FOUND);
-               when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean()))
-                               .thenReturn(NotFoundResult2);
-               when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean()))
-                               .thenReturn(NotFoundResult2);
-
-               Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either
-                               .right(StorageOperationStatus.NOT_FOUND);
-               when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean()))
-                               .thenReturn(notFoundInterfaces);
-
-               Either<User, ActionStatus> getUserResult = Either.left(USER);
-
-               when(userOperation.getUserData("jh0003", false)).thenReturn(getUserResult);
-
-               Either<List<ArtifactType>, ActionStatus> getType = Either.left(getAllTypes());
-               when(elementOperation.getAllArtifactTypes()).thenReturn(getType);
-
-               when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
-
-               // User data and management
-               user = new User();
-               user.setUserId("jh0003");
-               user.setFirstName("Jimmi");
-               user.setLastName("Hendrix");
-               user.setRole(Role.ADMIN.name());
-
-               // createResource
-               resourceResponse = createResourceObject(true);
-               Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse);
-               Either<Integer, StorageOperationStatus> eitherValidate = Either.left(null);
-               when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
-               when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(eitherValidate);
-               Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>();
-               when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
-               when(mockTitanDao.commit()).thenReturn(TitanOperationStatus.OK);
-
-               Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
-                               .right(StorageOperationStatus.BAD_REQUEST);
-               when(toscaOperationFacade.getToscaElement(resourceResponse.getUniqueId()))
-                               .thenReturn(resourceStorageOperationStatusEither);
-       }
-
-       @Test
-       public void testValidJson() {
-               ArtifactDefinition ad = createArtifactDef();
-
-               String jsonArtifact = "";
-
-               ObjectMapper mapper = new ObjectMapper();
-               mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-               mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-               mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
-
-               try {
-                       jsonArtifact = mapper.writeValueAsString(ad);
-               } catch (IOException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-
-               ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact,
-                               ArtifactDefinition.class);
-               assertEquals(ad, afterConvert);
-       }
-
-       private ArtifactDefinition createArtifactDef() {
-               ArtifactDefinition ad = new ArtifactDefinition();
-               ad.setArtifactName("artifact1.yaml");
-               ad.setArtifactLabel("label1");
-               ad.setDescription("description");
-               ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
-               ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
-               ad.setCreationDate(System.currentTimeMillis());
-               ad.setMandatory(false);
-               ad.setTimeout(15);
-               return ad;
-       }
-
-       private Resource createResourceObject(boolean afterCreate) {
-               Resource resource = new Resource();
-               resource.setName(RESOURCE_NAME);
-               resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
-               resource.setDescription("My short description");
-               List<String> tgs = new ArrayList<String>();
-               tgs.add("test");
-               tgs.add(resource.getName());
-               resource.setTags(tgs);
-               List<String> template = new ArrayList<String>();
-               template.add("Root");
-               resource.setDerivedFrom(template);
-               resource.setVendorName("Motorola");
-               resource.setVendorRelease("1.0.0");
-               resource.setContactId("ya5467");
-               resource.setIcon("MyIcon");
-
-               if (afterCreate) {
-                       resource.setName(resource.getName());
-                       resource.setVersion("0.1");
-                       resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
-                       resource.setCreatorUserId(user.getUserId());
-                       resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
-                       resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
-               }
-               return resource;
-       }
-
-       @Test
-       public void testInvalidStringGroupType() {
-               ArtifactDefinition ad = new ArtifactDefinition();
-               ad.setArtifactName("artifact1");
-               ad.setCreationDate(System.currentTimeMillis());
-               ad.setMandatory(false);
-               ad.setTimeout(15);
-
-               JsonElement jsonArtifact = gson.toJsonTree(ad);
-               jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
-
-               ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
-                               ArtifactDefinition.class);
-               assertNull(afterConvert);
-       }
-
-       @Test
-       public void testInvalidNumberGroupType() {
-               ArtifactDefinition ad = new ArtifactDefinition();
-               ad.setArtifactName("artifact1");
-               ad.setCreationDate(System.currentTimeMillis());
-               ad.setMandatory(false);
-               ad.setTimeout(15);
-
-               JsonElement jsonArtifact = gson.toJsonTree(ad);
-               jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
-
-               ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
-                               ArtifactDefinition.class);
-               assertNull(afterConvert);
-       }
-
-       @Test
-       public void testInvalidGroupTypeWithSpace() {
-               ArtifactDefinition ad = new ArtifactDefinition();
-               ad.setArtifactName("artifact1");
-               ad.setCreationDate(System.currentTimeMillis());
-               ad.setMandatory(false);
-               ad.setTimeout(15);
-
-               JsonElement jsonArtifact = gson.toJsonTree(ad);
-               jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
-
-               ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
-                               ArtifactDefinition.class);
-               assertNull(afterConvert);
-       }
-
-       @Test
-       public void testInvalidTimeoutWithSpace() {
-               ArtifactDefinition ad = new ArtifactDefinition();
-               ad.setArtifactName("artifact1");
-               ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
-               ad.setCreationDate(System.currentTimeMillis());
-               ad.setMandatory(false);
-
-               JsonElement jsonArtifact = gson.toJsonTree(ad);
-               jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
-
-               ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
-                               ArtifactDefinition.class);
-               assertNull(afterConvert);
-       }
-
-       @Test
-       public void testValidMibAritactsConfiguration() {
-               Map<String, ArtifactTypeConfig> componentDeploymentArtifacts = ConfigurationManager.getConfigurationManager()
-                               .getConfiguration().getResourceDeploymentArtifacts();
-               Map<String, ArtifactTypeConfig> componentInstanceDeploymentArtifacts = ConfigurationManager
-                               .getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts();
-               assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
-               assertTrue(componentDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
-               assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_POLL.getType()));
-               assertTrue(componentInstanceDeploymentArtifacts.containsKey(ArtifactTypeEnum.SNMP_TRAP.getType()));
-       }
-
-       @Test
-       public void testDownloadServiceArtifactByNames() {
-               Service service = new Service();
-               String serviceName = "myService";
-               String serviceVersion = "1.0";
-               String serviceId = "serviceId";
-               service.setName(serviceName);
-               service.setVersion(serviceVersion);
-               service.setUniqueId(serviceId);
-
-               String artifactName = "service-Myservice-template.yml";
-               String artifactLabel = "assettoscatemplate";
-               String esArtifactId = "123123dfgdfgd0";
-               byte[] payload = "some payload".getBytes();
-               ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
-               toscaTemplateArtifact.setArtifactName(artifactName);
-               toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
-               toscaTemplateArtifact.setArtifactLabel(artifactLabel);
-               toscaTemplateArtifact.setEsId(esArtifactId);
-               toscaTemplateArtifact.setPayload(payload);
-
-               Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
-               toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
-               service.setToscaArtifacts(toscaArtifacts);
-
-               ESArtifactData esArtifactData = new ESArtifactData(esArtifactId);
-               esArtifactData.setDataAsArray(payload);
-               Either<ESArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(esArtifactData);
-               when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
-               List<org.openecomp.sdc.be.model.Component> serviceList = new ArrayList<>();
-               serviceList.add(service);
-               Either<List<org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getServiceRes = Either
-                               .left(serviceList);
-               when(toscaOperationFacade.getBySystemName(ComponentTypeEnum.SERVICE, serviceName)).thenReturn(getServiceRes);
-               Either<byte[], ResponseFormat> downloadServiceArtifactByNamesRes = artifactBL
-                               .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
-               assertTrue(downloadServiceArtifactByNamesRes.isLeft());
-               assertTrue(downloadServiceArtifactByNamesRes.left().value() != null
-                               && downloadServiceArtifactByNamesRes.left().value().length == payload.length);
-       }
-
-       @Test
-       public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
-               ArtifactDefinition heatArtifact = new ArtifactBuilder()
-                               .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
-                               .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2")).build();
-
-               Resource component = new Resource();
-               when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
-               when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
-                               eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
-                                               .thenReturn(Either.left(new ArtifactDefinition()));
-               Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
-                               heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component,
-                               Collections.emptyMap());
-               assertTrue(heatEnvPlaceHolder.isLeft());
-               assertNull(heatEnvPlaceHolder.left().value().getListHeatParameters());
-       }
-
-       @Test
-       public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal()
-                       throws Exception {
-               HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
-               HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
-               HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
-               ArtifactDefinition heatArtifact = new ArtifactBuilder().addHeatParam(heatParam1).addHeatParam(heatParam2)
-                               .addHeatParam(heatParam3).build();
-
-               Resource component = new Resource();
-
-               when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(Either.left(USER));
-               when(artifactsOperations.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
-                               eq(component.getUniqueId()), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
-                                               .thenReturn(Either.left(new ArtifactDefinition()));
-
-               Either<ArtifactDefinition, ResponseFormat> heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
-                               heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component,
-                               Collections.emptyMap());
-
-               assertTrue(heatEnvPlaceHolder.isLeft());
-               ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder.left().value();
-               List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
-               assertEquals(listHeatParameters.size(), 3);
-               verifyHeatParam(listHeatParameters.get(0), heatParam1);
-               verifyHeatParam(listHeatParameters.get(1), heatParam2);
-               verifyHeatParam(listHeatParameters.get(2), heatParam3);
-       }
-
-       @Test
-       public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
-               ArtifactDefinition artifactDefinition = new ArtifactDefinition();
-               artifactDefinition.setArtifactName(ARTIFACT_NAME);
-               artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
-               artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
-               artifactDefinition.setEsId(ES_ARTIFACT_ID);
-               artifactDefinition.setPayload(PAYLOAD);
-               artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
-
-               when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
-               when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
-                               any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition));
-               when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
-               when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
-               artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
-                               ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, true);
-       }
-
-       @Test
-       public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
-               ArtifactDefinition artifactDefinition = new ArtifactDefinition();
-               artifactDefinition.setArtifactName(ARTIFACT_NAME);
-               artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
-               artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
-               artifactDefinition.setEsId(ES_ARTIFACT_ID);
-               artifactDefinition.setPayload(PAYLOAD);
-               artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
-
-               when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
-               when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
-                               any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition));
-               when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
-               when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
-               artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
-                               ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
-               verify(titanDao, times(1)).commit();
-       }
-       
-       
-       private ArtifactDefinition buildArtifactPayload() {
-               ArtifactDefinition artifactDefinition = new ArtifactDefinition();
-               artifactDefinition.setArtifactName(ARTIFACT_NAME);
-               artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
-               artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
-               artifactDefinition.setEsId(ES_ARTIFACT_ID);
-               artifactDefinition.setPayload(PAYLOAD);
-               artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
-
-               when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
-               when(artifactsOperations.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
-                               any(NodeTypeEnum.class), any(String.class))).thenReturn(Either.left(artifactDefinition));
-               when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
-               when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
-               artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
-                               ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
-               verify(titanDao, times(1)).commit();
-               return artifactDefinition;
-       }
-
-       private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
-               assertEquals(heatEnvParam.getDefaultValue(), heatYamlParam.getCurrentValue());
-               assertNull(heatEnvParam.getCurrentValue());
-       }
-       
-       //////////////////////////////////////////////////////////////////////////////////
-       //////////////////////////////////new tests///////////////////////////////////////
-       /////////////////////////////////////////////////////////////////////////////////
-       private ArtifactsBusinessLogic createTestSubject() {
-               return new ArtifactsBusinessLogic();
-       }
-
-       @Test
-       public void testBuildJsonStringForCsarVfcArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifact = new ArtifactDefinition();
-               String result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "buildJsonStringForCsarVfcArtifact", new Object[] { artifact });
-       }
-
-       @Test
-       public void testCheckArtifactInComponent() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Component component = new Resource();
-               String artifactId = "";
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "checkArtifactInComponent",
-                               new Object[] { component, artifactId });
-       }
-
-
-
-       @Test
-       public void testCheckCreateFields() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               // User user = USER;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactGroupTypeEnum type = ArtifactGroupTypeEnum.DEPLOYMENT;
-
-               // default test
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "checkCreateFields", new Object[] { user, artifactInfo, type });
-       }
-
-
-       @Test
-       public void testComposeArtifactId() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String resourceId = "";
-               String artifactId = "";
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ;
-               String interfaceName = "";
-               String operationName = "";
-               String result;
-
-               // test 1
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "composeArtifactId",
-                               new Object[] { resourceId, artifactId, artifactInfo, interfaceName, operationName });
-       }
-
-       @Test
-       public void testConvertParentType() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               NodeTypeEnum result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "convertParentType", new Object[] { componentType });
-       }
-
-       @Test
-       public void testConvertToOperation() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               String operationName = "";
-               Operation result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "convertToOperation",
-                               new Object[] { artifactInfo, operationName });
-       }
-
-       @Test
-       public void testCreateInterfaceArtifactNameFromOperation() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String operationName = "";
-               String artifactName = "";
-               String result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "createInterfaceArtifactNameFromOperation",
-                               new Object[] { operationName, artifactName });
-       }
-
-       @Test
-       public void testFetchArtifactsFromComponent() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String artifactId = "";
-               Component component = createResourceObject(true);
-               Map<String, ArtifactDefinition> artifacts = new HashMap<>();
-
-               // default test
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "fetchArtifactsFromComponent",
-                               new Object[] { artifactId, component, artifacts });
-       }
-
-
-       
-
-
-
-
-
-       @Test
-       public void testValidateArtifact() throws Exception {
-       ArtifactsBusinessLogic testSubject;String componentId = "";
-       ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-       ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-       ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-       String artifactId = "";
-       ArtifactDefinition artifactInfo = buildArtifactPayload();
-       AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
-       
-       Component component =  createResourceObject(true);
-       Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
-       boolean shouldLock = false;
-       boolean inTransaction = false;
-       ArtifactDefinition result;
-       
-       // default test
-       testSubject=createTestSubject();result=Deencapsulation.invoke(testSubject, "validateArtifact", new Object[]{componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, component, errorWrapper, shouldLock, inTransaction});
-       }
-
-       
-       @Test
-       public void testHandleHeatEnvDownload() throws Exception {
-       ArtifactsBusinessLogic testSubject;String componentId = "";
-       ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-       
-       Component component =  createResourceObject(true);
-       ArtifactDefinition artifactInfo =  buildArtifactPayload();
-       Either<ArtifactDefinition,ResponseFormat> validateArtifact = Either.left(artifactInfo);
-       Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
-       boolean shouldLock = false;
-       boolean inTransaction = false;
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "handleHeatEnvDownload", new Object[]{componentId, componentType, user, component, validateArtifact, errorWrapper, shouldLock, inTransaction});
-       }
-
-       
-       @Test
-       public void testArtifactGenerationRequired() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Component component =  createResourceObject(true);
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "artifactGenerationRequired",
-                               new Object[] { component, artifactInfo });
-       }
-
-
-       @Test
-       public void testUpdateGroupForHeat() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition artAfterUpdate = null;
-               Component component = createResourceObject(true);
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               ActionStatus result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "updateGroupForHeat", new Object[] { artifactInfo,
-                               artifactInfo, component, componentType });
-       }
-
-       
-       @Test
-       public void testUpdateGroupForHeat_1() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-               Component component = createResourceObject(true);
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               ActionStatus result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "updateGroupForHeat",
-                               new Object[] { artifactInfo, artifactInfo, artifactInfo,
-                                               artifactInfo, component, componentType });
-       }
-
-
-       
-       @Test
-       public void testHandleAuditing() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
-               Component component =  createResourceObject(true);
-               String componentId = "";
-               
-               ArtifactDefinition artifactDefinition = buildArtifactPayload();;;
-               String prevArtifactUuid = "";
-               String currentArtifactUuid = "";
-               ResponseFormat responseFormat = new ResponseFormat();
-               ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
-               String resourceInstanceName = "";
-
-               // test 1
-               testSubject = createTestSubject();
-               testSubject.handleAuditing(auditingActionEnum, component, componentId, user, artifactDefinition,
-                               prevArtifactUuid, currentArtifactUuid, responseFormat, componentTypeEnum, resourceInstanceName);
-       }
-
-       @Test
-       public void testCreateArtifactAuditingFields() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactDefinition = null;
-               String prevArtifactUuid = "";
-               String currentArtifactUuid = "";
-               Map<AuditingFieldsKeysEnum, Object> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.createArtifactAuditingFields(artifactDefinition, prevArtifactUuid, currentArtifactUuid);
-       }
-
-
-
-       
-
-
-       
-       @Test
-       public void testIgnoreUnupdateableFieldsInUpdate() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-               ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifactInfo = null;
-
-               // default test
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "ignoreUnupdateableFieldsInUpdate",
-                               new Object[] { operation, artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testFindArtifactOnParentComponent() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Component component = createResourceObject(true);
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               String parentId = "";
-               ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-               ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-               String artifactId = "";
-               Either<ArtifactDefinition, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "findArtifactOnParentComponent", new Object[] { component,
-                               componentType, parentId, operation, artifactId });
-       }
-
-       
-
-       
-       @Test
-       public void testValidateInformationalArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               Component component = createResourceObject(true);
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateInformationalArtifact",
-                               new Object[] { artifactInfo, component });
-       }
-
-       
-
-
-
-       
-       @Test
-       public void testGetUpdatedGroups() throws Exception {
-       ArtifactsBusinessLogic testSubject;String artifactId = "";
-       ArtifactDefinition artifactInfo = buildArtifactPayload();
-       List<GroupDefinition> groups = new ArrayList<>();
-       List<GroupDataDefinition> result;
-       
-       // test 1
-       testSubject=createTestSubject();
-       result=Deencapsulation.invoke(testSubject, "getUpdatedGroups", new Object[]{artifactId, artifactInfo, groups});
-       }
-
-       
-       @Test
-       public void testGetUpdatedGroupInstances() throws Exception {
-       ArtifactsBusinessLogic testSubject;String artifactId = "";
-       ArtifactDefinition artifactInfo = buildArtifactPayload();
-       List<GroupDefinition> groups = new ArrayList<>();
-       List<GroupInstance> result;
-       
-       // default test
-       testSubject=createTestSubject();result=Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups});
-       }
-
-       
-
-       
-       @Test
-       public void testFindArtifact_1() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String artifactId = "";
-               Component component =  createResourceObject(true);
-               String parentId = "";
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               Either<ImmutablePair<ArtifactDefinition, ComponentInstance>, ActionStatus> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "findArtifact",
-                               new Object[] { artifactId, component, parentId, componentType });
-       }
-
-       
-       @Test
-       public void testFetchArtifactsFromInstance() throws Exception {
-       ArtifactsBusinessLogic testSubject;String artifactId = "";
-       Map<String,ArtifactDefinition> artifacts = new HashMap<>();
-       ComponentInstance instance = new ComponentInstance();
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", new Object[]{artifactId, artifacts, instance});
-       }
-
-       
-
-       
-       @Test
-       public void testGenerateCustomizationUUIDOnInstance() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String componentId = "";
-               String instanceId = "";
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               StorageOperationStatus result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "generateCustomizationUUIDOnInstance",
-                               new Object[] { componentId, instanceId, componentType });
-       }
-
-
-       
-       @Test
-       public void testFindComponentInstance() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String componentInstanceId = "";
-               Component component =  createResourceObject(true);;
-               ComponentInstance result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "findComponentInstance",
-                               new Object[] { componentInstanceId, component });
-       }
-
-       
-       @Test
-       public void testValidateDeploymentArtifactConf() throws Exception {
-       ArtifactsBusinessLogic testSubject;ArtifactDefinition artifactInfo =  buildArtifactPayload();
-       Wrapper<ResponseFormat> responseWrapper = new Wrapper<>();
-       ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
-       Map<String,ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>();
-       
-       
-       // test 1
-       testSubject=createTestSubject();
-       Deencapsulation.invoke(testSubject, "validateDeploymentArtifactConf", new Object[]{artifactInfo, responseWrapper, artifactType, resourceDeploymentArtifacts});
-       }
-
-       
-       @Test
-       public void testFillDeploymentArtifactTypeConf() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
-               Map<String, ArtifactTypeConfig> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "fillDeploymentArtifactTypeConf",
-                               new Object[] { parentType });
-       }
-
-       
-       @Test
-       public void testValidateArtifactTypeExists() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Wrapper<ResponseFormat> responseWrapper = null;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.validateArtifactTypeExists(responseWrapper, artifactInfo);
-       }
-
-       
-       @Test
-       public void testGetDeploymentArtifactTypeConfig() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
-               ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
-               ArtifactTypeConfig result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "getDeploymentArtifactTypeConfig",
-                               new Object[] { parentType,artifactType });
-       }
-
-
-
-       
-       @Test
-       public void testValidateHeatEnvDeploymentArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Component component = createResourceObject(true);
-               String parentId = "";
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               NodeTypeEnum parentType = NodeTypeEnum.AdditionalInfoParameters;
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateHeatEnvDeploymentArtifact",
-                               new Object[] { component, parentId, artifactInfo, parentType });
-       }
-
-       
-       @Test
-       public void testFillArtifactPayloadValidation() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
-               Wrapper<byte[]> payloadWrapper = new Wrapper<>();;
-               ArtifactDefinition artifactDefinition = buildArtifactPayload();
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.fillArtifactPayloadValidation(errorWrapper, payloadWrapper, artifactDefinition);
-       }
-
-       
-
-       
-
-
-       
-       @Test
-       public void testValidateValidYaml() throws Exception {
-       ArtifactsBusinessLogic testSubject;Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
-       ArtifactDefinition artifactInfo =  buildArtifactPayload();
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "validateValidYaml", new Object[]{errorWrapper, artifactInfo});
-       }
-
-       
-       @Test
-       public void testIsValidXml() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               byte[] xmlToParse = new byte[] { ' ' };
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "isValidXml", new Object[] { xmlToParse });
-       }
-
-       
-
-
-       
-       @Test
-       public void testIsValidJson() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               byte[] jsonToParse = new byte[] { ' ' };
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "isValidJson", new Object[] { jsonToParse });
-       }
-
-       
-       @Test
-       public void testValidateSingleDeploymentArtifactName() throws Exception {
-       ArtifactsBusinessLogic testSubject;Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
-       String artifactName = "";
-       Component component = createResourceObject(true);
-       NodeTypeEnum parentType = null;
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "validateSingleDeploymentArtifactName", new Object[]{errorWrapper, artifactName, component, NodeTypeEnum.class});
-       }
-
-
-       
-       @Test
-       public void testValidateHeatDeploymentArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               boolean isCreate = false;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifact = null;
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateHeatDeploymentArtifact",
-                               new Object[] { isCreate, artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testValidateResourceType() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       ResourceTypeEnum resourceType = ResourceTypeEnum.VF;
-       ArtifactDefinition artifactInfo =  buildArtifactPayload();
-       List<String> typeList = new ArrayList<>();
-       Either<Boolean,ResponseFormat> result;
-       
-       // test 1
-       testSubject=createTestSubject();
-       result=Deencapsulation.invoke(testSubject, "validateResourceType", new Object[]{resourceType, artifactInfo, typeList});
-       }
-
-       
-       @Test
-       public void testValidateAndConvertHeatParamers() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               String artifactType = "";
-               Either<ArtifactDefinition, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateAndConvertHeatParamers",
-                               new Object[] { artifactInfo, artifactType });
-       }
-
-       
-       @Test
-       public void testGetDeploymentArtifacts() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               Component component = createResourceObject(true);
-               NodeTypeEnum parentType = null;
-               String ciId = "";
-               List<ArtifactDefinition> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getDeploymentArtifacts(component, parentType, ciId);
-       }
-
-
-       
-       @Test
-       public void testValidateFirstUpdateHasPayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifact = null;
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateFirstUpdateHasPayload",
-                               new Object[] { artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testValidateAndSetArtifactname() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateAndSetArtifactname",
-                               new Object[] { artifactInfo });
-       }
-
-       
-       @Test
-       public void testValidateArtifactTypeNotChanged() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifact = null;
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateArtifactTypeNotChanged",
-                               new Object[] { artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testValidateOrSetArtifactGroupType() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifact = null;
-               Either<ArtifactDefinition, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateOrSetArtifactGroupType",
-                               new Object[] { artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testCheckAndSetUnUpdatableFields() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               ArtifactDefinition currentArtifact = null;
-               ArtifactGroupTypeEnum type = null;
-
-               // test 1
-               testSubject = createTestSubject();
-               type = null;
-               Deencapsulation.invoke(testSubject, "checkAndSetUnUpdatableFields", new Object[] { user,
-                               artifactInfo, artifactInfo, ArtifactGroupTypeEnum.class });
-       }
-
-       
-       @Test
-       public void testCheckAndSetUnupdatableHeatParams() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       List<HeatParameterDefinition> heatParameters = new ArrayList<>();
-       List<HeatParameterDefinition> currentParameters = new ArrayList<>();
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", new Object[]{heatParameters, currentParameters});
-       }
-
-       
-       @Test
-       public void testGetMapOfParameters() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       List<HeatParameterDefinition> currentParameters = new ArrayList<>();
-       Map<String,HeatParameterDefinition> result;
-       
-       // default test
-       testSubject=createTestSubject();result=Deencapsulation.invoke(testSubject, "getMapOfParameters", new Object[]{currentParameters});
-       }
-
-
-
-
-
-       
-       @Test
-       public void testHandlePayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               boolean isArtifactMetadataUpdate = false;
-               Either<byte[], ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "handlePayload",
-                               new Object[] { artifactInfo, isArtifactMetadataUpdate });
-       }
-
-       
-
-
-       
-       @Test
-       public void testValidateYmlPayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               byte[] decodedPayload = new byte[] { ' ' };
-               String artifactType = "";
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateYmlPayload",
-                               new Object[] { decodedPayload, artifactType });
-       }
-
-       
-       @Test
-       public void testValidateXmlPayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               byte[] payload = new byte[] { ' ' };
-               String artifactType = "";
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateXmlPayload", new Object[] { payload, artifactType });
-       }
-
-       
-       @Test
-       public void testValidateJsonPayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               byte[] payload = new byte[] { ' ' };
-               String type = "";
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateJsonPayload", new Object[] { payload, type });
-       }
-       
-
-
-
-
-       
-       @Test
-       public void testValidateUserRole() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               
-               AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
-               String componentId = "";
-               String artifactId = "";
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-               ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-               Either<Boolean, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "validateUserRole",
-                               new Object[] { user, auditingAction, componentId, artifactId, componentType,
-                                               operation });
-       }
-
-       @Test
-       public void testDetectAuditingType() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-               ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-               String origMd5 = "";
-               AuditingActionEnum result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "detectAuditingType",
-                               new Object[] { operation, origMd5 });
-       }
-
-       
-
-       
-       @Test
-       public void testCreateEsArtifactData() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDataDefinition artifactInfo = buildArtifactPayload();;;
-               byte[] artifactPayload = new byte[] { ' ' };
-               ESArtifactData result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.createEsArtifactData(artifactInfo, artifactPayload);
-       }
-
-       
-
-
-       
-       @Test
-       public void testIsArtifactMetadataUpdate() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
-                               new Object[] { auditingActionEnum });
-       }
-
-       
-       @Test
-       public void testIsDeploymentArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[] { artifactInfo });
-       }
-
-       
-
-
-       
-       @Test
-       public void testSetArtifactPlaceholderCommonFields() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String resourceId = "";
-               
-               ArtifactDefinition artifactInfo =  buildArtifactPayload();
-
-               // test 1
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "setArtifactPlaceholderCommonFields",
-                               new Object[] { resourceId, user, artifactInfo });
-
-       }
-
-
-       @Test
-       public void testCreateEsHeatEnvArtifactDataFromString() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactDefinition = buildArtifactPayload();;;
-               String payloadStr = "";
-               Either<ESArtifactData, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "createEsHeatEnvArtifactDataFromString",
-                               new Object[] { artifactDefinition, payloadStr });
-       }
-
-       
-
-
-       
-
-
-       
-       @Test
-       public void testUpdateArtifactOnGroupInstance() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
-               Component component =  createResourceObject(true);
-               String instanceId = "";
-               String prevUUID = "";
-               ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-               Either<ArtifactDefinition, ResponseFormat> result;
-
-               // test 1
-               testSubject = createTestSubject();
-               prevUUID = "";
-               result = Deencapsulation.invoke(testSubject, "updateArtifactOnGroupInstance",
-                               new Object[] { componentType, component, instanceId, prevUUID, artifactInfo,
-                                               artifactInfo });
-       }
-
-       
-       @Test
-       public void testGenerateHeatEnvPayload() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactDefinition = buildArtifactPayload();;;
-               String result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = Deencapsulation.invoke(testSubject, "generateHeatEnvPayload",
-                               new Object[] { artifactDefinition });
-       }
-
-
-
-       
-
-       
-       @Test
-       public void testBuildJsonForUpdateArtifact() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-               ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
-               List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
-               Map<String, Object> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.buildJsonForUpdateArtifact(artifactInfo, artifactGroupType, updatedRequiredArtifacts);
-       }
-
-       
-       @Test
-       public void testBuildJsonForUpdateArtifact_1() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               String artifactId = "";
-               String artifactName = "";
-               String artifactType = "";
-               ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
-               String label = "";
-               String displayName = "";
-               String description = "";
-               byte[] artifactContent = new byte[] { ' ' };
-               List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
-               List<HeatParameterDefinition> heatParameters = new ArrayList<>();
-               Map<String, Object> result;
-
-               // test 1
-               testSubject = createTestSubject();
-               artifactId = "";
-               result = testSubject.buildJsonForUpdateArtifact(artifactId, artifactName, artifactType, artifactGroupType,
-                               label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters);
-       }
-
-       
-
-
-
-       
-       @Test
-       public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
-       List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue", new Object[]{currentHeatEnvParams, updatedHeatEnvParams});
-       }
-
-       
-       
-       @Test
-       public void testExtractArtifactDefinition() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifactDefinition = buildArtifactPayload();;
-               Either<ArtifactDefinition, Operation> eitherArtifact = Either.left(artifactDefinition);
-               ArtifactDefinition result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.extractArtifactDefinition(eitherArtifact);
-       }
-
-
-
-       
-       @Test
-       public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               ArtifactDefinition artifact = null;
-               ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-
-               // default test
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "setHeatCurrentValuesOnHeatEnvDefaultValues",
-                               new Object[] { artifactInfo, artifactInfo });
-       }
-
-       
-       @Test
-       public void testBuildHeatEnvFileName() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       ArtifactDefinition heatArtifact = null;
-       ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-       Map<String,Object> placeHolderData = new HashMap<>();
-       
-       
-       // default test
-       testSubject=createTestSubject();Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{artifactInfo, artifactInfo, placeHolderData});
-       }
-
-       
-       @Test
-       public void testHandleEnvArtifactVersion() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-       Map<String,String> existingEnvVersions = new HashMap<>();
-       
-       
-       // test 1
-       testSubject=createTestSubject();
-       Deencapsulation.invoke(testSubject, "handleEnvArtifactVersion", new Object[]{artifactInfo, existingEnvVersions});
-       }
-
-       
-       @Test
-       public void testHandleArtifactsRequestForInnerVfcComponent() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               List<ArtifactDefinition> artifactsToHandle = new ArrayList<>();;
-               Resource component = createResourceObject(true);;
-               
-               List<ArtifactDefinition> vfcsNewCreatedArtifacts = new ArrayList<>();;
-               ArtifactsBusinessLogic arb = new ArtifactsBusinessLogic();
-               ArtifactOperationInfo operation = arb.new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
-               boolean shouldLock = false;
-               boolean inTransaction = false;
-               Either<List<ArtifactDefinition>, ResponseFormat> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.handleArtifactsRequestForInnerVfcComponent(artifactsToHandle, component, user,
-                               vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction);
-       }
-
-       
-
-       
-
-       
-
-
-       
-
-       
-       @Test
-       public void testUpdateAuditParametersWithArtifactDefinition() throws Exception {
-       ArtifactsBusinessLogic testSubject;
-       Map<AuditingFieldsKeysEnum,Object> additionalParams = new HashMap<>();
-       ArtifactDefinition artifactInfo = buildArtifactPayload();;;
-       
-       
-       // test 1
-       testSubject=createTestSubject();
-       Deencapsulation.invoke(testSubject, "updateAuditParametersWithArtifactDefinition", new Object[]{additionalParams, artifactInfo});
-       }
-
-       
-       @Test
-       public void testSetNodeTemplateOperation() throws Exception {
-               ArtifactsBusinessLogic testSubject;
-               NodeTemplateOperation nodeTemplateOperation = null;
-
-               // default test
-               testSubject = createTestSubject();
-               Deencapsulation.invoke(testSubject, "setNodeTemplateOperation", new Object[] { NodeTemplateOperation.class });
-       }
-
-       // @Test
-       // public void convertAndValidateDeploymentArtifactNonHeatSuccess(){
-       // ArtifactDefinition createArtifactDef = createArtifactDef();
-       // createArtifactDef.setArtifactType(ArtifactTypeEnum.YANG_XML.getType());
-       //
-       // Either<ArtifactDefinition, ResponseFormat> validateResult = artifactBL
-       //
-       // assertTrue(validateResult.isLeft());
-       // ArtifactDefinition validatedArtifact = validateResult.left().value();
-       //
-       // assertEquals(createArtifactDef.getArtifactGroupType(),
-       // validatedArtifact.getArtifactGroupType());
-       // assertEquals(new Integer(0), validatedArtifact.getTimeout());
-       // assertFalse(validatedArtifact.getMandatory());
-       // assertFalse(validatedArtifact.getServiceApi());
-       //
-       // }
-       
+@RunWith(MockitoJUnitRunner.Silent.class)
+public class ArtifactsBusinessLogicTest extends BaseBusinessLogicMock {
+
+    public static final Resource resource = Mockito.mock(Resource.class);
+    private static final User USER = new User("John", "Doh", "jh0003", "jh0003@gmail.com", "ADMIN",
+        System.currentTimeMillis());
+    private static final String RESOURCE_INSTANCE_NAME = "Service-111";
+    private static final String INSTANCE_ID = "S-123-444-ghghghg";
+    private static final String ARTIFACT_NAME = "service-Myservice-template.yml";
+    private static final String ARTIFACT_LABEL = "assettoscatemplate";
+    private static final String ES_ARTIFACT_ID = "123123dfgdfgd0";
+    private static final byte[] PAYLOAD = "some payload".getBytes();
+    private static final String RESOURCE_NAME = "My-Resource_Name with   space";
+    private static final String RESOURCE_CATEGORY1 = "Network Layer 2-3";
+    private static final String RESOURCE_SUBCATEGORY = "Router";
+    private static final String ARTIFACT_PLACEHOLDER_FILE_EXTENSION = "fileExtension";
+    private static User user = null;
+    private static Resource resourceResponse = null;
+    final ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
+    @Mock
+    public ComponentsUtils componentsUtils;
+    @Mock
+    public ToscaOperationFacade toscaOperationFacade;
+    JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
+    @Mock
+    JanusGraphDao janusGraphDao;
+    @InjectMocks
+    private ArtifactsBusinessLogic artifactBL;
+    @Mock
+    private UserBusinessLogic userBusinessLogic;
+    @Mock
+    private ArtifactOperation artifactOperation;
+    @Mock
+    private IInterfaceLifecycleOperation lifecycleOperation;
+    @Mock
+    private UserAdminOperation userOperation;
+    @Mock
+    private IElementOperation elementOperation;
+    @Mock
+    private ArtifactCassandraDao artifactCassandraDao;
+    @Mock
+    private NodeTemplateOperation nodeTemplateOperation;
+    @Mock
+    private IGraphLockOperation graphLockOperation;
+    @Mock
+    private UserValidations userValidations;
+    @Mock
+    private ArtifactsResolver artifactsResolver;
+    @Mock
+    private CsarUtils csarUtils;
+    @Mock
+    private ToscaExportHandler toscaExportHandler;
+    @Mock
+    private LifecycleBusinessLogic lifecycleBusinessLogic;
+    @Mock
+    private ArtifactTypeOperation artifactTypeOperation;
+
+    private Gson gson = new GsonBuilder().setPrettyPrinting().create();
+
+    private static List<ArtifactType> getAllTypes() {
+        final List<ArtifactConfiguration> artifactConfigurationList = ConfigurationManager.getConfigurationManager()
+            .getConfiguration().getArtifacts();
+        return artifactConfigurationList.stream().map(artifactConfiguration -> {
+            final ArtifactType artifactType = new ArtifactType();
+            artifactType.setName(artifactConfiguration.getType());
+            return artifactType;
+        }).collect(Collectors.toList());
+    }
+
+    @Before
+    public void initMocks() {
+        MockitoAnnotations.openMocks(this);
+        Either<ArtifactDefinition, StorageOperationStatus> NotFoundResult = Either
+            .right(StorageOperationStatus.NOT_FOUND);
+
+        Either<Map<String, ArtifactDefinition>, StorageOperationStatus> NotFoundResult2 = Either
+            .right(StorageOperationStatus.NOT_FOUND);
+        when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Service), Mockito.anyBoolean()))
+            .thenReturn(NotFoundResult2);
+        when(artifactOperation.getArtifacts(Mockito.anyString(), eq(NodeTypeEnum.Resource), Mockito.anyBoolean()))
+            .thenReturn(NotFoundResult2);
+
+        Either<Map<String, InterfaceDefinition>, StorageOperationStatus> notFoundInterfaces = Either
+            .right(StorageOperationStatus.NOT_FOUND);
+        when(lifecycleOperation.getAllInterfacesOfResource(Mockito.anyString(), Mockito.anyBoolean()))
+            .thenReturn(notFoundInterfaces);
+
+        when(userOperation.getUserData("jh0003", false)).thenReturn(Either.left(USER));
+
+        when(elementOperation.getAllArtifactTypes()).thenReturn(getAllTypes());
+
+        when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VFC);
+
+        // User data and management
+        user = new User();
+        user.setUserId("jh0003");
+        user.setFirstName("Jimmi");
+        user.setLastName("Hendrix");
+        user.setRole(Role.ADMIN.name());
+
+        // createResource
+        resourceResponse = createResourceObject(true);
+        Either<Resource, StorageOperationStatus> eitherCreate = Either.left(resourceResponse);
+        when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(eitherCreate);
+        when(toscaOperationFacade.validateCsarUuidUniqueness(Mockito.anyString())).thenReturn(StorageOperationStatus.OK);
+        Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<String, DataTypeDefinition>();
+        when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(emptyDataTypes));
+        when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
+
+        Either<Component, StorageOperationStatus> resourceStorageOperationStatusEither = Either
+            .right(StorageOperationStatus.BAD_REQUEST);
+        when(toscaOperationFacade.getToscaElement(resourceResponse.getUniqueId()))
+            .thenReturn(resourceStorageOperationStatusEither);
+    }
+
+    @Test
+    public void testValidJson() {
+        ArtifactDefinition ad = createArtifactDef();
+
+        String jsonArtifact = "";
+
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+
+        try {
+            jsonArtifact = mapper.writeValueAsString(ad);
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+        ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact,
+            ArtifactDefinition.class, false);
+        assertEquals(ad, afterConvert);
+    }
+
+    private ArtifactDefinition createArtifactDef() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+        ad.setArtifactName("artifact1.yaml");
+        ad.setArtifactLabel("label1");
+        ad.setDescription("description");
+        ad.setArtifactType(ArtifactTypeEnum.HEAT.getType());
+        ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        ad.setCreationDate(System.currentTimeMillis());
+        ad.setMandatory(false);
+        ad.setTimeout(15);
+        return ad;
+    }
+
+    private Resource createResourceObject(boolean afterCreate) {
+        Resource resource = new Resource();
+        resource.setName(RESOURCE_NAME);
+        resource.addCategory(RESOURCE_CATEGORY1, RESOURCE_SUBCATEGORY);
+        resource.setDescription("My short description");
+        List<String> tgs = new ArrayList<String>();
+        tgs.add("test");
+        tgs.add(resource.getName());
+        resource.setTags(tgs);
+        List<String> template = new ArrayList<String>();
+        template.add("Root");
+        resource.setDerivedFrom(template);
+        resource.setVendorName("Motorola");
+        resource.setVendorRelease("1.0.0");
+        resource.setContactId("ya5467");
+        resource.setIcon("MyIcon");
+
+        if (afterCreate) {
+            resource.setName(resource.getName());
+            resource.setVersion("0.1");
+            resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
+            resource.setCreatorUserId(user.getUserId());
+            resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
+            resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
+        }
+        return resource;
+    }
+
+    @Test
+    public void testUpdateCIDeploymentArtifactTimeout() {
+        ArtifactDefinition heatArtifact = new ArtifactDefinition();
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
+        ComponentInstance ci = new ComponentInstance();
+        ci.setUniqueId("ciid");
+        ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact, envArtifact, origEnvArtifact));
+        GroupInstance groupInstance = new GroupInstance();
+        groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
+        groupInstance.setCustomizationUUID("custUid");
+        groupInstance.setUniqueId("guid");
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        groupInstances.addAll(Arrays.asList(groupInstance));
+        ci.setGroupInstances(groupInstances);
+        Service service = new Service();
+        service.setComponentInstances(Collections.singletonList(ci));
+        service.setUniqueId("suid");
+
+        when(artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
+            heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(
+            Either.left(heatArtifact));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service), eq(ci.getUniqueId()), any(List.class)))
+            .thenReturn(Either.left(new ArrayList()));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(),
+            new ArrayList<>(Arrays.asList("guid"))))
+            .thenReturn(StorageOperationStatus.OK);
+        artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE,
+            new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+            "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
+        assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(envArtifact.getTimeout());
+        assertThat(ci.getDeploymentArtifacts().get("HEAT_ENV").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
+    }
+
+    @Test
+    public void testUpdateCIDeploymentTimeout_invalidTimeout() {
+        ArtifactDefinition heatArtifact = new ArtifactDefinition();
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
+        ComponentInstance ci = new ComponentInstance();
+        ci.setUniqueId("ciid");
+        ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact, envArtifact, origEnvArtifact));
+        GroupInstance groupInstance = new GroupInstance();
+        groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
+        groupInstance.setCustomizationUUID("custUid");
+        groupInstance.setUniqueId("guid");
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        groupInstances.addAll(Arrays.asList(groupInstance));
+        ci.setGroupInstances(groupInstances);
+        Service service = new Service();
+        service.setComponentInstances(Collections.singletonList(ci));
+        service.setUniqueId("suid");
+        envArtifact.setTimeout(130);
+
+        when(artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
+            heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(
+            Either.left(heatArtifact));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service), eq(ci.getUniqueId()), any(List.class)))
+            .thenReturn(Either.left(new ArrayList()));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(),
+            new ArrayList<>(Arrays.asList("guid"))))
+            .thenReturn(StorageOperationStatus.OK);
+        try {
+            artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE,
+                new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+                "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
+            return;
+        }
+        fail();
+    }
+
+    @Test
+    public void testUpdateCIDeploymentTimeout_negativeTimeout() {
+        ArtifactDefinition heatArtifact = new ArtifactDefinition();
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
+        ComponentInstance ci = new ComponentInstance();
+        ci.setUniqueId("ciid");
+        ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact, envArtifact, origEnvArtifact));
+        GroupInstance groupInstance = new GroupInstance();
+        groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
+        groupInstance.setCustomizationUUID("custUid");
+        groupInstance.setUniqueId("guid");
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        groupInstances.addAll(Arrays.asList(groupInstance));
+        ci.setGroupInstances(groupInstances);
+        Service service = new Service();
+        service.setComponentInstances(Collections.singletonList(ci));
+        service.setUniqueId("suid");
+        envArtifact.setTimeout(-1);
+
+        when(artifactToscaOperation.updateArtifactOnResource(heatArtifact, service,
+            heatArtifact.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE.getNodeType(), ci.getUniqueId(), false)).thenReturn(
+            Either.left(heatArtifact));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service), eq(ci.getUniqueId()), any(List.class)))
+            .thenReturn(Either.left(new ArrayList()));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstanceGroup(service.getUniqueId(), ci.getUniqueId(),
+            new ArrayList<>(Arrays.asList("guid"))))
+            .thenReturn(StorageOperationStatus.OK);
+        try {
+            artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE,
+                new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+                "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_INVALID_TIMEOUT);
+            return;
+        }
+        fail();
+    }
+
+    @Test
+    public void testUpdateCIDeploymentArtifactTimeout_noUpdate() {
+        ArtifactDefinition heatArtifact = new ArtifactDefinition();
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
+        ComponentInstance ci = new ComponentInstance();
+        ci.setUniqueId("ciid");
+        ci.setDeploymentArtifacts(fillDeploymentArtifacts(heatArtifact, envArtifact, origEnvArtifact));
+        envArtifact.setTimeout(heatArtifact.getTimeout());
+        GroupInstance groupInstance = new GroupInstance();
+        groupInstance.setGroupInstanceArtifacts(new ArrayList<>(Arrays.asList(heatArtifact.getUniqueId(), envArtifact.getUniqueId())));
+        groupInstance.setCustomizationUUID("custUid");
+        groupInstance.setUniqueId("guid");
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        groupInstances.addAll(Arrays.asList(groupInstance));
+        ci.setGroupInstances(groupInstances);
+        Service service = new Service();
+        service.setComponentInstances(Collections.singletonList(ci));
+        service.setUniqueId("suid");
+
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service), eq(ci.getUniqueId()), any(List.class)))
+            .thenReturn(Either.left(new ArrayList()));
+        artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE,
+            new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+            "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
+        assertThat(ci.getDeploymentArtifacts().get("HEAT").getTimeout()).isEqualTo(origEnvArtifact.getTimeout());
+    }
+
+    @Test
+    public void testUpdateCIDeploymentArtifactTimeout_nonExistingArtifact() {
+        ArtifactDefinition heatArtifact = new ArtifactDefinition();
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        ArtifactDefinition origEnvArtifact = new ArtifactDefinition();
+        envArtifact.setTimeout(heatArtifact.getTimeout());
+        envArtifact.setArtifactType("HEAT_ENV");
+        envArtifact.setGeneratedFromId("uid1");
+        ComponentInstance ci = new ComponentInstance();
+        ci.setUniqueId("ciid");
+        ci.setDeploymentArtifacts(new HashMap<>());
+        Service service = new Service();
+        service.setComponentInstances(Collections.singletonList(ci));
+        service.setUniqueId("suid");
+
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(service.getUniqueId(), ci.getUniqueId()))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.updateGroupInstancesOnComponent(eq(service), eq(ci.getUniqueId()), any(List.class)))
+            .thenReturn(Either.left(new ArrayList()));
+        assertThatThrownBy(() -> {
+            artifactBL.handleUpdate(ci.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE,
+                new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+                "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, service, true);
+        }).isInstanceOf(ComponentException.class);
+    }
+
+    @Test
+    public void testUpdateCIDeploymentArtifactTimeout_invalidArtifactType() {
+        ArtifactDefinition envArtifact = new ArtifactDefinition();
+        envArtifact.setArtifactType("invalid");
+
+        try {
+            artifactBL.handleUpdate("uid", ComponentTypeEnum.RESOURCE_INSTANCE, new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE),
+                "uid2", envArtifact, null, null, null, null, null, AuditingActionEnum.ARTIFACT_METADATA_UPDATE, user, null, true);
+            fail();
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.ARTIFACT_TYPE_NOT_SUPPORTED);
+            assertThat(exp.getParams()[0]).isEqualTo("invalid");
+        }
+    }
+
+    private Map<String, ArtifactDefinition> fillDeploymentArtifacts(ArtifactDefinition heatArtifact, ArtifactDefinition envArtifact,
+                                                                    ArtifactDefinition origEnvArtifact) {
+        heatArtifact.setArtifactType("HEAT");
+        heatArtifact.setTimeout(60);
+        heatArtifact.setEsId("es");
+        heatArtifact.setArtifactUUID("uuid1");
+        heatArtifact.setUniqueId("uid1");
+        envArtifact.setArtifactUUID("uuid2");
+        envArtifact.setArtifactType("HEAT_ENV");
+        envArtifact.setTimeout(30);
+        envArtifact.setGenerated(true);
+        envArtifact.setGeneratedFromId("uid1");
+        envArtifact.setUniqueId("uid2");
+        origEnvArtifact.setUniqueId("uid2");
+        origEnvArtifact.setGeneratedFromId("uid1");
+        origEnvArtifact.setArtifactType("HEAT_ENV");
+        origEnvArtifact.setTimeout(60);
+        origEnvArtifact.setGenerated(true);
+        Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
+        deploymentArtifacts.put(heatArtifact.getArtifactType(), heatArtifact);
+        //deploymentArtifacts.put(envArtifact.getArtifactType(), envArtifact);
+        deploymentArtifacts.put(envArtifact.getArtifactType(), origEnvArtifact);
+        return deploymentArtifacts;
+    }
+
+    @Test
+    public void testInvalidStringGroupType() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+        ad.setArtifactName("artifact1");
+        ad.setCreationDate(System.currentTimeMillis());
+        ad.setMandatory(false);
+        ad.setTimeout(15);
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", "www");
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+            ArtifactDefinition.class, false);
+        assertNull(afterConvert);
+    }
+
+    @Test
+    public void testUpdateArtifactWithEmptyBody() {
+        try {
+            RepresentationUtils.convertJsonToArtifactDefinition("", ArtifactDefinition.class, true);
+            fail();
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_BODY);
+        }
+    }
+
+    @Test
+    public void testInvalidNumberGroupType() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+        ad.setArtifactName("artifact1");
+        ad.setCreationDate(System.currentTimeMillis());
+        ad.setMandatory(false);
+        ad.setTimeout(15);
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", 123);
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+            ArtifactDefinition.class, false);
+        assertNull(afterConvert);
+    }
+
+    @Test
+    public void testMissingArtifactTypeValue() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
+        jsonArtifact.getAsJsonObject().add("artifactType", null);
+        try {
+            RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+                ArtifactDefinition.class, true);
+            fail();
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MANDATORY_PROPERTY_MISSING_VALUE);
+            assertThat(exp.getParams()[0]).isEqualTo("artifactType");
+        }
+    }
+
+    @Test
+    public void testMissingArtifactLabel() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
+        jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        try {
+            RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+                ArtifactDefinition.class, false);
+            fail();
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
+            assertThat(exp.getParams()[0]).isEqualTo("artifactLabel");
+        }
+    }
+
+    @Test
+    public void testMissingArtifactTimeout() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", ArtifactGroupTypeEnum.DEPLOYMENT.toString());
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        try {
+            RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+                ArtifactDefinition.class, true);
+            fail();
+        } catch (ComponentException exp) {
+            assertThat(exp.getActionStatus()).isEqualTo(ActionStatus.MISSING_MANDATORY_PROPERTY);
+            assertThat(exp.getParams()[0]).isEqualTo("timeout");
+        }
+    }
+
+
+    @Test
+    public void testInvalidGroupTypeWithSpace() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+        ad.setArtifactName("artifact1");
+        ad.setCreationDate(System.currentTimeMillis());
+        ad.setMandatory(false);
+        ad.setTimeout(15);
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("timeout", " 80");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+            ArtifactDefinition.class, false);
+        assertNull(afterConvert);
+    }
+
+    @Test
+    public void testInvalidTimeoutWithSpace() {
+        ArtifactDefinition ad = new ArtifactDefinition();
+        ad.setArtifactName("artifact1");
+        ad.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        ad.setCreationDate(System.currentTimeMillis());
+        ad.setMandatory(false);
+
+        JsonElement jsonArtifact = gson.toJsonTree(ad);
+        jsonArtifact.getAsJsonObject().addProperty("timeout", "dfsdf15");
+        jsonArtifact.getAsJsonObject().addProperty("artifactLabel", " label");
+        jsonArtifact.getAsJsonObject().addProperty("artifactGroupType", " DEPLOYMENT");
+        jsonArtifact.getAsJsonObject().addProperty("artifactType", " HEAT");
+
+        ArtifactDefinition afterConvert = RepresentationUtils.convertJsonToArtifactDefinition(jsonArtifact.toString(),
+            ArtifactDefinition.class, true);
+        assertNull(afterConvert);
+    }
+
+    @Test
+    public void testValidMibArtifactsConfiguration() {
+        final ArtifactConfigManager artifactConfigManager = ArtifactConfigManager.getInstance();
+        Optional<ArtifactConfiguration> artifactConfiguration = artifactConfigManager
+            .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
+        assertThat(artifactConfiguration.isPresent()).isTrue();
+
+        artifactConfiguration = artifactConfigManager
+            .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE);
+        assertThat(artifactConfiguration.isPresent()).isTrue();
+
+        artifactConfiguration = artifactConfigManager
+            .find(ArtifactTypeEnum.SNMP_POLL.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
+        assertThat(artifactConfiguration.isPresent()).isTrue();
+        artifactConfiguration = artifactConfigManager
+            .find(ArtifactTypeEnum.SNMP_TRAP.getType(), ArtifactGroupTypeEnum.DEPLOYMENT, ComponentType.RESOURCE_INSTANCE);
+        assertThat(artifactConfiguration.isPresent()).isTrue();
+    }
+
+    @Test
+    public void testDownloadServiceArtifactByNames() {
+        Service service = new Service();
+        String serviceName = "myService";
+        String serviceVersion = "1.0";
+        String serviceId = "serviceId";
+        service.setName(serviceName);
+        service.setVersion(serviceVersion);
+        service.setUniqueId(serviceId);
+
+        String artifactName = "service-Myservice-template.yml";
+        String artifactLabel = "assettoscatemplate";
+        String esArtifactId = "123123dfgdfgd0";
+        byte[] payload = "some payload".getBytes();
+        ArtifactDefinition toscaTemplateArtifact = new ArtifactDefinition();
+        toscaTemplateArtifact.setArtifactName(artifactName);
+        toscaTemplateArtifact.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
+        toscaTemplateArtifact.setArtifactLabel(artifactLabel);
+        toscaTemplateArtifact.setEsId(esArtifactId);
+        toscaTemplateArtifact.setPayload(payload);
+
+        Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
+        toscaArtifacts.put(artifactLabel, toscaTemplateArtifact);
+        service.setToscaArtifacts(toscaArtifacts);
+
+        DAOArtifactData DAOArtifactData = new DAOArtifactData(esArtifactId);
+        DAOArtifactData.setDataAsArray(payload);
+        Either<DAOArtifactData, CassandraOperationStatus> artifactfromESres = Either.left(DAOArtifactData);
+        when(artifactCassandraDao.getArtifact(esArtifactId)).thenReturn(artifactfromESres);
+        when(toscaOperationFacade.getBySystemNameAndVersion(ComponentTypeEnum.SERVICE, serviceName, serviceVersion)).thenReturn(Either.left(service));
+        byte[] downloadServiceArtifactByNamesRes = artifactBL
+            .downloadServiceArtifactByNames(serviceName, serviceVersion, artifactName);
+        assertThat(downloadServiceArtifactByNamesRes != null
+            && downloadServiceArtifactByNamesRes.length == payload.length).isTrue();
+    }
+
+    @Test
+    public void createHeatEnvPlaceHolder_vf_emptyHeatParameters() throws Exception {
+        ArtifactDefinition heatArtifact = new ArtifactBuilder()
+            .addHeatParam(ObjectGenerator.buildHeatParam("defVal1", "val1"))
+            .addHeatParam(ObjectGenerator.buildHeatParam("defVal2", "val2")).build();
+
+        Resource component = new Resource();
+        component.setComponentType(ComponentTypeEnum.RESOURCE);
+        when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
+        when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
+            eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
+            .thenReturn(Either.left(new ArtifactDefinition()));
+        ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
+            new ArrayList<>(), heatArtifact, HEAT_VF_ENV_NAME, "parentId", NodeTypeEnum.Resource, "parentName", USER, component,
+            Collections.emptyMap());
+        assertNull(heatEnvPlaceHolder.getListHeatParameters());
+    }
+
+    @Test
+    public void createHeatEnvPlaceHolder_resourceInstance_copyHeatParamasCurrValuesToHeatEnvDefaultVal()
+        throws Exception {
+        HeatParameterDefinition heatParam1 = ObjectGenerator.buildHeatParam("defVal1", "val1");
+        HeatParameterDefinition heatParam2 = ObjectGenerator.buildHeatParam("defVal2", "val2");
+        HeatParameterDefinition heatParam3 = ObjectGenerator.buildHeatParam("defVal3", "val3");
+        ArtifactDefinition heatArtifact = new ArtifactBuilder().addHeatParam(heatParam1).addHeatParam(heatParam2)
+            .addHeatParam(heatParam3).build();
+
+        Resource component = new Resource();
+
+        when(userBusinessLogic.getUser(anyString(), anyBoolean())).thenReturn(USER);
+        when(artifactToscaOperation.addHeatEnvArtifact(any(ArtifactDefinition.class), any(ArtifactDefinition.class),
+            eq(component), eq(NodeTypeEnum.Resource), eq(true), eq("parentId")))
+            .thenReturn(Either.left(new ArtifactDefinition()));
+
+        ArtifactDefinition heatEnvPlaceHolder = artifactBL.createHeatEnvPlaceHolder(
+            new ArrayList<>(), heatArtifact, HEAT_ENV_NAME, "parentId", NodeTypeEnum.ResourceInstance, "parentName", USER, component,
+            Collections.emptyMap());
+
+        ArtifactDefinition heatEnvArtifact = heatEnvPlaceHolder;
+        List<HeatParameterDefinition> listHeatParameters = heatEnvArtifact.getListHeatParameters();
+        assertEquals(listHeatParameters.size(), 3);
+        verifyHeatParam(listHeatParameters.get(0), heatParam1);
+        verifyHeatParam(listHeatParameters.get(1), heatParam2);
+        verifyHeatParam(listHeatParameters.get(2), heatParam3);
+    }
+
+    @Test
+    public void buildArtifactPayloadWhenShouldLockAndInTransaction() {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactName(ARTIFACT_NAME);
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
+        artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
+        artifactDefinition.setEsId(ES_ARTIFACT_ID);
+        artifactDefinition.setPayload(PAYLOAD);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
+
+        when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
+        when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
+            any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
+        when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
+        artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
+            ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, true);
+    }
+
+    @Test
+    public void buildArtifactPayloadWhenShouldLockAndNotInTransaction() {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactName(ARTIFACT_NAME);
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
+        artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
+        artifactDefinition.setEsId(ES_ARTIFACT_ID);
+        artifactDefinition.setPayload(PAYLOAD);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
+
+        when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
+        when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
+            any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
+        when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
+        artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
+            ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
+        verify(janusGraphDao, times(1)).commit();
+    }
+
+    private ArtifactDefinition buildArtifactPayload() {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactName(ARTIFACT_NAME);
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_TEMPLATE.getType());
+        artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
+        artifactDefinition.setEsId(ES_ARTIFACT_ID);
+        artifactDefinition.setPayload(PAYLOAD);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
+
+        when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
+        when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), any(),
+            any(NodeTypeEnum.class), any(String.class), eq(true))).thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.saveArtifact(any())).thenReturn(CassandraOperationStatus.OK);
+        when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(new ResponseFormat());
+        artifactBL.generateAndSaveHeatEnvArtifact(artifactDefinition, String.valueOf(PAYLOAD),
+            ComponentTypeEnum.SERVICE, new Service(), RESOURCE_INSTANCE_NAME, USER, INSTANCE_ID, true, false);
+        verify(janusGraphDao, times(1)).commit();
+        return artifactDefinition;
+    }
+
+    private void verifyHeatParam(HeatParameterDefinition heatEnvParam, HeatParameterDefinition heatYamlParam) {
+        assertEquals(heatEnvParam.getDefaultValue(), heatYamlParam.getCurrentValue());
+        assertNull(heatEnvParam.getCurrentValue());
+    }
+
+    //////////////////////////////////////////////////////////////////////////////////
+    //////////////////////////////////new tests///////////////////////////////////////
+    /////////////////////////////////////////////////////////////////////////////////
+    private ArtifactsBusinessLogic createTestSubject() {
+        return getTestSubject();
+    }
+
+    @Test
+    public void testCheckCreateFields() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        // User user = USER;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactGroupTypeEnum type = ArtifactGroupTypeEnum.DEPLOYMENT;
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "checkCreateFields", user, artifactInfo, type);
+    }
+
+    @Test
+    public void testComposeArtifactId() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String resourceId = "";
+        String artifactId = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        String interfaceName = "";
+        String operationName = "";
+        String result;
+
+        // test 1
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "composeArtifactId",
+            new Object[]{resourceId, artifactId, artifactInfo, interfaceName, operationName});
+    }
+
+    @Test
+    public void testConvertParentType() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        NodeTypeEnum result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "convertParentType", new Object[]{componentType});
+    }
+
+    @Test
+    public void testConvertToOperation() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        String operationName = "";
+        Operation result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "convertToOperation",
+            new Object[]{artifactInfo, operationName});
+    }
+
+    @Test
+    public void testCreateInterfaceArtifactNameFromOperation() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String operationName = "";
+        String artifactName = "";
+        String result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "createInterfaceArtifactNameFromOperation",
+            new Object[]{operationName, artifactName});
+    }
+
+    @Test
+    public void testFetchArtifactsFromComponent() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        Component component = createResourceObject(true);
+        Map<String, ArtifactDefinition> artifacts = new HashMap<>();
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "fetchArtifactsFromComponent",
+            artifactId, component, artifacts);
+    }
+
+    @Test
+    public void testValidateArtifact() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String componentId = "";
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        String artifactId = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
+
+        Component component = createResourceObject(true);
+        boolean shouldLock = false;
+        boolean inTransaction = false;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.validateArtifact(componentId, componentType, operation, artifactId, artifactInfo, auditingAction, user, component, shouldLock,
+            inTransaction);
+    }
+
+    @Test
+    public void testHandleHeatEnvDownload() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String componentId = "";
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+
+        Component component = createResourceObject(true);
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        boolean shouldLock = false;
+        boolean inTransaction = false;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.handleHeatEnvDownload(componentId, componentType, user, component, artifactInfo, shouldLock, inTransaction);
+    }
+
+    @Test
+    public void testArtifactGenerationRequired() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        Component component = createResourceObject(true);
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        boolean result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "artifactGenerationRequired",
+            new Object[]{component, artifactInfo});
+    }
+
+    @Test
+    public void testUpdateGroupForHeat() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition artAfterUpdate = null;
+        Component component = createResourceObject(true);
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.updateGroupForHeat(artifactInfo, artifactInfo, component);
+    }
+
+    @Test
+    public void testUpdateGroupForHeat_1() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        Component component = createResourceObject(true);
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.updateGroupForHeat(artifactInfo, artifactInfo, artifactInfo,
+            artifactInfo, component);
+    }
+
+
+    @Test
+    public void testHandleAuditing() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
+        Component component = createResourceObject(true);
+        String componentId = "";
+
+        ArtifactDefinition artifactDefinition = buildArtifactPayload();
+        String prevArtifactUuid = "";
+        String currentArtifactUuid = "";
+        ResponseFormat responseFormat = new ResponseFormat();
+        ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.RESOURCE;
+        String resourceInstanceName = "";
+
+        // test 1
+        testSubject = createTestSubject();
+        testSubject.setComponentsUtils(MockGenerator.mockComponentUtils());
+        testSubject.handleAuditing(auditingActionEnum, component, componentId, user, artifactDefinition,
+            prevArtifactUuid, currentArtifactUuid, responseFormat, componentTypeEnum, resourceInstanceName);
+    }
+
+    @Test
+    public void testIgnoreUnupdateableFieldsInUpdate() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition currentArtifactInfo = null;
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "ignoreUnupdateableFieldsInUpdate",
+            operation, artifactInfo, artifactInfo);
+    }
+
+    @Test
+    public void testFindArtifactOnParentComponent() {
+        ArtifactsBusinessLogic testSubject;
+        Component component = createResourceObject(true);
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        String parentId = "";
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        String artifactId = "";
+        Either<ArtifactDefinition, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "findArtifact", new Object[]{component,
+            componentType, parentId, operation, artifactId});
+    }
+
+
+    @Test
+    public void testValidateInformationalArtifact() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        Component component = createResourceObject(true);
+        Either<Boolean, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "validateInformationalArtifact",
+            new Object[]{artifactInfo, component});
+    }
+
+
+    @Test
+    public void testGetUpdatedGroups() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        List<GroupDefinition> groups = new ArrayList<>();
+        List<GroupDataDefinition> result;
+
+        // test 1
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "getUpdatedGroups", new Object[]{artifactId, artifactInfo, groups});
+    }
+
+
+    @Test
+    public void testGetUpdatedGroupInstances() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        List<GroupDefinition> groups = new ArrayList<>();
+        List<GroupInstance> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "getUpdatedGroupInstances", new Object[]{artifactId, artifactInfo, groups});
+    }
+
+
+    @Test
+    public void testFindArtifact_1() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        Component component = createResourceObject(true);
+        String parentId = "";
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        Either<ImmutablePair<ArtifactDefinition, ComponentInstance>, ActionStatus> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "findArtifact",
+            new Object[]{artifactId, component, parentId, componentType});
+    }
+
+
+    @Test
+    public void testFetchArtifactsFromInstance() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        Map<String, ArtifactDefinition> artifacts = new HashMap<>();
+        ComponentInstance instance = new ComponentInstance();
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "fetchArtifactsFromInstance", new Object[]{artifactId, artifacts, instance});
+    }
+
+
+    @Test
+    public void testGenerateCustomizationUUIDOnInstance() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String componentId = "";
+        String instanceId = "";
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        StorageOperationStatus result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "generateCustomizationUUIDOnInstance",
+            new Object[]{componentId, instanceId, componentType});
+    }
+
+    @Test
+    public void testFindComponentInstance() {
+        ArtifactsBusinessLogic testSubject;
+        String componentInstanceId = "";
+        Component component = createResourceObject(true);
+        ComponentInstance result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "findComponentInstance",
+            new Object[]{componentInstanceId, component});
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testDeploymentArtifactTypeIsLegalForParent_shouldThrowException() {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactTypeEnum artifactType = ArtifactTypeEnum.AAI_SERVICE_MODEL;
+        Map<String, ArtifactTypeConfig> resourceDeploymentArtifacts = new HashMap<>();
+        // test 1
+        testSubject = createTestSubject();
+        testSubject.validateDeploymentArtifactTypeIsLegalForParent(artifactInfo, artifactType, resourceDeploymentArtifacts);
+    }
+
+    @Test
+    public void testLoadArtifactTypeConfig() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        //null artifactType
+        Optional<ArtifactConfiguration> artifactConfiguration = artifactsBusinessLogic.loadArtifactTypeConfig(null);
+        assertThat(artifactConfiguration.isPresent()).isFalse();
+        //not configured artifactType
+        artifactConfiguration = artifactsBusinessLogic.loadArtifactTypeConfig("NotConfiguredArtifactType");
+        assertThat(artifactConfiguration.isPresent()).isFalse();
+
+        //valid artifactType
+        final String artifactType = ArtifactTypeEnum.YANG.getType();
+        artifactConfiguration = artifactsBusinessLogic.loadArtifactTypeConfig(artifactType);
+        assertThat(artifactConfiguration.isPresent()).isTrue();
+        final ArtifactConfiguration artifactConfiguration1 = artifactConfiguration.get();
+        assertThat(artifactConfiguration1.getType()).isEqualTo(artifactType);
+        assertThat(artifactConfiguration1.getCategories()).hasSize(1);
+        assertThat(artifactConfiguration1.getCategories()).contains(ArtifactGroupTypeEnum.INFORMATIONAL);
+        assertThat(artifactConfiguration1.getComponentTypes()).hasSize(1);
+        assertThat(artifactConfiguration1.getComponentTypes()).contains(ComponentType.RESOURCE);
+        assertThat(artifactConfiguration1.getResourceTypes()).hasSize(11);
+        assertThat(artifactConfiguration1.getResourceTypes())
+            .contains(ResourceTypeEnum.VFC.getValue(), ResourceTypeEnum.CP.getValue(), ResourceTypeEnum.VL.getValue(),
+                ResourceTypeEnum.VF.getValue(), ResourceTypeEnum.VFCMT.getValue(), "Abstract",
+                ResourceTypeEnum.CVFC.getValue());
+    }
+
+    @Test
+    public void testValidateArtifactExtension_acceptedExtension() {
+        final ArtifactDefinition artifactInfo = new ArtifactDefinition();
+        artifactInfo.setArtifactName("artifact.yml");
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        //empty accepted types
+        assertThatCode(() -> artifactsBusinessLogic.validateArtifactExtension(new ArtifactConfiguration(), artifactInfo))
+            .doesNotThrowAnyException();
+
+        final ArtifactConfiguration artifactConfiguration = new ArtifactConfiguration();
+        artifactConfiguration.setAcceptedTypes(Arrays.asList("yml", "yaml"));
+        assertThatCode(() -> artifactsBusinessLogic.validateArtifactExtension(artifactConfiguration, artifactInfo))
+            .doesNotThrowAnyException();
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateArtifactExtension_notAcceptedExtension() {
+        final ArtifactConfiguration artifactConfiguration = new ArtifactConfiguration();
+        artifactConfiguration.setAcceptedTypes(Arrays.asList("yml", "yaml"));
+        final ArtifactDefinition artifactInfo = new ArtifactDefinition();
+        //not accepted extension
+        artifactInfo.setArtifactName("artifact.xml");
+
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+
+        artifactsBusinessLogic.validateArtifactExtension(artifactConfiguration, artifactInfo);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateArtifactExtension_noExtension() {
+        final ArtifactConfiguration artifactConfiguration = new ArtifactConfiguration();
+        artifactConfiguration.setAcceptedTypes(Arrays.asList("yml", "yaml"));
+        final ArtifactDefinition artifactInfo = new ArtifactDefinition();
+        //no extension in the artifact name
+        artifactInfo.setArtifactName("artifact");
+
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+
+        artifactsBusinessLogic.validateArtifactExtension(artifactConfiguration, artifactInfo);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateHeatEnvDeploymentArtifact_shouldThrowException() {
+        ArtifactsBusinessLogic testSubject;
+        Component component = createResourceObject(true);
+        String parentId = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        // default test
+        testSubject = createTestSubject();
+        testSubject.validateHeatEnvDeploymentArtifact(component, parentId, artifactInfo);
+    }
+
+    @Test
+    public void testFillArtifactPayloadValidation() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
+        Wrapper<byte[]> payloadWrapper = new Wrapper<>();
+        ArtifactDefinition artifactDefinition = buildArtifactPayload();
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.fillArtifactPayload(payloadWrapper, artifactDefinition);
+    }
+
+    @Test(expected = ByActionStatusComponentException.class)
+    public void testHeatTimeoutValue() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        artifactInfo.setTimeout(1);
+        artifactsBusinessLogic.validateHeatTimeoutValue(artifactInfo);
+        artifactInfo.setTimeout(0);
+        artifactsBusinessLogic.validateHeatTimeoutValue(artifactInfo);
+    }
+
+    @Test
+    public void testValidateResourceType_resourceTypeIsAccepted() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        final List<String> typeList = Arrays
+            .asList(ResourceTypeEnum.VF.getValue(), ResourceTypeEnum.PNF.getValue(), ResourceTypeEnum.VFC.getValue());
+        assertThatCode(() -> {
+            artifactsBusinessLogic.validateResourceType(ResourceTypeEnum.VF, artifactInfo, typeList);
+        }).doesNotThrowAnyException();
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateResourceType_invalidResourceType() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        final List<String> typeList = Collections.singletonList(ResourceTypeEnum.PNF.getValue());
+        artifactsBusinessLogic.validateResourceType(ResourceTypeEnum.VF, artifactInfo, typeList);
+    }
+
+    @Test
+    public void testValidateResourceType_emptyResourceTypeConfig_resourceTypeIsAccepted() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        assertThatCode(() -> {
+            artifactsBusinessLogic.validateResourceType(ResourceTypeEnum.VF, artifactInfo, null);
+        }).doesNotThrowAnyException();
+        assertThatCode(() -> {
+            artifactsBusinessLogic.validateResourceType(ResourceTypeEnum.VF, artifactInfo, new ArrayList<>());
+        }).doesNotThrowAnyException();
+    }
+
+    @Test
+    public void testValidateAndConvertHeatParameters() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        String artifactType = "";
+        Either<ArtifactDefinition, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.validateAndConvertHeatParameters(artifactInfo, artifactType);
+    }
+
+    @Test
+    public void testGetDeploymentArtifacts() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        Component component = createResourceObject(true);
+        NodeTypeEnum parentType = null;
+        String ciId = "";
+        List<ArtifactDefinition> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = testSubject.getDeploymentArtifacts(component, ciId);
+    }
+
+
+    @Test
+    public void testValidateFirstUpdateHasPayload() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition currentArtifact = null;
+        Either<Boolean, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "validateFirstUpdateHasPayload",
+            new Object[]{artifactInfo, artifactInfo});
+    }
+
+    @Test
+    public void testValidateAndSetArtifactname() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        Either<Boolean, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        testSubject.validateAndSetArtifactName(artifactInfo);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateArtifactType_notConfiguredArtifactType() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        artifactInfo.setArtifactType("notConfiguredType");
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateArtifactType", artifactInfo, ComponentTypeEnum.RESOURCE);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateArtifactType_componentTypeNotSupportedByArtifactType() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        artifactInfo.setArtifactType(ArtifactTypeEnum.WORKFLOW.getType());
+
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateArtifactType", artifactInfo, ComponentTypeEnum.RESOURCE);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void testValidateArtifactType_groupTypeNotSupportedByArtifactType() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = createTestSubject();
+        final ArtifactDefinition artifactInfo = buildArtifactPayload();
+        artifactInfo.setArtifactType(ArtifactTypeEnum.WORKFLOW.getType());
+        artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
+
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateArtifactType", artifactInfo, ComponentTypeEnum.SERVICE);
+    }
+
+    @Test
+    public void testValidateArtifactTypeNotChanged() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition currentArtifact = null;
+        Either<Boolean, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "validateArtifactTypeNotChanged",
+            new Object[]{artifactInfo, artifactInfo});
+    }
+
+
+    @Test
+    public void testValidateOrSetArtifactGroupType() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition currentArtifact = null;
+        Either<ArtifactDefinition, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "validateOrSetArtifactGroupType",
+            new Object[]{artifactInfo, artifactInfo});
+    }
+
+    @Test
+    public void testCheckAndSetUnUpdatableFields() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactDefinition currentArtifact = null;
+        ArtifactGroupTypeEnum type = null;
+
+        // test 1
+        testSubject = createTestSubject();
+        type = null;
+        Deencapsulation.invoke(testSubject, "checkAndSetUnUpdatableFields", user,
+            artifactInfo, artifactInfo, ArtifactGroupTypeEnum.class);
+    }
+
+    @Test
+    public void testCheckAndSetUnupdatableHeatParams() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        List<HeatParameterDefinition> heatParameters = new ArrayList<>();
+        List<HeatParameterDefinition> currentParameters = new ArrayList<>();
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "checkAndSetUnupdatableHeatParams", new Object[]{heatParameters, currentParameters});
+    }
+
+    @Test
+    public void testGetMapOfParameters() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        List<HeatParameterDefinition> currentParameters = new ArrayList<>();
+        Map<String, HeatParameterDefinition> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "getMapOfParameters", new Object[]{currentParameters});
+    }
+
+    @Test
+    public void testGivenValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
+        final byte[] payload = "validYaml: yes".getBytes();
+        ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
+
+        final boolean isArtifactMetadataUpdate = false;
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+
+        Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
+            new Object[]{artifactInfo, isArtifactMetadataUpdate});
+        assertArrayEquals(payload, result.left().value());
+    }
+
+
+    @Test
+    public void testGivenInValidVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
+        final int expectedStatus = 100;
+        when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_YAML), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
+        final byte[] payload = "invalidYaml".getBytes();
+        ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
+
+        final boolean isArtifactMetadataUpdate = false;
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+        testSubject.setComponentsUtils(componentsUtils);
+
+        Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
+            new Object[]{artifactInfo, isArtifactMetadataUpdate});
+
+        int status = result.right().value().getStatus();
+        assertEquals(expectedStatus, status);
+    }
+
+    @Test
+    public void testGivenEmptyVesEventsArtifactPayload_WhenHandlePayload_ThenResultIsMissingData() {
+        final int expectedStatus = 101;
+        when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_DATA), any(String.class))).thenReturn(new ResponseFormat(expectedStatus));
+        final byte[] payload = "".getBytes();
+        ArtifactDefinition artifactInfo = createArtifactInfo(payload, "ves_events_file.yaml", ArtifactTypeEnum.VES_EVENTS);
+
+        final boolean isArtifactMetadataUpdate = false;
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+        testSubject.setComponentsUtils(componentsUtils);
+
+        Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
+            new Object[]{artifactInfo, isArtifactMetadataUpdate});
+
+        int status = result.right().value().getStatus();
+        assertEquals(expectedStatus, status);
+    }
+
+
+    @Test
+    public void testGivenValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsDecodedPayload() {
+        final byte[] payload = "heat_template_version: 1.0".getBytes();
+        ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
+
+        final boolean isArtifactMetadataUpdate = false;
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+
+        Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
+            new Object[]{artifactInfo, isArtifactMetadataUpdate});
+        assertArrayEquals(payload, result.left().value());
+    }
+
+    @Test
+    public void testGivenInValidHeatArtifactPayload_WhenHandlePayload_ThenResultIsInvalidYaml() {
+        final int expectedStatus = 1000;
+        when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_DEPLOYMENT_ARTIFACT_HEAT), any(String.class))).thenReturn(
+            new ResponseFormat(expectedStatus));
+        final byte[] payload = "validYaml: butNoHeatTemplateVersion".getBytes();
+        ArtifactDefinition artifactInfo = createArtifactInfo(payload, "heat_template.yaml", ArtifactTypeEnum.HEAT);
+
+        final boolean isArtifactMetadataUpdate = false;
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+        testSubject.setComponentsUtils(componentsUtils);
+
+        Either<byte[], ResponseFormat> result = Deencapsulation.invoke(testSubject, "handlePayload",
+            new Object[]{artifactInfo, isArtifactMetadataUpdate});
+
+        int status = result.right().value().getStatus();
+        assertEquals(expectedStatus, status);
+    }
+
+    private ArtifactDefinition createArtifactInfo(byte[] payload, String artifactName, ArtifactTypeEnum artifactType) {
+        ArtifactDefinition artifactInfo = new ArtifactDefinition();
+        artifactInfo.setArtifactName(artifactName);
+        artifactInfo.setArtifactType(artifactType.getType());
+        artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        artifactInfo.setPayload(Base64.encodeBase64(payload));
+        return artifactInfo;
+    }
+
+    @Test
+    public void testValidateUserRole() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+
+        AuditingActionEnum auditingAction = AuditingActionEnum.ADD_CATEGORY;
+        String componentId = "";
+        String artifactId = "";
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        Either<Boolean, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "validateUserRole",
+            new Object[]{user, auditingAction, componentId, artifactId, componentType,
+                operation});
+        assertNull(result);
+    }
+
+    @Test
+    public void testDetectAuditingType() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        String origMd5 = "";
+        AuditingActionEnum result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "detectAuditingType",
+            new Object[]{operation, origMd5});
+        assertNotNull(result);
+    }
+
+    @Test
+    public void testDetectNoAuditingType() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.LINK);
+        String origMd5 = "";
+        AuditingActionEnum result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "detectAuditingType",
+            new Object[]{operation, origMd5});
+        assertNull(result);
+    }
+
+    @Test
+    public void testCreateEsArtifactData() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDataDefinition artifactInfo = buildArtifactPayload();
+        byte[] artifactPayload = new byte[]{' '};
+        DAOArtifactData result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = testSubject.createEsArtifactData(artifactInfo, artifactPayload);
+        assertNotNull(result);
+    }
+
+
+    @Test
+    public void testIsArtifactMetadataUpdateTrue() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        AuditingActionEnum auditingActionEnum = AuditingActionEnum.ARTIFACT_METADATA_UPDATE;
+        boolean result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
+            new Object[]{auditingActionEnum});
+        assertThat(result).isTrue();
+    }
+
+    @Test
+    public void testIsArtifactMetadataUpdateFalse() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        AuditingActionEnum auditingActionEnum = AuditingActionEnum.ACTIVATE_SERVICE_BY_API;
+        boolean result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "isArtifactMetadataUpdate",
+            new Object[]{auditingActionEnum});
+        assertThat(result).isFalse();
+    }
+
+    @Test
+    public void testIsDeploymentArtifactTrue() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        artifactInfo.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        boolean result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[]{artifactInfo});
+        assertThat(result).isTrue();
+    }
+
+    @Test
+    public void testIsDeploymentArtifactFalse() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload(); // artifactGroupType == ArtifactGroupTypeEnum.TOSCA
+        boolean result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "isDeploymentArtifact", new Object[]{artifactInfo});
+        assertThat(result).isFalse();
+    }
+
+    @Test
+    public void testSetArtifactPlaceholderCommonFields() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String resourceId = ES_ARTIFACT_ID;
+
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+
+        // test 1
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "setArtifactPlaceholderCommonFields",
+            resourceId, user, artifactInfo);
+        assertEquals(resourceId + "." + ARTIFACT_LABEL, artifactInfo.getUniqueId());
+        assertEquals(user.getFullName(), artifactInfo.getCreatorFullName());
+    }
+
+
+    @Test
+    public void testCreateEsHeatEnvArtifactDataFromString() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactDefinition = buildArtifactPayload();
+        String payloadStr = "";
+        Either<DAOArtifactData, ResponseFormat> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "createEsHeatEnvArtifactDataFromString",
+            new Object[]{artifactDefinition, payloadStr});
+        assertThat(result.isLeft()).isTrue();
+    }
+
+    @Test
+    public void testUpdateArtifactOnGroupInstance() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ComponentTypeEnum componentType = ComponentTypeEnum.RESOURCE;
+        Component component = createResourceObject(true);
+        String instanceId = "";
+        String prevUUID = "";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        Either<ArtifactDefinition, ResponseFormat> result;
+
+        // test 1
+        testSubject = createTestSubject();
+        result = testSubject.updateArtifactOnGroupInstance(component, instanceId, prevUUID, artifactInfo, artifactInfo);
+        assertThat(result.isLeft()).isTrue();
+    }
+
+    @Test
+    public void testGenerateHeatEnvPayload() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactDefinition = buildArtifactPayload();
+        String result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = Deencapsulation.invoke(testSubject, "generateHeatEnvPayload",
+            new Object[]{artifactDefinition});
+        assertThat(result.isEmpty()).isFalse();
+    }
+
+
+    @Test
+    public void testBuildJsonForUpdateArtifact() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
+        List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
+        Map<String, Object> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = testSubject.buildJsonForUpdateArtifact(artifactInfo, artifactGroupType, updatedRequiredArtifacts);
+        assertThat(MapUtils.isNotEmpty(result)).isTrue();
+    }
+
+    @Test
+    public void testBuildJsonForUpdateArtifact_1() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String artifactId = "";
+        String artifactName = "";
+        String artifactType = "";
+        ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.DEPLOYMENT;
+        String label = "";
+        String displayName = "";
+        String description = "";
+        byte[] artifactContent = new byte[]{' '};
+        List<ArtifactTemplateInfo> updatedRequiredArtifacts = new ArrayList<>();
+        List<HeatParameterDefinition> heatParameters = new ArrayList<>();
+        Map<String, Object> result;
+
+        // test 1
+        testSubject = createTestSubject();
+        artifactId = "";
+        result = testSubject.buildJsonForUpdateArtifact(artifactId, artifactName, artifactType, artifactGroupType,
+            label, displayName, description, artifactContent, updatedRequiredArtifacts, heatParameters);
+        assertThat(MapUtils.isNotEmpty(result)).isTrue();
+    }
+
+
+    @Test
+    public void testNotReplaceCurrHeatValueWithUpdatedValue() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
+        List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
+
+        // default test
+        testSubject = createTestSubject();
+        boolean result = Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue",
+            new Object[]{currentHeatEnvParams, updatedHeatEnvParams});
+        assertThat(result).isFalse();
+    }
+
+
+    @Test
+    public void testReplaceCurrHeatValueWithUpdatedValue() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        HeatParameterDefinition hpdOrig = new HeatParameterDefinition();
+        hpdOrig.setName("param1");
+        hpdOrig.setCurrentValue("value1");
+
+        HeatParameterDefinition hpdUpd = new HeatParameterDefinition();
+        hpdUpd.setName("param1");
+        hpdUpd.setCurrentValue("value2");
+
+        List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
+        currentHeatEnvParams.add(hpdOrig);
+
+        List<HeatParameterDefinition> updatedHeatEnvParams = new ArrayList<>();
+        updatedHeatEnvParams.add(hpdUpd);
+
+        // default test
+        testSubject = createTestSubject();
+        boolean result = Deencapsulation.invoke(testSubject, "replaceCurrHeatValueWithUpdatedValue",
+            new Object[]{currentHeatEnvParams, updatedHeatEnvParams});
+        assertThat(result).isTrue();
+        assertEquals(hpdUpd.getCurrentValue(), hpdOrig.getCurrentValue());
+    }
+
+
+    @Test
+    public void testExtractArtifactDefinition() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifactDefinition = buildArtifactPayload();
+        Either<ArtifactDefinition, Operation> eitherArtifact = Either.left(artifactDefinition);
+        ArtifactDefinition result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = testSubject.extractArtifactDefinition(eitherArtifact);
+        assertNotNull(result);
+        assertEquals(artifactDefinition, result);
+    }
+
+
+    @Test
+    public void testSetHeatCurrentValuesOnHeatEnvDefaultValues() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition artifact = buildArtifactPayload();
+        ArtifactDefinition artifactInfo = new ArtifactDefinition();
+
+        HeatParameterDefinition hpdOrig = new HeatParameterDefinition();
+        hpdOrig.setName("param1");
+        hpdOrig.setCurrentValue("value1");
+        List<HeatParameterDefinition> currentHeatEnvParams = new ArrayList<>();
+        currentHeatEnvParams.add(hpdOrig);
+        artifact.setListHeatParameters(currentHeatEnvParams);
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "setHeatCurrentValuesOnHeatEnvDefaultValues",
+            artifact, artifactInfo);
+
+        assertNotEquals(artifact, artifactInfo);
+        assertEquals(1, artifact.getListHeatParameters().size());
+        assertEquals(1, artifactInfo.getListHeatParameters().size());
+
+        String hpdOrigCurrValue = artifact.getListHeatParameters().get(0).getCurrentValue();
+        String hpdNewDefaultValue = artifactInfo.getListHeatParameters().get(0).getDefaultValue();
+
+        assertEquals(hpdOrigCurrValue, hpdNewDefaultValue);
+    }
+
+    @Test
+    public void testBuildHeatEnvFileNameArtifactNameNotNull() throws Exception {
+        String heatEnvExt = "zip";
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition heatArtifact = buildArtifactPayload();
+        ArtifactDefinition heatEnvArtifact = new ArtifactDefinition();
+        Map<String, Object> placeHolderData = new HashMap<>();
+        placeHolderData.put(ARTIFACT_PLACEHOLDER_FILE_EXTENSION, heatEnvExt);
+        String artName = ARTIFACT_NAME.split("\\.")[0];
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{heatArtifact, heatEnvArtifact, placeHolderData});
+        assertThat(heatEnvArtifact.getArtifactName().startsWith(artName)).isTrue();
+        assertThat(heatEnvArtifact.getArtifactName().endsWith(heatEnvExt)).isTrue();
+    }
+
+    @Test
+    public void testBuildHeatEnvFileNameArtifactNameIsNull() throws Exception {
+        String heatEnvExt = "zip";
+        ArtifactsBusinessLogic testSubject;
+        ArtifactDefinition heatArtifact = buildArtifactPayload();
+        heatArtifact.setArtifactName(null);
+        ArtifactDefinition heatEnvArtifact = new ArtifactDefinition();
+        Map<String, Object> placeHolderData = new HashMap<>();
+        placeHolderData.put(ARTIFACT_PLACEHOLDER_FILE_EXTENSION, heatEnvExt);
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "buildHeatEnvFileName", new Object[]{heatArtifact, heatEnvArtifact, placeHolderData});
+        assertThat(heatEnvArtifact.getArtifactName().startsWith(ARTIFACT_LABEL)).isTrue();
+        assertThat(heatEnvArtifact.getArtifactName().endsWith(heatEnvExt)).isTrue();
+    }
+
+    @Test
+    public void testHandleEnvArtifactVersion() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        String existingVersion = "1.0";
+        ArtifactDefinition artifactInfo = buildArtifactPayload();
+        Map<String, String> existingEnvVersions = new HashMap<>();
+        existingEnvVersions.put(artifactInfo.getArtifactName(), existingVersion);
+
+        // test 1
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "handleEnvArtifactVersion", artifactInfo, existingEnvVersions);
+        assertEquals(existingVersion, artifactInfo.getArtifactVersion());
+    }
+
+    @Test
+    public void testHandleArtifactsRequestForInnerVfcComponent() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        List<ArtifactDefinition> artifactsToHandle = new ArrayList<>();
+        Resource component = createResourceObject(true);
+
+        List<ArtifactDefinition> vfcsNewCreatedArtifacts = new ArrayList<>();
+        ArtifactsBusinessLogic arb = getTestSubject();
+        ArtifactOperationInfo operation = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+        boolean shouldLock = false;
+        boolean inTransaction = false;
+        List<ArtifactDefinition> result;
+
+        // default test
+        testSubject = createTestSubject();
+        result = testSubject.handleArtifactsForInnerVfcComponent(artifactsToHandle, component, user,
+            vfcsNewCreatedArtifacts, operation, shouldLock, inTransaction);
+
+        assertThat(CollectionUtils.isEmpty(result)).isTrue();
+    }
+
+    @Test
+    public void testSetNodeTemplateOperation() throws Exception {
+        ArtifactsBusinessLogic testSubject;
+        NodeTemplateOperation nodeTemplateOperation = new NodeTemplateOperation();
+
+        // default test
+        testSubject = createTestSubject();
+        Deencapsulation.invoke(testSubject, "setNodeTemplateOperation", nodeTemplateOperation);
+        assertEquals(Deencapsulation.getField(testSubject, "nodeTemplateOperation"), nodeTemplateOperation);
+    }
+
+
+    @Test(expected = ComponentException.class)
+    public void validateDeploymentArtifact_invalidComponentType() {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        Component component = new Resource();
+        component.setComponentType(ComponentTypeEnum.PRODUCT);
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateDeploymentArtifact", artifactDefinition, component);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void validateDeploymentArtifact_notConfiguredArtifactType() {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        Component component = new Resource();
+        component.setComponentType(ComponentTypeEnum.RESOURCE);
+        artifactDefinition.setArtifactType("NotConfiguredType");
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateDeploymentArtifact", artifactDefinition, component);
+    }
+
+    @Test(expected = ComponentException.class)
+    public void validateDeploymentArtifact_unsupportedResourceType() {
+        final ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.ANSIBLE_PLAYBOOK.getType());
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        final Resource resourceComponent = new Resource();
+        resourceComponent.setComponentType(ComponentTypeEnum.RESOURCE);
+        resourceComponent.setResourceType(ResourceTypeEnum.ServiceProxy);
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateDeploymentArtifact", artifactDefinition, resourceComponent);
+    }
+
+    @Test
+    public void validateDeploymentArtifact_validArtifact() {
+        final ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.YANG.getType());
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
+        final Resource resourceComponent = new Resource();
+        resourceComponent.setComponentType(ComponentTypeEnum.RESOURCE);
+        resourceComponent.setResourceType(ResourceTypeEnum.VF);
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        assertThatCode(() -> {
+            Deencapsulation
+                .invoke(artifactsBusinessLogic, "validateDeploymentArtifact", artifactDefinition, resourceComponent);
+        }).doesNotThrowAnyException();
+
+    }
+
+    @Test
+    public void validateHeatArtifact_validArtifact() {
+        final ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.HEAT.getType());
+        artifactDefinition.setTimeout(1);
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        assertThatCode(() -> {
+            Deencapsulation
+                .invoke(artifactsBusinessLogic, "validateHeatArtifact", new Resource(), "componentId", artifactDefinition);
+        }).doesNotThrowAnyException();
+    }
+
+    @Test
+    public void validateInputForResourceInstance() {
+        final String artifactId = "artifactId";
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setUniqueId(artifactId);
+        artifactDefinition.setArtifactName(ARTIFACT_NAME);
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.SNMP_POLL.getType());
+        artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
+        artifactDefinition.setEsId(ES_ARTIFACT_ID);
+        artifactDefinition.setPayload(PAYLOAD);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL);
+        artifactDefinition.setDescription("artifact description");
+        artifactDefinition.setServiceApi(true);
+        artifactDefinition.setApiUrl("dumbUrl");
+
+        final User user = new User();
+        user.setUserId("userId");
+        user.setRole(Role.ADMIN.name());
+
+        final String parentId = "parentId";
+        final Service service = new Service();
+        service.setComponentType(ComponentTypeEnum.SERVICE);
+        service.setUniqueId(parentId);
+        service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
+        service.setLastUpdaterUserId(user.getUserId());
+
+        final ArtifactOperationInfo operationInfo =
+            new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+
+        final String componentId = "componentId";
+        final ComponentInstance componentInstance = new ComponentInstance();
+        componentInstance.setUniqueId(componentId);
+        componentInstance.setComponentUid(componentId);
+        service.setComponentInstances(Collections.singletonList(componentInstance));
+
+        final Resource resource = new Resource();
+        when(toscaOperationFacade.getToscaFullElement(componentId)).thenReturn(Either.left(resource));
+        when(artifactToscaOperation.getAllInstanceArtifacts(parentId, componentId)).thenReturn(Either.left(new HashMap<>()));
+
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
+        Object result = Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateInput", componentId, artifactDefinition, operationInfo, artifactId,
+                user, "interfaceName", ARTIFACT_LABEL, ComponentTypeEnum.RESOURCE_INSTANCE, service);
+        assertTrue(result instanceof Either<?, ?>);
+        assertTrue(((Either<?, ?>) result).isLeft());
+
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+
+        result = Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateInput", componentId, artifactDefinition, operationInfo, artifactId,
+                user, "interfaceName", ARTIFACT_LABEL, ComponentTypeEnum.RESOURCE_INSTANCE, service);
+        assertTrue(result instanceof Either<?, ?>);
+        assertTrue(((Either<?, ?>) result).isLeft());
+    }
+
+    @Test
+    public void validateInputForResourceInstanceDeploymentArtifact() {
+        final String artifactId = "artifactId";
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setUniqueId(artifactId);
+        artifactDefinition.setArtifactName(ARTIFACT_NAME);
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.SNMP_POLL.getType());
+        artifactDefinition.setArtifactLabel(ARTIFACT_LABEL);
+        artifactDefinition.setEsId(ES_ARTIFACT_ID);
+        artifactDefinition.setPayload(PAYLOAD);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.DEPLOYMENT);
+        artifactDefinition.setDescription("artifact description");
+
+        final User user = new User();
+        user.setUserId("userId");
+        user.setRole(Role.ADMIN.name());
+
+        final String parentId = "parentId";
+        final Service service = new Service();
+        service.setComponentType(ComponentTypeEnum.SERVICE);
+        service.setUniqueId(parentId);
+        service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
+        service.setLastUpdaterUserId(user.getUserId());
+
+        final ArtifactOperationInfo operationInfo =
+            new ArtifactOperationInfo(false, false, ArtifactOperationEnum.CREATE);
+
+        final String componentId = "componentId";
+        final ComponentInstance componentInstance = new ComponentInstance();
+        componentInstance.setUniqueId(componentId);
+        componentInstance.setComponentUid(componentId);
+        service.setComponentInstances(Collections.singletonList(componentInstance));
+
+        final Resource resource = new Resource();
+        when(toscaOperationFacade.getToscaFullElement(componentId)).thenReturn(Either.left(resource));
+        when(artifactToscaOperation.getAllInstanceArtifacts(parentId, componentId)).thenReturn(Either.left(new HashMap<>()));
+
+        final ArtifactsBusinessLogic artifactsBusinessLogic = getTestSubject();
+        artifactsBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
+
+        final Object result = Deencapsulation
+            .invoke(artifactsBusinessLogic, "validateInput", componentId, artifactDefinition, operationInfo, artifactId,
+                user, "interfaceName", ARTIFACT_LABEL, ComponentTypeEnum.RESOURCE_INSTANCE, service);
+        assertTrue(result instanceof Either<?, ?>);
+        assertTrue(((Either<?, ?>) result).isLeft());
+    }
+
+
+    @Test
+    public void testHandleArtifactRequest() {
+
+        String componentId = "componentId";
+        ArtifactOperationInfo operationInfo = new ArtifactOperationInfo(false, false, ArtifactOperationEnum.UPDATE);
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactName("other");
+        artifactDefinition.setUniqueId("artifactId");
+        artifactDefinition.setPayload("Test".getBytes());
+        artifactDefinition.setArtifactLabel("other");
+        artifactDefinition.setDescription("Test artifact");
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.OTHER.getType());
+        artifactDefinition.setArtifactUUID("artifactUId");
+        artifactDefinition.setArtifactLabel("test");
+        artifactDefinition.setArtifactDisplayName("Test");
+        artifactDefinition.setEsId("esId");
+
+        String requestMd5 = GeneralUtility.calculateMD5Base64EncodedByString("data");
+        User user = new User();
+        user.setUserId("userId");
+
+        List<ComponentInstance> componentInstanceList = new ArrayList<>();
+        List<InterfaceDefinition> interfaceDefinitionsList = new ArrayList<>();
+        Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
+        Map<String, Operation> operationsMap = new HashMap<>();
+        artifactDefinitionMap.put("sample", artifactDefinition);
+
+        ComponentInstance componentInstance = new ComponentInstance();
+        componentInstance.setUniqueId(componentId);
+        componentInstance.setDeploymentArtifacts(artifactDefinitionMap);
+        componentInstanceList.add(componentInstance);
+
+        Operation operation = new Operation();
+        operation.setUniqueId("ouuid");
+        operation.setName("operation1");
+        operation.setImplementation(artifactDefinition);
+        operationsMap.put("op1", operation);
+
+        Map<String, InterfaceDefinition> interfaceDefinitions = new HashMap<>();
+
+        InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
+        interfaceDefinition.setType("iuuid");
+        interfaceDefinition.setOperationsMap(operationsMap);
+        interfaceDefinitions.put("iuuid", interfaceDefinition);
+
+        interfaceDefinitionsList.add(interfaceDefinition);
+
+        ResourceMetadataDataDefinition resourceMetadaData = new ResourceMetadataDataDefinition();
+        resourceMetadaData.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
+        resourceMetadaData.setLastUpdaterUserId(user.getUserId());
+        Resource resource = new Resource(new ResourceMetadataDefinition(resourceMetadaData));
+        resource.setComponentInstances(componentInstanceList);
+        resource.setUniqueId(componentId);
+        resource.setInterfaces(interfaceDefinitions);
+
+        user.setRole(Role.ADMIN.name());
+
+        when(userValidations.validateUserExists(Mockito.eq("userId")))
+            .thenReturn(user);
+        when(userValidations.isSameUser(Mockito.eq("userId"), Mockito.eq("userId")))
+            .thenReturn(true);
+        when(toscaOperationFacade.getToscaFullElement(any()))
+            .thenReturn(Either.left(resource));
+        when(artifactToscaOperation.getArtifactById(any(), any(), any(), any()))
+            .thenReturn(Either.left(artifactDefinition));
+        when(artifactsResolver.findArtifactOnComponent(any(), any(ComponentTypeEnum.class), anyString()))
+            .thenReturn(artifactDefinition);
+        when(graphLockOperation.lockComponent(eq(resource.getUniqueId()), any(NodeTypeEnum.class)))
+            .thenReturn(StorageOperationStatus.OK);
+        when(artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(), anyString(), any(NodeTypeEnum.class), any(),
+            anyBoolean()))
+            .thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class))).thenReturn(CassandraOperationStatus.OK);
+        when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
+        when(interfaceOperation.updateInterfaces(any(Component.class), anyList())).thenReturn(Either.left(interfaceDefinitionsList));
+        when(artifactToscaOperation.getAllInstanceArtifacts(resource.getUniqueId(), componentId)).thenReturn(Either.left(artifactDefinitionMap));
+        when(toscaOperationFacade.generateCustomizationUUIDOnInstance(any(), any())).thenReturn(StorageOperationStatus.OK);
+
+        Either<ArtifactDefinition, Operation> result = artifactBL.handleArtifactRequest(componentId, user.getUserId(),
+            ComponentTypeEnum.RESOURCE_INSTANCE
+            , operationInfo, artifactDefinition.getUniqueId(), artifactDefinition, requestMd5, "data", "iuuid",
+            null, componentId, "resources");
+
+        assertThat(result.isLeft()).isTrue();
+        ArtifactDefinition leftValue = result.left().value();
+        assertEquals(artifactDefinition.getArtifactName(), leftValue.getArtifactName());
+    }
+
+    @Test
+    public void testGenerateToscaArtifact() {
+
+        Resource resource = new Resource();
+        resource.setComponentType(ComponentTypeEnum.RESOURCE);
+        resource.setUniqueId("resourceId");
+
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setUniqueId("artifactId");
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.TOSCA_CSAR.getType());
+        User user = new User();
+        boolean inCertificationRequest = false;
+        boolean fetchTemplatesFromDB = false;
+        boolean shouldLock = false;
+        boolean inTransaction = false;
+
+        byte[] csar = "test.csar".getBytes();
+
+        when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
+            .thenReturn(Either.left(csar));
+        when(
+            artifactToscaOperation.updateArtifactOnResource(any(ArtifactDefinition.class), any(Component.class), anyString(), any(NodeTypeEnum.class),
+                anyString(), anyBoolean()))
+            .thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.saveArtifact(any(DAOArtifactData.class)))
+            .thenReturn(CassandraOperationStatus.OK);
+
+        Either<ArtifactDefinition, Operation> result
+            = artifactBL.generateAndSaveToscaArtifact(artifactDefinition, resource, user, inCertificationRequest,
+            shouldLock, inTransaction, fetchTemplatesFromDB);
+
+        Assert.assertEquals(artifactDefinition.getUniqueId(), result.left().value().getUniqueId());
+    }
+
+    @Test
+    public void testHandleDownloadToscaModelRequest() {
+        ArtifactsBusinessLogic testSubject = getTestSubject();
+        byte[] generatedCsar = "test.csar".getBytes();
+
+        Resource resource = new Resource();
+        resource.setComponentType(ComponentTypeEnum.RESOURCE);
+
+        ArtifactDefinition csarArtifact = new ArtifactDefinition();
+        csarArtifact.setArtifactName("csarArtifact");
+        csarArtifact.setArtifactType(ArtifactTypeEnum.HEAT_ENV.getType());
+        csarArtifact.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
+
+        when(csarUtils.createCsar(any(Component.class), anyBoolean(), anyBoolean()))
+            .thenReturn(Either.left(generatedCsar));
+
+        ImmutablePair<String, byte[]> result =
+            testSubject.handleDownloadToscaModelRequest(resource, csarArtifact);
+
+        assertEquals(csarArtifact.getArtifactName(), result.getKey());
+    }
+
+    @Test
+    public void testHandleDownloadRequestById_returnsSuccessful() {
+        String componentId = "componentId";
+        String artifactId = "artifactId";
+        String parentId = "parentId";
+
+        DAOArtifactData daoArtifactData = new DAOArtifactData();
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
+        Operation operation = new Operation();
+        operation.setUniqueId("op1");
+
+        artifactDefinition.setArtifactName("test.csar");
+        artifactDefinition.setArtifactType(ComponentTypeEnum.RESOURCE.name());
+        artifactDefinition.setArtifactType(ArtifactTypeEnum.HEAT.getType());
+        artifactDefinition.setUniqueId(artifactId);
+        artifactDefinition.setArtifactGroupType(ArtifactGroupTypeEnum.TOSCA);
+
+        daoArtifactData.setDataAsArray("data".getBytes());
+
+        Resource resource = new Resource();
+        resource.setUniqueId("resourceId");
+        resource.setAbstract(false);
+
+        Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
+        Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
+        interfaceDefinitionMap.put("interDef1", interfaceDefinition);
+
+        artifactDefinitionMap.put("artifact1", artifactDefinition);
+
+        resource.setDeploymentArtifacts(artifactDefinitionMap);
+
+        User user = new User();
+        user.setUserId("userId");
+
+        when(userValidations.validateUserExists(eq(user.getUserId())))
+            .thenReturn(user);
+        when(userValidations.isSameUser(Mockito.eq("userId"), Mockito.eq("userId")))
+            .thenReturn(true);
+        when(toscaOperationFacade.getToscaFullElement(eq(componentId)))
+            .thenReturn(Either.left(resource));
+        when(artifactToscaOperation.getArtifactById(anyString(), anyString(), any(ComponentTypeEnum.class), anyString()))
+            .thenReturn(Either.left(artifactDefinition));
+        when(artifactCassandraDao.getArtifact(any()))
+            .thenReturn(Either.left(daoArtifactData));
+        when(graphLockOperation.lockComponent(any(), any())).thenReturn(StorageOperationStatus.OK);
+
+        ImmutablePair<String, byte[]> result =
+            artifactBL.handleDownloadRequestById(componentId, artifactId, user.getUserId(), ComponentTypeEnum.RESOURCE,
+                parentId, null);
+        Assert.assertEquals(artifactDefinition.getArtifactName(), result.getKey());
+    }
+
+    @Test
+    public void testHandleDownloadRequestById_givenUserIdIsNull_thenReturnsError() {
+        String componentId = "componentId";
+        String userId = null;
+        String artifactId = "artifactId";
+
+        try {
+            ImmutablePair<String, byte[]> result =
+                artifactBL.handleDownloadRequestById(componentId, artifactId, userId, ComponentTypeEnum.RESOURCE, componentId
+                    , null);
+        } catch (ComponentException e) {
+            assertEquals(e.getActionStatus(), ActionStatus.MISSING_INFORMATION);
+            return;
+        }
+        fail();
+    }
+
+    @Test
+    public void testHandleGetArtifactByType_returnsSuccessful() {
+        String parentId = "parentId";
+        String componentId = "componentId";
+        String artifactGroupType = ArtifactGroupTypeEnum.OTHER.name();
+        String userId = "userId";
+
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setArtifactName("test.csar");
+
+        Map<String, ArtifactDefinition> artifactDefinitionMap = new HashMap<>();
+        artifactDefinitionMap.put("artifact1", artifactDefinition);
+
+        Service service = new Service();
+        service.setUniqueId(componentId);
+
+        when(toscaOperationFacade.getToscaElement(eq(componentId), any(ComponentParametersView.class)))
+            .thenReturn(Either.left(service));
+        when(graphLockOperation.lockComponent(eq(componentId), any(NodeTypeEnum.class)))
+            .thenReturn(StorageOperationStatus.OK);
+        when(artifactToscaOperation.getArtifacts(any(), any(NodeTypeEnum.class), any(ArtifactGroupTypeEnum.class), any()))
+            .thenReturn(Either.left(artifactDefinitionMap));
+
+        Map<String, ArtifactDefinition> result =
+            artifactBL.handleGetArtifactsByType(ComponentTypeEnum.SERVICE.name(), parentId, ComponentTypeEnum.SERVICE,
+                componentId, artifactGroupType, userId);
+        Assert.assertEquals(artifactDefinition.getArtifactName(), result.get("artifact1").getArtifactName());
+    }
+
+    @Test
+    public void testGetDeployment_returnsSuccessful() {
+
+        Resource resource = new Resource();
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        ComponentInstance componentInstance = new ComponentInstance();
+        NodeTypeEnum parentType = NodeTypeEnum.ResourceInstance;
+        String ciId = "ciId";
+
+        artifactDefinition.setArtifactName("test.csar");
+        componentInstance.setUniqueId(ciId);
+        List<ComponentInstance> componentInstanceList = new ArrayList<>();
+        componentInstanceList.add(componentInstance);
+
+        Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
+        deploymentArtifacts.put("test.csar", artifactDefinition);
+
+        resource.setDeploymentArtifacts(deploymentArtifacts);
+        resource.setComponentInstances(componentInstanceList);
+        componentInstance.setDeploymentArtifacts(deploymentArtifacts);
+
+        List<ArtifactDefinition> result = artifactBL.getDeploymentArtifacts(resource, ciId);
+        assertThat(result.size() == 1).isTrue();
+        Assert.assertEquals(artifactDefinition.getArtifactName(), result.get(0).getArtifactName());
+    }
+
+    @Test
+    public void testHandleDelete_returnsSuccessful() {
+
+        String parentId = "parentId";
+        String artifactId = "artifactId";
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        Resource resource = new Resource();
+        User user = new User();
+
+        artifactDefinition.setArtifactName("test.csar");
+        artifactDefinition.setUniqueId(artifactId);
+        artifactDefinition.setEsId("esId");
+
+        ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
+
+        Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
+        deploymentArtifacts.put(artifactId, artifactDefinition);
+
+        resource.setUniqueId(parentId);
+        resource.setComponentType(ComponentTypeEnum.RESOURCE);
+        resource.setDeploymentArtifacts(deploymentArtifacts);
+
+        when(graphLockOperation.lockComponent(eq(parentId), any(NodeTypeEnum.class)))
+            .thenReturn(StorageOperationStatus.OK);
+        when(toscaOperationFacade.getToscaElement(eq(parentId)))
+            .thenReturn(Either.left(resource));
+        when(artifactToscaOperation.isCloneNeeded(any(), any(ArtifactDefinition.class), any(NodeTypeEnum.class)))
+            .thenReturn(Either.left(Boolean.FALSE));
+        when(artifactToscaOperation.removeArtifactOnGraph(any(ArtifactDefinition.class), any(), any(), any(NodeTypeEnum.class), anyBoolean()))
+            .thenReturn(Either.left(artifactDataDefinition));
+        when(artifactCassandraDao.deleteArtifact(any()))
+            .thenReturn(CassandraOperationStatus.OK);
+
+        Either<ArtifactDefinition, ResponseFormat> result = artifactBL.handleDelete(
+            parentId, artifactId, user, resource, true, false);
+        Assert.assertEquals(artifactDefinition.getArtifactName(), result.left().value().getArtifactName());
+    }
+
+    @Test
+    public void testDownloadRsrcArtifactByNames_givenServiceNameNull_thenReturnsError() {
+        String serviceName = null;
+        String serviceVersion = "2.0";
+        String resourceName = "resource";
+        String resourceVersion = "1.0";
+        String artifactName = "artifactName";
+
+        try {
+            artifactBL.downloadRsrcArtifactByNames(serviceName, serviceVersion, resourceName, resourceVersion, artifactName);
+        } catch (ComponentException e) {
+            assertEquals(ActionStatus.INVALID_CONTENT, e.getActionStatus());
+            return;
+        }
+        fail();
+
+    }
+
+    @Test
+    public void testDownloadRsrcArtifactByNames_returnsSuccessful() {
+
+        String serviceName = "service1";
+        String resourceName = "resource1";
+        String artifactName = "artifact1";
+        String version = "1.0";
+
+        Resource resource = new Resource();
+        resource.setName(resourceName);
+        resource.setVersion(version);
+
+        Service service = new Service();
+        service.setVersion(version);
+        service.setName(serviceName);
+
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setEsId("esId");
+
+        DAOArtifactData esArtifactData = new DAOArtifactData();
+        esArtifactData.setDataAsArray("test".getBytes());
+
+        artifactDefinition.setArtifactName(artifactName);
+        Map<String, ArtifactDefinition> artifacts = new HashMap<>();
+        artifacts.put(artifactName, artifactDefinition);
+        resource.setDeploymentArtifacts(artifacts);
+
+        when(toscaOperationFacade.getComponentByNameAndVersion(eq(ComponentTypeEnum.RESOURCE), eq(resourceName), eq(version),
+            eq(JsonParseFlagEnum.ParseMetadata)))
+            .thenReturn(Either.left(resource));
+        doReturn(Either.left(service)).when(toscaOperationFacade).getBySystemNameAndVersion(ComponentTypeEnum.SERVICE, serviceName, version);
+        when(artifactCassandraDao.getArtifact(any())).thenReturn(Either.left(esArtifactData));
+
+        byte[] result = artifactBL.downloadRsrcArtifactByNames(serviceName, version, resourceName, version, artifactName);
+        Assert.assertEquals(esArtifactData.getDataAsArray(), result);
+    }
+
+    private ArtifactsBusinessLogic getTestSubject() {
+        final ArtifactsBusinessLogic artifactsBusinessLogic = new ArtifactsBusinessLogic(artifactCassandraDao,
+            toscaExportHandler, csarUtils, lifecycleBusinessLogic,
+            userBusinessLogic, artifactsResolver, elementDao, groupOperation, groupInstanceOperation,
+            groupTypeOperation,
+            interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation, artifactTypeOperation);
+        artifactsBusinessLogic.setComponentsUtils(componentsUtils);
+        return artifactsBusinessLogic;
+    }
 }