Increase junit TCs
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / tosca / ToscaExportHandlerTest.java
index 7d604bb..ca4f569 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
 
 package org.openecomp.sdc.be.tosca;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+
 import fj.data.Either;
+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 java.util.stream.Collectors;
 import mockit.Deencapsulation;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
@@ -81,1290 +95,1336 @@ import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
 import org.openecomp.sdc.be.tosca.utils.InputConverter;
 
-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 java.util.stream.Collectors;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 public class ToscaExportHandlerTest extends BeConfDependentTest {
-       private static final String COMPONENT_PROPERTY_NAME = "prop1";
-       private static final String COMPONENT_PROPERTY_TYPE = "string";
-       private static final String COMPONENT_INPUT_NAME = "input1";
-       private static final String COMPONENT_INPUT_TYPE = "integer";
-       private static final String RESOURCE_NAME = "resource";
-       private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
-
-       @InjectMocks
-       ToscaExportHandler testSubject;
-
-       @Mock
-       ApplicationDataTypeCache dataTypeCache;
-
-       @Mock
-       ToscaOperationFacade toscaOperationFacade;
-
-       @Mock
-       CapabilityRequirementConverter capabiltyRequirementConvertor;
-
-       @Mock
-       InputConverter inputConverter;
-
-       @Mock
-       GroupExportParser groupExportParser;
-
-       @Mock
-       GroupExportParserImpl groupExportParserImpl;
-
-       @Mock
-       InterfaceLifecycleOperation interfaceLifecycleOperation;
-
-       @Before
-       public void setUpMock() throws Exception {
-               MockitoAnnotations.initMocks(this);
-       }
-
-       private Resource getNewResource() {
-               Resource resource = new Resource();
-               List<CategoryDefinition> categories = new ArrayList<>();
-               CategoryDefinition category = new CategoryDefinition();
-               List<SubCategoryDefinition> subcategories = new ArrayList<>();
-               SubCategoryDefinition subcategory = new SubCategoryDefinition();
-               List<DataTypeDefinition> dataTypes = new ArrayList<>();
-               DataTypeDefinition dataType = new DataTypeDefinition();
-               dataType.setName("dataTypeName");
-               dataType.setDerivedFromName("tosca.datatypes.Root");
-               PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
-                               .setName("property")
-                               .setType("type")
-                               .build();
-               List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
-               dataType.setPropertiesData(propDataList);
-               List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
-                               .collect(Collectors.toList());
-               dataType.setProperties(propList);
-               dataTypes.add(dataType);
-
-               subcategory.setName("name");
-               subcategories.add(subcategory);
-               category.setName("name");
-               category.setSubcategories(subcategories);
-               categories.add(category);
-
-               resource.setCategories(categories);
-               resource.setVersion("version");
-               resource.setVendorName("vendorName");
-               resource.setVendorRelease("vendorRelease");
-               resource.setResourceVendorModelNumber("resourceVendorModelNumber");
-               resource.setDataTypes(dataTypes);
-
-               return resource;
-       }
-
-       private Service getNewService() {
-               Service service = new Service();
-               List<CategoryDefinition> categories = new ArrayList<>();
-               CategoryDefinition category = new CategoryDefinition();
-               List<SubCategoryDefinition> subcategories = new ArrayList<>();
-               SubCategoryDefinition subcategory = new SubCategoryDefinition();
-
-               subcategory.setName("name");
-               subcategories.add(subcategory);
-               category.setName("name");
-               category.setSubcategories(subcategories);
-               categories.add(category);
-
-               service.setCategories(categories);
-               service.setComponentType(ComponentTypeEnum.SERVICE);
-               service.setServiceType("serviceType");
-               service.setServiceRole("serviceRole");
-               service.setEnvironmentContext("environmentContext");
-
-               return service;
-       }
-
-       @Test
-       public void testExportComponent() throws Exception {
-               Component component = getNewResource();
-               Either<ToscaRepresentation, ToscaError> result;
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
-                               .thenReturn(Either.left(Collections.emptyMap()));
-
-               // default test when component is Resource
-               result = testSubject.exportComponent(component);
-
-               component = getNewService();
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
-
-               // default test when component is Service
-               result = testSubject.exportComponent(component);
-       }
-
-       @Test
-       public void testExportComponentInterface() throws Exception {
-               Component component = getNewResource();
-               Either<ToscaRepresentation, ToscaError> result;
-
-               ((Resource) component).setInterfaces(new HashMap<>());
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
-               // default test when convertInterfaceNodeType is right
-               result = testSubject.exportComponentInterface(component, false);
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-
-               // default test when convertInterfaceNodeType is left
-               result = testSubject.exportComponentInterface(component, false);
-
-       }
-
-       @Test
-       public void testConvertInterfaceNodeTypeProperties() throws Exception {
-
-               Resource component = getNewResource();
-
-               component.setInterfaces(new HashMap<>());
-               InputDefinition input = new InputDefinition();
-               input.setName(COMPONENT_INPUT_NAME);
-               input.setType(COMPONENT_INPUT_TYPE);
-               component.setInputs(Collections.singletonList(input));
-               PropertyDefinition property = new PropertyDefinition();
-               property.setName(COMPONENT_PROPERTY_NAME);
-               property.setType(COMPONENT_PROPERTY_TYPE);
-               component.setProperties(Collections.singletonList(property));
-               component.setName(RESOURCE_NAME);
-               component.setToscaResourceName(RESOURCE_NAME);
-
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
-                       .thenReturn(Either.left(Collections.emptyMap()));
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-               // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
-               Mockito
-                       .when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
-                               Mockito.any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
-
-               Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
-                       .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
-                               new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
-               assertThat(result.isLeft(), is(true));
-               Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
-               assertThat(nodeTypeMap.size(), is(1));
-               ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
-               Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
-               // Check if inputs and properties in component are merged properly
-               assertThat(propertyMap.size(), is(2));
-               assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
-               assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
-       }
-
-       @Test
-       public void testCreateToscaRepresentation() throws Exception {
-               ToscaTemplate toscaTemplate = new ToscaTemplate("");
-               ToscaRepresentation result;
-
-               // default test
-               result = testSubject.createToscaRepresentation(toscaTemplate);
-       }
-
-       @Test
-       public void testGetDependencies() throws Exception {
-
-               Component component = new Resource();
-               Either<ToscaTemplate, ToscaError> result;
-
-               // default test
-               result = testSubject.getDependencies(component);
-       }
-
-       @Test
-       public void testConvertToscaTemplate() throws Exception {
-
-               Component component = getNewResource();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Either<ToscaTemplate, ToscaError> result;
-               List<ComponentInstance> resourceInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-
-               instance.setOriginType(OriginTypeEnum.SERVICE);
-               instance.setSourceModelUid("targetModelUid");
-               resourceInstances.add(instance);
-
-               component.setComponentInstances(resourceInstances);
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
-       }
-
-       @Ignore("need to solve problem with groupExportParser injection")
-       @Test
-       public void testConvertToscaTemplateWhenComponentContainsGroup() {
-               Component component = getNewResource();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Either<ToscaTemplate, ToscaError> result;
-               component.setComponentInstances(new ArrayList<>());
-
-               List<GroupDefinition> groups = new ArrayList<>();
-               GroupDefinition group = new GroupDefinition();
-               List<String> artifacts = new ArrayList<>();
-               artifacts.add("artifact");
-               group.setType("org.openecomp.groups.VfModule");
-               group.setArtifacts(artifacts);
-               groups.add(group);
-               component.setGroups(groups);
-
-               Map<String, String[]> substitutionMappingMap = new HashMap<>();
-               String[] array = { "value1", "value2" };
-               substitutionMappingMap.put("key", array);
-
-               Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
-                               Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
-
-               Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
-                               Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
-                               .thenReturn(Either.left(new SubstitutionMapping()));
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-
-               Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
-                               .thenReturn(new HashMap<>());
-
-               Mockito.when(groupExportParser.getGroups(component))
-                               .thenReturn(null);
-
-               // test component contains group
-               result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
-       }
-
-       @Ignore("need to solve problem with groupExportParser injection")
-       @Test
-       public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
-               Component component = getNewService();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Either<ToscaTemplate, ToscaError> result;
-               component.setComponentInstances(new ArrayList<>());
-
-               List<GroupDefinition> groups = new ArrayList<>();
-               GroupDefinition group = new GroupDefinition();
-               List<String> artifacts = new ArrayList<>();
-               artifacts.add("artifact");
-               group.setType("org.openecomp.groups.VfModule");
-               group.setArtifacts(artifacts);
-               groups.add(group);
-               component.setGroups(groups);
-
-               Map<String, String[]> substitutionMappingMap = new HashMap<>();
-               String[] array = { "value1", "value2" };
-               substitutionMappingMap.put("key", array);
-
-               Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
-                               Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
-
-               Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
-                               Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
-                               .thenReturn(Either.left(new SubstitutionMapping()));
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-
-               Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
-                               .thenReturn(new HashMap<>());
-               // test component contains group
-               result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
-       }
-
-       @Test
-       public void testConvertMetadata_1() throws Exception {
-
-               Component component = getNewResource();
-               boolean isInstance = true;
-               ComponentInstance componentInstance = new ComponentInstance();
-               componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
-               componentInstance.setSourceModelInvariant("targetModelInvariant");
-
-               ToscaMetadata result;
-
-               // default test
-
-               result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
-       }
-
-       @Test
-       public void testFillImports() throws Exception {
-
-               Component component = getNewService();
-               ToscaTemplate toscaTemplate = new ToscaTemplate("");
-               Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
-
-               ComponentInstance instance = new ComponentInstance();
-               List<ComponentInstance> resourceInstances = new ArrayList<>();
-               instance.setComponentUid("name");
-               resourceInstances.add(instance);
-               component.setComponentInstances(resourceInstances);
-               Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
-               ArtifactDefinition artifact = new ArtifactDefinition();
-               artifact.setArtifactName("name.name2");
-               toscaArtifacts.put("assettoscatemplate", artifact);
-               component.setToscaArtifacts(toscaArtifacts);
-
-               Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.any(String.class)))
-                               .thenReturn(Either.left(component));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
-       }
-
-       @Test
-       public void testCreateDependency() throws Exception {
-
-               Map<String, Component> componentCache = new HashMap<>();
-               List<Map<String, Map<String, String>>> imports = new ArrayList<>();
-               List<Triple<String, String, Component>> dependecies = new ArrayList<>();
-               ComponentInstance ci = new ComponentInstance();
-               Component component = getNewResource();
-
-               Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
-               ArtifactDefinition artifact = new ArtifactDefinition();
-               artifact.setArtifactName("name.name2");
-               toscaArtifacts.put("assettoscatemplate", artifact);
-               component.setToscaArtifacts(toscaArtifacts);
-               ci.setComponentUid("name");
-               ci.setOriginType(OriginTypeEnum.ServiceProxy);
-               ci.setSourceModelUid("modelName");
-
-               Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("name"))).thenReturn(Either.left(component));
-
-               Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("modelName")))
-                               .thenReturn(Either.left(new Service()));
-
-               // default test
-               Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
-       }
-
-       @Test
-       public void testGetInterfaceFilename() throws Exception {
-               String artifactName = "artifact.name";
-               String result;
-
-               // default test
-               result = ToscaExportHandler.getInterfaceFilename(artifactName);
-       }
-
-       @Test
-       public void testConvertNodeType() throws Exception {
-               Component component = new Resource();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
-               Either<ToscaTemplate, ToscaError> result;
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
-                               .thenReturn(Either.left(Collections.emptyMap()));
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeType",new HashMap<>(), component, toscaNode, nodeTypes);
-       }
-
-       @Test
-       public void testConvertInterfaceNodeType() throws Exception {
-               Component component = getNewResource();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
-               Either<ToscaTemplate, ToscaError> result;
-               List<InputDefinition> inputs = new ArrayList<>();
-               inputs.add(new InputDefinition());
-               component.setInputs(inputs);
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
-
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType",new HashMap<>(), component, toscaNode
-                               , nodeTypes, false);
-       }
-       @Ignore("need to fix change in injected class.")
-       @Test
-       public void testConvertReqCapAndTypeName() throws Exception {
-               Component component = new Resource();
-               ToscaTemplate toscaNode = new ToscaTemplate("");
-               Map<String, ToscaNodeType> nodeTypes = new HashMap();
-               ToscaNodeType toscaNodeType = new ToscaNodeType();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               Either<ToscaTemplate, ToscaError> result;
-
-               Mockito.when(
-                               capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class),Mockito.any(Resource.class), Mockito.any(Map.class)))
-                               .thenReturn(new HashMap<>());
-
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName",new HashMap<>(), component, toscaNode, nodeTypes,
-                               toscaNodeType, dataTypes);
-
-               component = new Service();
-
-               Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
-                               Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
-
-               // test when component is service
-               result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName", component, toscaNode, nodeTypes,
-                               toscaNodeType, dataTypes);
-       }
-
-       @Ignore
-       @Test
-       public void testConvertNodeTemplates() throws Exception {
-               Component component = getNewResource();
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
-               Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               List<ComponentInstanceInput> inputs = new ArrayList<>();
-               inputs.add(new ComponentInstanceInput());
-               componentInstancesInputs.put("key", inputs);
-               List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("node");
-               resourceInstancesRelations.add(reldef);
-               component.setComponentInstancesRelations(resourceInstancesRelations);
-
-               ComponentInstance instance = new ComponentInstance();
-               instance.setUniqueId("id");
-               instance.setComponentUid("uid");
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               List<GroupInstance> groupInstances = new ArrayList<>();
-               GroupInstance groupInst = new GroupInstance();
-               List<String> artifacts = new ArrayList<>();
-               artifacts.add("artifact");
-               groupInst.setArtifacts(artifacts);
-               groupInst.setType("type");
-               groupInstances.add(groupInst);
-               instance.setGroupInstances(groupInstances);
-               componentInstances.add(instance);
-
-               component.setComponentInstancesInputs(componentInstancesInputs);
-               component.setInvariantUUID("uuid");
-               component.setUUID("uuid");
-               component.setDescription("desc");
-
-               componentCache.put("uid", component);
-
-               componentInstancesProperties.put("id", new ArrayList<>());
-               componentInstancesInputs.put("id", new ArrayList<>());
-
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
-
-               Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
-                               Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
-                               .thenReturn(Either.left(new ToscaNodeTemplate()));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
-                               componentInstancesProperties, componentCache, dataTypes, topologyTemplate);
-       }
-
-       @Test
-       public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
-               Component component = getNewService();
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
-               Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               List<ComponentInstanceInput> inputs = new ArrayList<>();
-               inputs.add(new ComponentInstanceInput());
-               componentInstancesInputs.put("key", inputs);
-               List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("node");
-               resourceInstancesRelations.add(reldef);
-               component.setComponentInstancesRelations(resourceInstancesRelations);
-
-               ComponentInstance instance = new ComponentInstance();
-               instance.setUniqueId("id");
-               instance.setComponentUid("uid");
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               List<GroupInstance> groupInstances = new ArrayList<>();
-               GroupInstance groupInst = new GroupInstance();
-               List<String> artifacts = new ArrayList<>();
-               artifacts.add("artifact");
-               groupInst.setArtifacts(artifacts);
-               groupInst.setType("type");
-               groupInstances.add(groupInst);
-               instance.setGroupInstances(groupInstances);
-               componentInstances.add(instance);
-
-               component.setComponentInstancesInputs(componentInstancesInputs);
-               component.setInvariantUUID("uuid");
-               component.setUUID("uuid");
-               component.setDescription("desc");
-
-               Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
-               ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
-               ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
-               path.setPathElements(list);
-               forwardingPaths.put("key", path);
-
-               ((Service) component).setForwardingPaths(forwardingPaths);
-
-               componentCache.put("uid", component);
-
-               componentInstancesProperties.put("id", new ArrayList<>());
-               componentInstancesInterfaces.put("id", new ArrayList<>());
-               componentInstancesInputs.put("id", new ArrayList<>());
-
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
-
-               Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
-                               Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
-                               .thenReturn(Either.left(new ToscaNodeTemplate()));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
-                               componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
-       }
-
-       @Test
-       public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
-               Component component = getNewResource();
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
-               Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               List<ComponentInstanceInput> inputs = new ArrayList<>();
-               inputs.add(new ComponentInstanceInput());
-               componentInstancesInputs.put("key", inputs);
-               List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("node");
-               resourceInstancesRelations.add(reldef);
-               component.setComponentInstancesRelations(resourceInstancesRelations);
-
-               ComponentInstance instance = new ComponentInstance();
-               instance.setUniqueId("id");
-               instance.setComponentUid("uid");
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               componentInstances.add(instance);
-
-               component.setComponentInstancesInputs(componentInstancesInputs);
-               component.setInvariantUUID("uuid");
-               component.setUUID("uuid");
-               component.setDescription("desc");
-
-               componentCache.put("uid", component);
-
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
-
-               Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
-                               Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
-                               .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
-                               componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
-       }
-
-       @Test
-       public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
-               Component component = getNewResource();
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
-               Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               List<ComponentInstanceInput> inputs = new ArrayList<>();
-               inputs.add(new ComponentInstanceInput());
-               componentInstancesInputs.put("key", inputs);
-               List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("id");
-               resourceInstancesRelations.add(reldef);
-               component.setComponentInstancesRelations(resourceInstancesRelations);
-
-               ComponentInstance instance = new ComponentInstance();
-               instance.setUniqueId("id");
-               instance.setComponentUid("uid");
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               componentInstances.add(instance);
-
-               component.setComponentInstancesInputs(componentInstancesInputs);
-               component.setInvariantUUID("uuid");
-               component.setUUID("uuid");
-               component.setDescription("desc");
-
-               componentCache.put("uid", component);
-
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
-                               componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
-       }
-
-       @Test
-       public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
-               Component component = new Resource();
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
-               Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               List<ComponentInstanceInput> inputs = new ArrayList<>();
-               inputs.add(new ComponentInstanceInput());
-               componentInstancesInputs.put("key", inputs);
-               List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("id");
-               reldef.setToNode("node");
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
-               relationship.setRelation(new RelationshipInfo());
-               relationships.add(relationship);
-               reldef.setRelationships(relationships);
-               resourceInstancesRelations.add(reldef);
-               component.setComponentInstancesRelations(resourceInstancesRelations);
-
-               ComponentInstance instance = new ComponentInstance();
-               instance.setUniqueId("id");
-               componentInstances.add(instance);
-
-               component.setComponentInstancesInputs(componentInstancesInputs);
-               component.setComponentInstances(componentInstances);
-
-               Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
-                               Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
-                               componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
-       }
-
-       @Test
-       public void testAddComponentInstanceInputs() throws Exception {
-
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
-               ComponentInstance componentInstance = new ComponentInstance();
-               String instanceUniqueId = "id";
-               Map<String, Object> props = new HashMap<>();
-
-               List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
-               componentInstanceInputs.add(new ComponentInstanceInput());
-
-               componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
-
-               // default test
-               Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
-                                instanceUniqueId, props);
-       }
-
-       @Test
-       public void testAddPropertiesOfComponentInstance() throws Exception {
-               Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ComponentInstance componentInstance = new ComponentInstance();
-               String instanceUniqueId = "id";
-               Map<String, Object> props = new HashMap<>();
-
-               ComponentInstanceProperty cip = new ComponentInstanceProperty();
-               cip.setInstanceUniqueId("id");
-
-               List<ComponentInstanceProperty> list = new ArrayList<>();
-               list.add(cip);
-
-               componentInstancesProperties.put("id", list);
-
-               // default test
-               Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
-                                instanceUniqueId, props);
-       }
-
-       @Test
-       public void testAddPropertiesOfParentComponent() throws Exception {
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               ComponentInstance componentInstance = new ComponentInstance();
-               Component componentOfInstance = new Resource();
-               Map<String, Object> props = new HashMap<>();
-
-               List<PropertyDefinition> properties = new ArrayList<>();
-               properties.add(new PropertyDefinition());
-
-               ((Resource) componentOfInstance).setProperties(properties);
-
-               // default test
-               Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
-                               componentOfInstance, props);
-       }
-
-
-       @Test
-       public void testCreateNodeType() throws Exception {
-
-               Component component = new Resource();
-               List<String> array = new ArrayList<>();
-               array.add("value");
-               ((Resource) component).setDerivedFrom(array);
-               ToscaNodeType result;
-
-               // test when component is resource
-               result = Deencapsulation.invoke(testSubject, "createNodeType", component);
-
-               component = new Service();
-               // test when component is service
-               result = Deencapsulation.invoke(testSubject, "createNodeType", component);
-       }
-
-       @Test
-       public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
-               Component container = new Service();
-               Either<Map<String, ToscaNodeType>, ToscaError> result;
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               instance.setSourceModelUid("targetModelUid");
-               instance.setToscaComponentName("toscaComponentName");
-
-               componentInstances.add(instance);
-               container.setComponentInstances(componentInstances);
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class)))
-                               .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
-               result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
-               Assert.assertTrue(result.isRight());
-
-       }
-
-       @Test
-       public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
-               Component container = new Service();
-               Either<Map<String, ToscaNodeType>, ToscaError> result;
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               instance.setSourceModelUid("targetModelUid");
-               instance.setToscaComponentName("toscaComponentName");
-               componentInstances.add(instance);
-               container.setComponentInstances(componentInstances);
-
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class)))
-                               .thenReturn(Either.left(new Resource()));
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
-                               .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
-               result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
-               Assert.assertTrue(result.isRight());
-       }
-
-       @Test
-       public void testCreateProxyInterfaceTypesPositive() {
-               Component container = new Service();
-               Either<Map<String, ToscaNodeType>, ToscaError> result;
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               instance.setSourceModelUid("targetModelUid");
-               instance.setToscaComponentName("toscaComponentName");
-               componentInstances.add(instance);
-               container.setComponentInstances(componentInstances);
-
-               Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
-                               .thenReturn(Either.left(Collections.emptyMap()));
-
-               Component proxyResource = new Resource();
-               Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
-               proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
-               proxyResource.setInterfaces(proxyInterfaces);
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class)))
-                               .thenReturn(Either.left(proxyResource));
-
-               result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
-               Assert.assertTrue(result.isLeft());
-               Assert.assertEquals(1, result.left().value().size());
-       }
-
-       @Test
-       public void testCreateProxyNodeTypes() throws Exception {
-               Map<String, Component> componentCache = new HashMap<>();
-               Component container = new Resource();
-               Either<Map<String, ToscaNodeType>, ToscaError> result;
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               instance.setSourceModelUid("targetModelUid");
-
-               componentInstances.add(instance);
-               container.setComponentInstances(componentInstances);
-
-               Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
-                               .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
-
-               // test when getLatestByName return is right
-               result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
-
-       }
-
-       @Test
-       public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
-               Map<String, Component> componentCache = new HashMap<>();
-               Component container = new Resource();
-               Either<Map<String, ToscaNodeType>, ToscaError> result;
-               List<ComponentInstance> componentInstances = new ArrayList<>();
-               ComponentInstance instance = new ComponentInstance();
-               instance.setOriginType(OriginTypeEnum.ServiceProxy);
-               instance.setSourceModelUid("targetModelUid");
-
-               componentInstances.add(instance);
-               container.setComponentInstances(componentInstances);
-
-               Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
-
-               ComponentParametersView parameterView = new ComponentParametersView();
-               parameterView.disableAll();
-               parameterView.setIgnoreCategories(false);
-
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class)))
-                               .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-
-               // test when getLatestByName is left
-               result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
-       }
-
-       @Test
-       public void testCreateProxyNodeType() throws Exception {
-               Map<String, Component> componentCache = new HashMap<>();
-               Component origComponent = new Resource();
-               Component proxyComponent = new Resource();
-               ComponentInstance instance = new ComponentInstance();
-               ToscaNodeType result;
-
-               Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
-                               proxyComponent, instance);
-       }
-
-       @Test
-       public void testConvertComponentInstanceRequirements() throws Exception {
-               Component component = new Resource();
-               ComponentInstance componentInstance = new ComponentInstance();
-               List<RequirementCapabilityRelDef> relations = new ArrayList<>();
-               ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
-               Component originComponent = new Resource();
-               Map<String, Component> componentCache = new HashMap<>();
-               Either<ToscaNodeTemplate, ToscaError> result;
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
-                               componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
-
-               RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
-               reldef.setFromNode("name");
-               reldef.setToNode("name1");
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
-               cap.setRelation(new RelationshipInfo());
-               relationships.add(cap);
-               reldef.setRelationships(relationships);
-               relations.add(reldef);
-               componentInstance.setUniqueId("name");
-
-               List<ComponentInstance> instances = new ArrayList<>();
-               instances.add(componentInstance);
-               component.setComponentInstances(instances);
-
-               // test when filteredRElations ins't empty
-               result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
-                               componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
-       }
-
-       @Test
-       public void testAddRequirement() throws Exception {
-               ComponentInstance fromInstance = new ComponentInstance();
-               Component fromOriginComponent = new Resource();
-               List<ComponentInstance> instancesList = new ArrayList<>();
-               RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
-               cap.setRequirement(new RequirementDataDefinition());
-               RelationshipInfo relation = new RelationshipInfo();
-               relation.setRequirementUid("Uid");
-               relation.setRequirement("requirment");
-               relation.setCapability("cap");
-               relation.setCapabilityOwnerId("id1");
-               cap.setRelation(relation);
-               relationships.add(cap);
-               rel.setRelationships(relationships);
-               rel.setToNode("name");
-               fromInstance.setUniqueId("name");
-               fromInstance.setComponentUid("string");
-               instancesList.add(fromInstance);
-               Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
-               fromOriginComponent.setRequirements(requirements);
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
-                               rel, toscaRequirements, componentCache);
-
-       }
-
-       @Test
-       public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
-
-               ComponentInstance fromInstance = new ComponentInstance();
-               Component fromOriginComponent = new Resource();
-               List<ComponentInstance> instancesList = new ArrayList<>();
-               RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
-               cap.setRequirement(new RequirementDataDefinition());
-               RelationshipInfo relation = new RelationshipInfo();
-               relation.setRequirementUid("Uid");
-               relation.setRequirement("requirment");
-               relation.setCapability("cap");
-               relation.setCapabilityOwnerId("id1");
-               cap.setRelation(relation);
-               relationships.add(cap);
-               rel.setRelationships(relationships);
-               rel.setToNode("name");
-               fromInstance.setUniqueId("name");
-               fromInstance.setComponentUid("string");
-               instancesList.add(fromInstance);
-               Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
-
-               List<RequirementDefinition> defs = new ArrayList<>();
-               RequirementDefinition def = new RequirementDefinition();
-               def.setName("requirment");
-               def.setCapability("cap");
-               defs.add(def);
-               requirements.put("key", defs);
-               fromOriginComponent.setRequirements(requirements);
-
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class)))
-                               .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
-                               rel, toscaRequirements, componentCache);
-       }
-
-       @Test
-       public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
-               ComponentInstance fromInstance = new ComponentInstance();
-               Component fromOriginComponent = new Resource();
-               List<ComponentInstance> instancesList = new ArrayList<>();
-               RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
-               cap.setRequirement(new RequirementDataDefinition());
-               RelationshipInfo relation = new RelationshipInfo();
-               relation.setRequirementUid("Uid");
-               relation.setRequirement("requirment");
-               relation.setCapability("cap");
-               relation.setCapabilityOwnerId("id1");
-               cap.setRelation(relation);
-               relationships.add(cap);
-               rel.setRelationships(relationships);
-               rel.setToNode("name");
-               fromInstance.setUniqueId("name");
-               fromInstance.setComponentUid("string");
-               instancesList.add(fromInstance);
-               Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
-
-               List<RequirementDefinition> defs = new ArrayList<>();
-               RequirementDefinition def = new RequirementDefinition();
-               def.setName("requirment");
-               def.setCapability("cap");
-               defs.add(def);
-               requirements.put("key", defs);
-               fromOriginComponent.setRequirements(requirements);
-
-               Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
-               List<CapabilityDefinition> caps = new ArrayList<>();
-               CapabilityDefinition capdef = new CapabilityDefinition();
-               capdef.setOwnerId("id");
-               capdef.setName("name");
-               capdef.setType("type");
-               caps.add(capdef);
-               capabilities.put("cap", caps);
-
-               fromOriginComponent.setCapabilities(capabilities);
-
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
-                               rel, toscaRequirements, componentCache);
-       }
-       @Ignore("need to fix change in injected class.")
-       @Test
-       public void testAddRequirmentsWithBuildAndAddRequirements() {
-               ComponentInstance fromInstance = new ComponentInstance();
-               Component fromOriginComponent = new Resource();
-               List<ComponentInstance> instancesList = new ArrayList<>();
-               RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-
-               List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
-               CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
-               cap.setRequirement(new RequirementDataDefinition());
-               RelationshipInfo relation = new RelationshipInfo();
-               relation.setRequirementUid("Uid");
-               relation.setRequirement("requirment");
-               relation.setCapability("cap");
-               relation.setCapabilityOwnerId("id");
-               cap.setRelation(relation);
-               relationships.add(cap);
-               rel.setRelationships(relationships);
-               rel.setToNode("name");
-               fromInstance.setUniqueId("name");
-               fromInstance.setComponentUid("string");
-               instancesList.add(fromInstance);
-               Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
-
-               List<RequirementDefinition> defs = new ArrayList<>();
-               RequirementDefinition def = new RequirementDefinition();
-               def.setName("requirment");
-               def.setCapability("cap");
-               defs.add(def);
-               requirements.put("key", defs);
-               fromOriginComponent.setRequirements(requirements);
-
-               Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
-               List<CapabilityDefinition> caps = new ArrayList<>();
-               CapabilityDefinition capdef = new CapabilityDefinition();
-               capdef.setOwnerId("id");
-               capdef.setName("cap");
-               capdef.setType("type");
-               caps.add(capdef);
-               capabilities.put("cap", caps);
-               fromOriginComponent.setCapabilities(capabilities);
-
-               Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
-                               Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
-
-               Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.any(Map.class),
-                               Mockito.any(Component.class), Mockito.any(List.class), Mockito.anyString(),Mockito.anyString()))
-                               .thenReturn(Either.right(false));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
-                               rel, toscaRequirements, componentCache);
-       }
-       @Ignore("need to fix change in injected class.")
-       @Test
-       public void testBuildAndAddRequirement() throws Exception {
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Component fromOriginComponent = new Resource();
-               Component toOriginComponent = new Resource();
-               CapabilityDefinition capability = new CapabilityDefinition();
-               RequirementDefinition requirement = new RequirementDefinition();
-               RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
-               ComponentInstance toInstance = new ComponentInstance();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-               capability.setPath(new ArrayList<>());
-               reqAndRelationshipPair.setCapability("cap");
-               requirement.setPath(new ArrayList<>());
-               reqAndRelationshipPair.setRequirement("req");
-
-               Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), toOriginComponent,
-                               new ArrayList<>(),Mockito.anyString(), "cap")).thenReturn(Either.left("buildCapNameRes"));
-
-               Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), fromOriginComponent,
-                               new ArrayList<>(),Mockito.anyString(), "req")).thenReturn(Either.right(false));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
-                               toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
-       }
-
-       @Ignore("need to fix change in injected class.")
-       @Test
-       public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
-               List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
-               Component fromOriginComponent = new Resource();
-               Component toOriginComponent = new Resource();
-               CapabilityDefinition capability = new CapabilityDefinition();
-               RequirementDefinition requirement = new RequirementDefinition();
-               RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
-               ComponentInstance toInstance = new ComponentInstance();
-               Map<String, Component> componentCache = new HashMap<>();
-               boolean result;
-               capability.setPath(new ArrayList<>());
-               reqAndRelationshipPair.setCapability("cap");
-               requirement.setPath(new ArrayList<>());
-               reqAndRelationshipPair.setRequirement("req");
-
-               Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.anyMap(), Mockito.any(Resource.class),
-                               Mockito.anyList(), Mockito.anyString(),Mockito.anyString())).thenReturn(Either.left("buildCapNameRes"));
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
-                               toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
-       }
-
-       @Test
-       public void testIsRequirementBelongToRelation() throws Exception {
-
-               Component originComponent = new Resource();
-               RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
-               RequirementDefinition requirement = new RequirementDefinition();
-               String fromInstanceId = "";
-               boolean result;
-
-               requirement.setName("name");
-               reqAndRelationshipPair.setRequirement("name1");
-
-               // test return false
-               result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
-                               reqAndRelationshipPair, requirement, fromInstanceId);
-       }
-
-       @Test
-       public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
-
-               Component originComponent = new Service();
-               RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
-               RequirementDefinition requirement = new RequirementDefinition();
-               String fromInstanceId = "";
-               boolean result;
-
-               // default test return true
-               result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
-                               reqAndRelationshipPair, requirement, fromInstanceId);
-       }
-
-       @Test
-       public void testIsRequirementBelongToOwner() throws Exception {
-
-               RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
-               RequirementDefinition requirement = new RequirementDefinition();
-               String fromInstanceId = "";
-               Component originComponent = new Resource();
-               boolean result;
-
-               requirement.setOwnerId("owner1");
-               reqAndRelationshipPair.setRequirementOwnerId("owner");
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
-                               fromInstanceId, originComponent);
-       }
-
-       @Test
-       public void testIsCvfc() throws Exception {
-
-               Component component = new Resource();
-               boolean result;
-
-               component = new Service();
-
-               result = Deencapsulation.invoke(testSubject, "isCvfc", component);
-       }
-
-       @Test
-       public void testConvertCapabilities() throws Exception {
-               Component component = new Resource();
-               SubstitutionMapping substitutionMappings = new SubstitutionMapping();
-               Map<String, Component> componentCache = new HashMap<>();
-               Either<SubstitutionMapping, ToscaError> result;
-
-               Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
-                               .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
-
-               // default test return isRight
-               result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
-                               componentCache);
-       }
-       @Ignore("need to fix change in injected class.")
-       @Test
-       public void testConvertCapabilities_1() throws Exception {
-               Component component = new Resource();
-               ToscaNodeType nodeType = new ToscaNodeType();
-               Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               Either<ToscaNodeType, ToscaError> result;
-
-               Map<String, ToscaCapability> capabilities = new HashMap<>();
-               capabilities.put("key", new ToscaCapability());
-
-               Mockito.when(capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class), component, dataTypes)).thenReturn(capabilities);
-
-               // default test
-               result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, nodeType, dataTypes);
-       }
-
-        @Test
-        public void testConvertToNodeTemplateArtifacts() throws Exception {
-                Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
-                ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
-                art.setFile("test_file");
-                art.setType("test_type");
-                Map<String, ToscaTemplateArtifact> result;
-                container.put("test_art", art);
-                result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
-                Assert.assertTrue(MapUtils.isNotEmpty(result));
-                Assert.assertTrue(result.get("test_art").getFile().equals("test_file"));
-                Assert.assertTrue(result.get("test_art").getType().equals("test_type"));
-        }
+
+    private static final String COMPONENT_PROPERTY_NAME = "prop1";
+    private static final String COMPONENT_PROPERTY_TYPE = "string";
+    private static final String COMPONENT_INPUT_NAME = "input1";
+    private static final String COMPONENT_INPUT_TYPE = "integer";
+    private static final String RESOURCE_NAME = "resource";
+    private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
+
+    @InjectMocks
+    private ToscaExportHandler testSubject;
+
+    @Mock
+    private ApplicationDataTypeCache dataTypeCache;
+
+    @Mock
+    private ToscaOperationFacade toscaOperationFacade;
+
+    @Mock
+    private CapabilityRequirementConverter capabiltyRequirementConvertor;
+
+    @Mock
+    private InputConverter inputConverter;
+
+    @Mock
+    private GroupExportParser groupExportParser;
+
+    @Mock
+    private GroupExportParserImpl groupExportParserImpl;
+
+    @Mock
+    private InterfaceLifecycleOperation interfaceLifecycleOperation;
+
+    @Mock
+    private PolicyExportParser policyExportParser;
+
+    @Before
+    public void setUpMock() throws Exception {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    private Resource getNewResource() {
+        Resource resource = new Resource();
+        List<CategoryDefinition> categories = new ArrayList<>();
+        CategoryDefinition category = new CategoryDefinition();
+        List<SubCategoryDefinition> subcategories = new ArrayList<>();
+        SubCategoryDefinition subcategory = new SubCategoryDefinition();
+        List<DataTypeDefinition> dataTypes = new ArrayList<>();
+        DataTypeDefinition dataType = new DataTypeDefinition();
+        dataType.setName("dataTypeName");
+        dataType.setDerivedFromName("tosca.datatypes.Root");
+        PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
+            .setName("property")
+            .setType("type")
+            .build();
+        List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
+        dataType.setPropertiesData(propDataList);
+        List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
+            .collect(Collectors.toList());
+        dataType.setProperties(propList);
+        dataTypes.add(dataType);
+
+        subcategory.setName("name");
+        subcategories.add(subcategory);
+        category.setName("name");
+        category.setSubcategories(subcategories);
+        categories.add(category);
+
+        resource.setCategories(categories);
+        resource.setVersion("version");
+        resource.setVendorName("vendorName");
+        resource.setVendorRelease("vendorRelease");
+        resource.setResourceVendorModelNumber("resourceVendorModelNumber");
+        resource.setDataTypes(dataTypes);
+
+        return resource;
+    }
+
+    private Service getNewService() {
+        Service service = new Service();
+        List<CategoryDefinition> categories = new ArrayList<>();
+        CategoryDefinition category = new CategoryDefinition();
+        List<SubCategoryDefinition> subcategories = new ArrayList<>();
+        SubCategoryDefinition subcategory = new SubCategoryDefinition();
+
+        subcategory.setName("name");
+        subcategories.add(subcategory);
+        category.setName("name");
+        category.setSubcategories(subcategories);
+        categories.add(category);
+
+        service.setCategories(categories);
+        service.setComponentType(ComponentTypeEnum.SERVICE);
+        service.setServiceType("serviceType");
+        service.setServiceRole("serviceRole");
+        service.setEnvironmentContext("environmentContext");
+
+        return service;
+    }
+
+    @Test
+    public void testExportComponent() throws Exception {
+        Component component = getNewResource();
+        Either<ToscaRepresentation, ToscaError> result;
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+
+        // default test when component is Resource
+        result = testSubject.exportComponent(component);
+        Assert.assertNotNull(result);
+
+        component = getNewService();
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Service.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+
+        // default test when component is Service
+        result = testSubject.exportComponent(component);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testExportComponentInterface() throws Exception {
+        Component component = getNewResource();
+        Either<ToscaRepresentation, ToscaError> result;
+
+        ((Resource) component).setInterfaces(new HashMap<>());
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+        // default test when convertInterfaceNodeType is right
+        result = testSubject.exportComponentInterface(component, false);
+        Assert.assertNotNull(result);
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+
+        // default test when convertInterfaceNodeType is left
+        result = testSubject.exportComponentInterface(component, false);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertInterfaceNodeTypeProperties() throws Exception {
+
+        Resource component = getNewResource();
+
+        component.setInterfaces(new HashMap<>());
+        InputDefinition input = new InputDefinition();
+        input.setName(COMPONENT_INPUT_NAME);
+        input.setType(COMPONENT_INPUT_TYPE);
+        component.setInputs(Collections.singletonList(input));
+        PropertyDefinition property = new PropertyDefinition();
+        property.setName(COMPONENT_PROPERTY_NAME);
+        property.setType(COMPONENT_PROPERTY_TYPE);
+        component.setProperties(Collections.singletonList(property));
+        component.setName(RESOURCE_NAME);
+        component.setToscaResourceName(RESOURCE_NAME);
+
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
+                any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
+
+        Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
+            .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
+                new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
+        Assert.assertNotNull(result);
+        assertThat(result.isLeft(), is(true));
+        Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
+        assertThat(nodeTypeMap.size(), is(1));
+        ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
+        Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
+        // Check if inputs and properties in component are merged properly
+        assertThat(propertyMap.size(), is(2));
+        assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
+        assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
+    }
+
+    @Test
+    public void testCreateToscaRepresentation() throws Exception {
+        ToscaTemplate toscaTemplate = new ToscaTemplate("");
+        ToscaRepresentation result;
+
+        // default test
+        result = testSubject.createToscaRepresentation(toscaTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testGetDependencies() throws Exception {
+
+        Component component = new Resource();
+        Either<ToscaTemplate, ToscaError> result;
+
+        // default test
+        result = testSubject.getDependencies(component);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertToscaTemplate() throws Exception {
+
+        Component component = getNewResource();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Either<ToscaTemplate, ToscaError> result;
+        List<ComponentInstance> resourceInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+
+        instance.setOriginType(OriginTypeEnum.SERVICE);
+        instance.setSourceModelUid("targetModelUid");
+        resourceInstances.add(instance);
+
+        component.setComponentInstances(resourceInstances);
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.right(false));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertToscaTemplateWhenComponentContainsGroup() {
+        Component component = getNewResource();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Either<ToscaTemplate, ToscaError> result;
+        component.setComponentInstances(new ArrayList<>());
+
+        List<GroupDefinition> groups = new ArrayList<>();
+        GroupDefinition group = new GroupDefinition();
+        List<String> artifacts = new ArrayList<>();
+        artifacts.add("artifact");
+        group.setType("org.openecomp.groups.VfModule");
+        group.setArtifacts(artifacts);
+        groups.add(group);
+        component.setGroups(groups);
+
+        Map<String, String[]> substitutionMappingMap = new HashMap<>();
+        String[] array = {"value1", "value2"};
+        substitutionMappingMap.put("key", array);
+
+        Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(any(Map.class),
+            any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
+
+        Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(any(Map.class),
+            any(Component.class), any(SubstitutionMapping.class)))
+            .thenReturn(Either.left(new SubstitutionMapping()));
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+
+        Mockito.when(inputConverter.convertInputs(any(List.class), any(Map.class)))
+            .thenReturn(new HashMap<>());
+
+        Mockito.when(groupExportParser.getGroups(component))
+            .thenReturn(null);
+
+        // test component contains group
+        result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
+        Component component = getNewService();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Either<ToscaTemplate, ToscaError> result;
+        component.setComponentInstances(new ArrayList<>());
+
+        List<GroupDefinition> groups = new ArrayList<>();
+        GroupDefinition group = new GroupDefinition();
+        List<String> artifacts = new ArrayList<>();
+        artifacts.add("artifact");
+        group.setType("org.openecomp.groups.VfModule");
+        group.setArtifacts(artifacts);
+        groups.add(group);
+        component.setGroups(groups);
+
+        Map<String, String[]> substitutionMappingMap = new HashMap<>();
+        String[] array = {"value1", "value2"};
+        substitutionMappingMap.put("key", array);
+
+        Mockito
+            .when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
+            .thenReturn(Either.left(substitutionMappingMap));
+
+        Mockito.when(capabiltyRequirementConvertor
+            .convertSubstitutionMappingRequirements(anyMap(), any(Component.class), any(SubstitutionMapping.class)))
+            .thenReturn(Either.left(new SubstitutionMapping()));
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+
+        Mockito.when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
+        // test component contains group
+        result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertMetadata_1() throws Exception {
+
+        Component component = getNewResource();
+        boolean isInstance = true;
+        ComponentInstance componentInstance = new ComponentInstance();
+        componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
+        componentInstance.setSourceModelInvariant("targetModelInvariant");
+
+        ToscaMetadata result;
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testFillImports() throws Exception {
+
+        Component component = getNewService();
+        ToscaTemplate toscaTemplate = new ToscaTemplate("");
+        Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
+
+        ComponentInstance instance = new ComponentInstance();
+        List<ComponentInstance> resourceInstances = new ArrayList<>();
+        instance.setComponentUid("name");
+        resourceInstances.add(instance);
+        component.setComponentInstances(resourceInstances);
+        Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
+        ArtifactDefinition artifact = new ArtifactDefinition();
+        artifact.setArtifactName("name.name2");
+        toscaArtifacts.put("assettoscatemplate", artifact);
+        component.setToscaArtifacts(toscaArtifacts);
+
+        Mockito.when(toscaOperationFacade.getToscaFullElement(any(String.class)))
+            .thenReturn(Either.left(component));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testCreateDependency() throws Exception {
+
+        Map<String, Component> componentCache = new HashMap<>();
+        List<Map<String, Map<String, String>>> imports = new ArrayList<>();
+        List<Triple<String, String, Component>> dependecies = new ArrayList<>();
+        ComponentInstance ci = new ComponentInstance();
+        Component component = getNewResource();
+
+        Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
+        ArtifactDefinition artifact = new ArtifactDefinition();
+        artifact.setArtifactName("name.name2");
+        toscaArtifacts.put("assettoscatemplate", artifact);
+        component.setToscaArtifacts(toscaArtifacts);
+        ci.setComponentUid("name");
+        ci.setOriginType(OriginTypeEnum.ServiceProxy);
+        ci.setSourceModelUid("modelName");
+
+        Mockito.when(toscaOperationFacade.getToscaFullElement(eq("name"))).thenReturn(Either.left(component));
+
+        Mockito.when(toscaOperationFacade.getToscaFullElement(eq("modelName")))
+            .thenReturn(Either.left(new Service()));
+
+        // default test
+        Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
+    }
+
+    @Test
+    public void testGetInterfaceFilename() throws Exception {
+        String artifactName = "artifact.name";
+        String result;
+
+        // default test
+        result = ToscaExportHandler.getInterfaceFilename(artifactName);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertNodeType() throws Exception {
+        Component component = new Resource();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
+        Either<ToscaTemplate, ToscaError> result;
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+        // default test
+        result = Deencapsulation
+            .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertInterfaceNodeType() throws Exception {
+        Component component = getNewResource();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
+        Either<ToscaTemplate, ToscaError> result;
+        List<InputDefinition> inputs = new ArrayList<>();
+        inputs.add(new InputDefinition());
+        component.setInputs(inputs);
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
+            , nodeTypes, false);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertReqCapAndTypeName() throws Exception {
+        Component component = new Resource();
+        ToscaTemplate toscaNode = new ToscaTemplate("");
+        Map<String, ToscaNodeType> nodeTypes = new HashMap();
+        ToscaNodeType toscaNodeType = new ToscaNodeType();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        Either<ToscaTemplate, ToscaError> result;
+
+        Mockito.when(
+            capabiltyRequirementConvertor
+                .convertCapabilities(any(Map.class), any(Resource.class), any(Map.class)))
+            .thenReturn(new HashMap<>());
+
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+
+        // default test
+        result = Deencapsulation
+            .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
+                toscaNodeType, dataTypes);
+        Assert.assertNotNull(result);
+
+        component = new Service();
+
+        Mockito
+            .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Service.class),
+                any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
+
+        // test when component is service
+        result = Deencapsulation
+            .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
+                toscaNodeType, dataTypes);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertNodeTemplates() throws Exception {
+        Component component = getNewResource();
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
+        Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        List<ComponentInstanceInput> inputs = new ArrayList<>();
+        inputs.add(new ComponentInstanceInput());
+        componentInstancesInputs.put("key", inputs);
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("node");
+        resourceInstancesRelations.add(reldef);
+        component.setComponentInstancesRelations(resourceInstancesRelations);
+
+        ComponentInstance instance = new ComponentInstance();
+        instance.setUniqueId("id");
+        instance.setComponentUid("uid");
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        GroupInstance groupInst = new GroupInstance();
+        List<String> artifacts = new ArrayList<>();
+        artifacts.add("artifact");
+        groupInst.setArtifacts(artifacts);
+        groupInst.setType("type");
+        groupInstances.add(groupInst);
+        instance.setGroupInstances(groupInstances);
+        componentInstances.add(instance);
+
+        component.setComponentInstancesInputs(componentInstancesInputs);
+        component.setInvariantUUID("uuid");
+        component.setUUID("uuid");
+        component.setDescription("desc");
+
+        componentCache.put("uid", component);
+
+        componentInstancesProperties.put("id", new ArrayList<>());
+        componentInstancesInputs.put("id", new ArrayList<>());
+
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.left(component));
+
+        Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
+            any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
+            .thenReturn(Either.left(new ToscaNodeTemplate()));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
+            componentInstancesProperties, new HashMap<>(), componentCache, dataTypes, topologyTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
+        Component component = getNewService();
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
+        Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        List<ComponentInstanceInput> inputs = new ArrayList<>();
+        inputs.add(new ComponentInstanceInput());
+        componentInstancesInputs.put("key", inputs);
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("node");
+        resourceInstancesRelations.add(reldef);
+        component.setComponentInstancesRelations(resourceInstancesRelations);
+
+        ComponentInstance instance = new ComponentInstance();
+        instance.setUniqueId("id");
+        instance.setComponentUid("uid");
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        List<GroupInstance> groupInstances = new ArrayList<>();
+        GroupInstance groupInst = new GroupInstance();
+        List<String> artifacts = new ArrayList<>();
+        artifacts.add("artifact");
+        groupInst.setArtifacts(artifacts);
+        groupInst.setType("type");
+        groupInstances.add(groupInst);
+        instance.setGroupInstances(groupInstances);
+        componentInstances.add(instance);
+
+        component.setComponentInstancesInputs(componentInstancesInputs);
+        component.setInvariantUUID("uuid");
+        component.setUUID("uuid");
+        component.setDescription("desc");
+
+        Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
+        ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
+        ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
+        path.setPathElements(list);
+        forwardingPaths.put("key", path);
+
+        ((Service) component).setForwardingPaths(forwardingPaths);
+
+        componentCache.put("uid", component);
+
+        componentInstancesProperties.put("id", new ArrayList<>());
+        componentInstancesInterfaces.put("id", new ArrayList<>());
+        componentInstancesInputs.put("id", new ArrayList<>());
+
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.left(component));
+
+        Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
+            any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
+            .thenReturn(Either.left(new ToscaNodeTemplate()));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
+            componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
+        Component component = getNewResource();
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
+        Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        List<ComponentInstanceInput> inputs = new ArrayList<>();
+        inputs.add(new ComponentInstanceInput());
+        componentInstancesInputs.put("key", inputs);
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("node");
+        resourceInstancesRelations.add(reldef);
+        component.setComponentInstancesRelations(resourceInstancesRelations);
+
+        ComponentInstance instance = new ComponentInstance();
+        instance.setUniqueId("id");
+        instance.setComponentUid("uid");
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        componentInstances.add(instance);
+
+        component.setComponentInstancesInputs(componentInstancesInputs);
+        component.setInvariantUUID("uuid");
+        component.setUUID("uuid");
+        component.setDescription("desc");
+
+        componentCache.put("uid", component);
+
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.left(component));
+
+        Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
+            any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
+            .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
+            componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
+        Component component = getNewResource();
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
+        Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        List<ComponentInstanceInput> inputs = new ArrayList<>();
+        inputs.add(new ComponentInstanceInput());
+        componentInstancesInputs.put("key", inputs);
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("id");
+        resourceInstancesRelations.add(reldef);
+        component.setComponentInstancesRelations(resourceInstancesRelations);
+
+        ComponentInstance instance = new ComponentInstance();
+        instance.setUniqueId("id");
+        instance.setComponentUid("uid");
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        componentInstances.add(instance);
+
+        component.setComponentInstancesInputs(componentInstancesInputs);
+        component.setInvariantUUID("uuid");
+        component.setUUID("uuid");
+        component.setDescription("desc");
+
+        componentCache.put("uid", component);
+
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.right(false));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
+            componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
+        Component component = new Resource();
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
+        Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        List<ComponentInstanceInput> inputs = new ArrayList<>();
+        inputs.add(new ComponentInstanceInput());
+        componentInstancesInputs.put("key", inputs);
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("id");
+        reldef.setToNode("node");
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
+        relationship.setRelation(new RelationshipInfo());
+        relationships.add(relationship);
+        reldef.setRelationships(relationships);
+        resourceInstancesRelations.add(reldef);
+        component.setComponentInstancesRelations(resourceInstancesRelations);
+
+        ComponentInstance instance = new ComponentInstance();
+        instance.setUniqueId("id");
+        componentInstances.add(instance);
+
+        component.setComponentInstancesInputs(componentInstancesInputs);
+        component.setComponentInstances(componentInstances);
+
+        Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
+            any(ComponentInstance.class))).thenReturn(Either.left(component));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
+            componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testAddComponentInstanceInputs() throws Exception {
+
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
+        ComponentInstance componentInstance = new ComponentInstance();
+        String instanceUniqueId = "id";
+        Map<String, Object> props = new HashMap<>();
+
+        List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
+        componentInstanceInputs.add(new ComponentInstanceInput());
+
+        componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
+
+        // default test
+        Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
+            instanceUniqueId, props);
+    }
+
+    @Test
+    public void testAddPropertiesOfComponentInstance() throws Exception {
+        Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ComponentInstance componentInstance = new ComponentInstance();
+        String instanceUniqueId = "id";
+        Map<String, Object> props = new HashMap<>();
+
+        ComponentInstanceProperty cip = new ComponentInstanceProperty();
+        cip.setInstanceUniqueId("id");
+
+        List<ComponentInstanceProperty> list = new ArrayList<>();
+        list.add(cip);
+
+        componentInstancesProperties.put("id", list);
+
+        // default test
+        Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
+            instanceUniqueId, props);
+    }
+
+    @Test
+    public void testAddPropertiesOfParentComponent() throws Exception {
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        ComponentInstance componentInstance = new ComponentInstance();
+        Component componentOfInstance = new Resource();
+        Map<String, Object> props = new HashMap<>();
+
+        List<PropertyDefinition> properties = new ArrayList<>();
+        properties.add(new PropertyDefinition());
+
+        ((Resource) componentOfInstance).setProperties(properties);
+
+        // default test
+        Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
+            componentOfInstance, props);
+    }
+
+    @Test
+    public void testCreateNodeType() throws Exception {
+
+        Component component = new Resource();
+        List<String> array = new ArrayList<>();
+        array.add("value");
+        ((Resource) component).setDerivedFrom(array);
+        ToscaNodeType result;
+
+        // test when component is resource
+        result = Deencapsulation.invoke(testSubject, "createNodeType", component);
+        Assert.assertNotNull(result);
+
+        component = new Service();
+        // test when component is service
+        result = Deencapsulation.invoke(testSubject, "createNodeType", component);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
+        Component container = new Service();
+        Either<Map<String, ToscaNodeType>, ToscaError> result;
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        instance.setSourceModelUid("targetModelUid");
+        instance.setToscaComponentName("toscaComponentName");
+
+        componentInstances.add(instance);
+        container.setComponentInstances(componentInstances);
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class)))
+            .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
+        result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
+        Assert.assertTrue(result.isRight());
+    }
+
+    @Test
+    public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
+        Component container = new Service();
+        Either<Map<String, ToscaNodeType>, ToscaError> result;
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        instance.setSourceModelUid("targetModelUid");
+        instance.setToscaComponentName("toscaComponentName");
+        componentInstances.add(instance);
+        container.setComponentInstances(componentInstances);
+
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class)))
+            .thenReturn(Either.left(new Resource()));
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
+        result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
+        Assert.assertTrue(result.isRight());
+    }
+
+    @Test
+    public void testCreateProxyInterfaceTypesPositive() {
+        Component container = new Service();
+        Either<Map<String, ToscaNodeType>, ToscaError> result;
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        instance.setSourceModelUid("targetModelUid");
+        instance.setToscaComponentName("toscaComponentName");
+        componentInstances.add(instance);
+        container.setComponentInstances(componentInstances);
+
+        Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
+            .thenReturn(Either.left(Collections.emptyMap()));
+
+        Component proxyResource = new Resource();
+        Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
+        proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
+        proxyResource.setInterfaces(proxyInterfaces);
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class)))
+            .thenReturn(Either.left(proxyResource));
+
+        result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
+        Assert.assertNotNull(result);
+        Assert.assertTrue(result.isLeft());
+        Assert.assertEquals(1, result.left().value().size());
+    }
+
+    @Test
+    public void testCreateProxyNodeTypes() throws Exception {
+        Map<String, Component> componentCache = new HashMap<>();
+        Component container = new Resource();
+        Either<Map<String, ToscaNodeType>, ToscaError> result;
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        instance.setSourceModelUid("targetModelUid");
+
+        componentInstances.add(instance);
+        container.setComponentInstances(componentInstances);
+
+        Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
+            .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
+
+        // test when getLatestByName return is right
+        result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
+        Map<String, Component> componentCache = new HashMap<>();
+        Component container = new Resource();
+        Either<Map<String, ToscaNodeType>, ToscaError> result;
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        ComponentInstance instance = new ComponentInstance();
+        instance.setOriginType(OriginTypeEnum.ServiceProxy);
+        instance.setSourceModelUid("targetModelUid");
+
+        componentInstances.add(instance);
+        container.setComponentInstances(componentInstances);
+
+        Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
+
+        ComponentParametersView parameterView = new ComponentParametersView();
+        parameterView.disableAll();
+        parameterView.setIgnoreCategories(false);
+
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class)))
+            .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+
+        // test when getLatestByName is left
+        result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testCreateProxyNodeType() throws Exception {
+        Map<String, Component> componentCache = new HashMap<>();
+        Component origComponent = new Resource();
+        Component proxyComponent = new Resource();
+        ComponentInstance instance = new ComponentInstance();
+        ToscaNodeType result;
+
+        Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
+            proxyComponent, instance);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertComponentInstanceRequirements() throws Exception {
+        Component component = new Resource();
+        ComponentInstance componentInstance = new ComponentInstance();
+        List<RequirementCapabilityRelDef> relations = new ArrayList<>();
+        ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
+        Component originComponent = new Resource();
+        Map<String, Component> componentCache = new HashMap<>();
+        Either<ToscaNodeTemplate, ToscaError> result;
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
+            componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
+        Assert.assertNotNull(result);
+
+        RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
+        reldef.setFromNode("name");
+        reldef.setToNode("name1");
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
+        cap.setRelation(new RelationshipInfo());
+        relationships.add(cap);
+        reldef.setRelationships(relationships);
+        relations.add(reldef);
+        componentInstance.setUniqueId("name");
+
+        List<ComponentInstance> instances = new ArrayList<>();
+        instances.add(componentInstance);
+        component.setComponentInstances(instances);
+
+        // test when filteredRElations ins't empty
+        result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
+            componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testAddRequirement() throws Exception {
+        ComponentInstance fromInstance = new ComponentInstance();
+        Component fromOriginComponent = new Resource();
+        List<ComponentInstance> instancesList = new ArrayList<>();
+        RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
+        cap.setRequirement(new RequirementDataDefinition());
+        RelationshipInfo relation = new RelationshipInfo();
+        relation.setRequirementUid("Uid");
+        relation.setRequirement("requirment");
+        relation.setCapability("cap");
+        relation.setCapabilityOwnerId("id1");
+        cap.setRelation(relation);
+        relationships.add(cap);
+        rel.setRelationships(relationships);
+        rel.setToNode("name");
+        fromInstance.setUniqueId("name");
+        fromInstance.setComponentUid("string");
+        instancesList.add(fromInstance);
+        Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
+        fromOriginComponent.setRequirements(requirements);
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
+            rel, toscaRequirements, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
+
+        ComponentInstance fromInstance = new ComponentInstance();
+        Component fromOriginComponent = new Resource();
+        List<ComponentInstance> instancesList = new ArrayList<>();
+        RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
+        cap.setRequirement(new RequirementDataDefinition());
+        RelationshipInfo relation = new RelationshipInfo();
+        relation.setRequirementUid("Uid");
+        relation.setRequirement("requirment");
+        relation.setCapability("cap");
+        relation.setCapabilityOwnerId("id1");
+        cap.setRelation(relation);
+        relationships.add(cap);
+        rel.setRelationships(relationships);
+        rel.setToNode("name");
+        fromInstance.setUniqueId("name");
+        fromInstance.setComponentUid("string");
+        instancesList.add(fromInstance);
+        Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
+
+        List<RequirementDefinition> defs = new ArrayList<>();
+        RequirementDefinition def = new RequirementDefinition();
+        def.setName("requirment");
+        def.setCapability("cap");
+        defs.add(def);
+        requirements.put("key", defs);
+        fromOriginComponent.setRequirements(requirements);
+
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class)))
+            .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
+            rel, toscaRequirements, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
+        ComponentInstance fromInstance = new ComponentInstance();
+        Component fromOriginComponent = new Resource();
+        List<ComponentInstance> instancesList = new ArrayList<>();
+        RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
+        cap.setRequirement(new RequirementDataDefinition());
+        RelationshipInfo relation = new RelationshipInfo();
+        relation.setRequirementUid("Uid");
+        relation.setRequirement("requirment");
+        relation.setCapability("cap");
+        relation.setCapabilityOwnerId("id1");
+        cap.setRelation(relation);
+        relationships.add(cap);
+        rel.setRelationships(relationships);
+        rel.setToNode("name");
+        fromInstance.setUniqueId("name");
+        fromInstance.setComponentUid("string");
+        instancesList.add(fromInstance);
+        Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
+
+        List<RequirementDefinition> defs = new ArrayList<>();
+        RequirementDefinition def = new RequirementDefinition();
+        def.setName("requirment");
+        def.setCapability("cap");
+        defs.add(def);
+        requirements.put("key", defs);
+        fromOriginComponent.setRequirements(requirements);
+
+        Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
+        List<CapabilityDefinition> caps = new ArrayList<>();
+        CapabilityDefinition capdef = new CapabilityDefinition();
+        capdef.setOwnerId("id");
+        capdef.setName("name");
+        capdef.setType("type");
+        caps.add(capdef);
+        capabilities.put("cap", caps);
+
+        fromOriginComponent.setCapabilities(capabilities);
+
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
+            rel, toscaRequirements, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testAddRequirmentsWithBuildAndAddRequirements() {
+        ComponentInstance fromInstance = new ComponentInstance();
+        Component fromOriginComponent = new Resource();
+        List<ComponentInstance> instancesList = new ArrayList<>();
+        RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+
+        List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
+        CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
+        cap.setRequirement(new RequirementDataDefinition());
+        RelationshipInfo relation = new RelationshipInfo();
+        relation.setRequirementUid("Uid");
+        relation.setRequirement("requirment");
+        relation.setCapability("cap");
+        relation.setCapabilityOwnerId("id");
+        cap.setRelation(relation);
+        relationships.add(cap);
+        rel.setRelationships(relationships);
+        rel.setToNode("name");
+        fromInstance.setUniqueId("name");
+        fromInstance.setComponentUid("string");
+        instancesList.add(fromInstance);
+        Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
+
+        List<RequirementDefinition> defs = new ArrayList<>();
+        RequirementDefinition def = new RequirementDefinition();
+        def.setName("requirment");
+        def.setCapability("cap");
+        defs.add(def);
+        requirements.put("key", defs);
+        fromOriginComponent.setRequirements(requirements);
+
+        Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
+        List<CapabilityDefinition> caps = new ArrayList<>();
+        CapabilityDefinition capdef = new CapabilityDefinition();
+        capdef.setOwnerId("id");
+        capdef.setName("cap");
+        capdef.setPreviousName("before cap");
+        capdef.setType("type");
+        caps.add(capdef);
+        capabilities.put("cap", caps);
+        fromOriginComponent.setCapabilities(capabilities);
+
+        Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
+            any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
+
+        Mockito.when(
+            capabiltyRequirementConvertor
+                .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString()))
+            .thenReturn(Either.right(false));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
+            rel, toscaRequirements, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testBuildAndAddRequirement() throws Exception {
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Component fromOriginComponent = new Resource();
+        Component toOriginComponent = new Resource();
+        CapabilityDefinition capability = new CapabilityDefinition();
+        RequirementDefinition requirement = new RequirementDefinition();
+        RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
+        ComponentInstance toInstance = new ComponentInstance();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+        capability.setPath(new ArrayList<>());
+        capability.setPreviousName("before cap");
+        reqAndRelationshipPair.setCapability("cap");
+        requirement.setPath(new ArrayList<>());
+        requirement.setPreviousName("before req");
+        reqAndRelationshipPair.setRequirement("req");
+
+        Mockito.when(
+            capabiltyRequirementConvertor
+                .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString()))
+            .thenReturn(Either.left("buildCapNameRes"));
+
+        Mockito.when(
+            capabiltyRequirementConvertor
+                .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString()))
+            .thenReturn(Either.right(false));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
+            toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
+        List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
+        Component fromOriginComponent = new Resource();
+        Component toOriginComponent = new Resource();
+        CapabilityDefinition capability = new CapabilityDefinition();
+        RequirementDefinition requirement = new RequirementDefinition();
+        RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
+        ComponentInstance toInstance = new ComponentInstance();
+        Map<String, Component> componentCache = new HashMap<>();
+        boolean result;
+        capability.setPath(new ArrayList<>());
+        reqAndRelationshipPair.setCapability("cap");
+        requirement.setPath(new ArrayList<>());
+        reqAndRelationshipPair.setRequirement("req");
+
+        Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(any(), any(), any(), any(), any()))
+            .thenReturn(Either.left("buildCapNameRes"));
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
+            toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
+        Assert.assertNotNull(result);
+        Assert.assertTrue(result);
+    }
+
+    @Test
+    public void testIsRequirementBelongToRelation() throws Exception {
+
+        Component originComponent = new Resource();
+        RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
+        RequirementDefinition requirement = new RequirementDefinition();
+        String fromInstanceId = "";
+        boolean result;
+
+        requirement.setName("name");
+        reqAndRelationshipPair.setRequirement("name1");
+
+        // test return false
+        result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
+            reqAndRelationshipPair, requirement, fromInstanceId);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
+
+        Component originComponent = new Service();
+        RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
+        RequirementDefinition requirement = new RequirementDefinition();
+        String fromInstanceId = "";
+        boolean result;
+
+        // default test return true
+        result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
+            reqAndRelationshipPair, requirement, fromInstanceId);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testIsRequirementBelongToOwner() throws Exception {
+
+        RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
+        RequirementDefinition requirement = new RequirementDefinition();
+        String fromInstanceId = "";
+        Component originComponent = new Resource();
+        boolean result;
+
+        requirement.setOwnerId("owner1");
+        reqAndRelationshipPair.setRequirementOwnerId("owner");
+
+        // default test
+        result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
+            fromInstanceId, originComponent);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testIsCvfc() throws Exception {
+
+        Component component = new Resource();
+        boolean result;
+
+        component = new Service();
+
+        result = Deencapsulation.invoke(testSubject, "isCvfc", component);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertCapabilities() throws Exception {
+        Component component = new Resource();
+        SubstitutionMapping substitutionMappings = new SubstitutionMapping();
+        Map<String, Component> componentCache = new HashMap<>();
+        Either<SubstitutionMapping, ToscaError> result;
+
+        Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
+            .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
+
+        // default test return isRight
+        result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
+            componentCache);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertCapabilities_1() throws Exception {
+        Component component = new Resource();
+        ToscaNodeType nodeType = new ToscaNodeType();
+        Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
+        Either<ToscaNodeType, ToscaError> result;
+
+        Map<String, ToscaCapability> capabilities = new HashMap<>();
+        capabilities.put("key", new ToscaCapability());
+
+        // default test
+        result = Deencapsulation
+            .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
+    public void testConvertToNodeTemplateArtifacts() throws Exception {
+        Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
+        ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
+        art.setFile("test_file");
+        art.setType("test_type");
+        Map<String, ToscaTemplateArtifact> result;
+        container.put("test_art", art);
+        result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
+        Assert.assertNotNull(result);
+        Assert.assertTrue(MapUtils.isNotEmpty(result));
+        Assert.assertTrue(result.get("test_art").getFile().equals("test_file"));
+        Assert.assertTrue(result.get("test_art").getType().equals("test_type"));
+    }
 }