1 package org.openecomp.sdc.be.tosca;
4 import java.util.ArrayList;
5 import java.util.Arrays;
6 import java.util.Collections;
7 import java.util.HashMap;
10 import java.util.stream.Collectors;
11 import mockit.Deencapsulation;
12 import org.apache.commons.lang3.tuple.ImmutablePair;
13 import org.apache.commons.lang3.tuple.Triple;
14 import org.junit.Assert;
15 import org.junit.Before;
16 import org.junit.Ignore;
17 import org.junit.Test;
18 import org.mockito.InjectMocks;
19 import org.mockito.Mock;
20 import org.mockito.Mockito;
21 import org.mockito.MockitoAnnotations;
22 import org.openecomp.sdc.be.components.BeConfDependentTest;
23 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
24 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
25 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
26 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
27 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
28 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
29 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
30 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
31 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
32 import org.openecomp.sdc.be.model.ArtifactDefinition;
33 import org.openecomp.sdc.be.model.CapabilityDefinition;
34 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
35 import org.openecomp.sdc.be.model.Component;
36 import org.openecomp.sdc.be.model.ComponentInstance;
37 import org.openecomp.sdc.be.model.ComponentInstanceInput;
38 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
39 import org.openecomp.sdc.be.model.ComponentParametersView;
40 import org.openecomp.sdc.be.model.DataTypeDefinition;
41 import org.openecomp.sdc.be.model.GroupDefinition;
42 import org.openecomp.sdc.be.model.GroupInstance;
43 import org.openecomp.sdc.be.model.InputDefinition;
44 import org.openecomp.sdc.be.model.InterfaceDefinition;
45 import org.openecomp.sdc.be.model.PropertyDefinition;
46 import org.openecomp.sdc.be.model.RelationshipInfo;
47 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
48 import org.openecomp.sdc.be.model.RequirementDefinition;
49 import org.openecomp.sdc.be.model.Resource;
50 import org.openecomp.sdc.be.model.Service;
51 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
52 import org.openecomp.sdc.be.model.category.CategoryDefinition;
53 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
54 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
55 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
56 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
57 import org.openecomp.sdc.be.tosca.model.SubstitutionMapping;
58 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
59 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
60 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
61 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
62 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
63 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
64 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
65 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
66 import org.openecomp.sdc.be.tosca.utils.InputConverter;
67 import org.yaml.snakeyaml.Yaml;
69 import static org.junit.Assert.assertThat;
70 import static org.hamcrest.CoreMatchers.is;
72 public class ToscaExportHandlerTest extends BeConfDependentTest {
73 private static final String COMPONENT_PROPERTY_NAME = "prop1";
74 private static final String COMPONENT_PROPERTY_TYPE = "string";
75 private static final String COMPONENT_INPUT_NAME = "input1";
76 private static final String COMPONENT_INPUT_TYPE = "integer";
77 private static final String RESOURCE_NAME = "resource";
78 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
81 ToscaExportHandler testSubject;
84 ApplicationDataTypeCache dataTypeCache;
87 ToscaOperationFacade toscaOperationFacade;
90 CapabilityRequirementConverter capabiltyRequirementConvertor;
93 InputConverter inputConverter;
96 GroupExportParser groupExportParser;
99 GroupExportParserImpl groupExportParserImpl;
102 InterfaceLifecycleOperation interfaceLifecycleOperation;
105 public void setUpMock() throws Exception {
106 MockitoAnnotations.initMocks(this);
109 private Resource getNewResource() {
110 Resource resource = new Resource();
111 List<CategoryDefinition> categories = new ArrayList<>();
112 CategoryDefinition category = new CategoryDefinition();
113 List<SubCategoryDefinition> subcategories = new ArrayList<>();
114 SubCategoryDefinition subcategory = new SubCategoryDefinition();
115 List<DataTypeDefinition> dataTypes = new ArrayList<>();
116 DataTypeDefinition dataType = new DataTypeDefinition();
117 dataType.setName("dataTypeName");
118 dataType.setDerivedFromName("tosca.datatypes.Root");
119 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
123 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
124 dataType.setPropertiesData(propDataList);
125 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
126 .collect(Collectors.toList());
127 dataType.setProperties(propList);
128 dataTypes.add(dataType);
130 subcategory.setName("name");
131 subcategories.add(subcategory);
132 category.setName("name");
133 category.setSubcategories(subcategories);
134 categories.add(category);
136 resource.setCategories(categories);
137 resource.setVersion("version");
138 resource.setVendorName("vendorName");
139 resource.setVendorRelease("vendorRelease");
140 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
141 resource.setDataTypes(dataTypes);
146 private Service getNewService() {
147 Service service = new Service();
148 List<CategoryDefinition> categories = new ArrayList<>();
149 CategoryDefinition category = new CategoryDefinition();
150 List<SubCategoryDefinition> subcategories = new ArrayList<>();
151 SubCategoryDefinition subcategory = new SubCategoryDefinition();
153 subcategory.setName("name");
154 subcategories.add(subcategory);
155 category.setName("name");
156 category.setSubcategories(subcategories);
157 categories.add(category);
159 service.setCategories(categories);
160 service.setComponentType(ComponentTypeEnum.SERVICE);
161 service.setServiceType("serviceType");
162 service.setServiceRole("serviceRole");
163 service.setEnvironmentContext("environmentContext");
169 public void testExportComponent() throws Exception {
170 Component component = getNewResource();
171 Either<ToscaRepresentation, ToscaError> result;
173 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
174 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
175 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
176 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
177 .thenReturn(Either.left(Collections.emptyMap()));
179 // default test when component is Resource
180 result = testSubject.exportComponent(component);
182 component = getNewService();
183 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
184 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
185 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
187 // default test when component is Service
188 result = testSubject.exportComponent(component);
192 public void testExportComponentInterface() throws Exception {
193 Component component = getNewResource();
194 Either<ToscaRepresentation, ToscaError> result;
196 ((Resource) component).setInterfaces(new HashMap<>());
198 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(TitanOperationStatus.NOT_FOUND));
199 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
200 // default test when convertInterfaceNodeType is right
201 result = testSubject.exportComponentInterface(component, false);
203 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
204 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
205 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
207 // default test when convertInterfaceNodeType is left
208 result = testSubject.exportComponentInterface(component, false);
213 public void testConvertInterfaceNodeTypeProperties() throws Exception {
215 Resource component = getNewResource();
217 component.setInterfaces(new HashMap<>());
218 InputDefinition input = new InputDefinition();
219 input.setName(COMPONENT_INPUT_NAME);
220 input.setType(COMPONENT_INPUT_TYPE);
221 component.setInputs(Collections.singletonList(input));
222 PropertyDefinition property = new PropertyDefinition();
223 property.setName(COMPONENT_PROPERTY_NAME);
224 property.setType(COMPONENT_PROPERTY_TYPE);
225 component.setProperties(Collections.singletonList(property));
226 component.setName(RESOURCE_NAME);
227 component.setToscaResourceName(RESOURCE_NAME);
229 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
230 .thenReturn(Either.left(Collections.emptyMap()));
231 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
232 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
234 .when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
235 Mockito.any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
237 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
238 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
239 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
240 assertThat(result.isLeft(), is(true));
241 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
242 assertThat(nodeTypeMap.size(), is(1));
243 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
244 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
245 // Check if inputs and properties in component are merged properly
246 assertThat(propertyMap.size(), is(2));
247 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
248 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
252 public void testCreateToscaRepresentation() throws Exception {
253 ToscaTemplate toscaTemplate = new ToscaTemplate("");
254 ToscaRepresentation result;
257 result = testSubject.createToscaRepresentation(toscaTemplate);
261 public void testGetDependencies() throws Exception {
263 Component component = new Resource();
264 Either<ToscaTemplate, ToscaError> result;
267 result = testSubject.getDependencies(component);
271 public void testConvertToscaTemplate() throws Exception {
273 Component component = getNewResource();
274 ToscaTemplate toscaNode = new ToscaTemplate("");
275 Either<ToscaTemplate, ToscaError> result;
276 List<ComponentInstance> resourceInstances = new ArrayList<>();
277 ComponentInstance instance = new ComponentInstance();
279 instance.setOriginType(OriginTypeEnum.SERVICE);
280 instance.setSourceModelUid("targetModelUid");
281 resourceInstances.add(instance);
283 component.setComponentInstances(resourceInstances);
285 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
286 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
287 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
290 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
293 @Ignore("need to solve problem with groupExportParser injection")
295 public void testConvertToscaTemplateWhenComponentContainsGroup() {
296 Component component = getNewResource();
297 ToscaTemplate toscaNode = new ToscaTemplate("");
298 Either<ToscaTemplate, ToscaError> result;
299 component.setComponentInstances(new ArrayList<>());
301 List<GroupDefinition> groups = new ArrayList<>();
302 GroupDefinition group = new GroupDefinition();
303 List<String> artifacts = new ArrayList<>();
304 artifacts.add("artifact");
305 group.setType("org.openecomp.groups.VfModule");
306 group.setArtifacts(artifacts);
308 component.setGroups(groups);
310 Map<String, String[]> substitutionMappingMap = new HashMap<>();
311 String[] array = { "value1", "value2" };
312 substitutionMappingMap.put("key", array);
314 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
315 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
317 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
318 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
319 .thenReturn(Either.left(new SubstitutionMapping()));
321 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
323 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
324 .thenReturn(new HashMap<>());
326 Mockito.when(groupExportParser.getGroups(component))
329 // test component contains group
330 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
333 @Ignore("need to solve problem with groupExportParser injection")
335 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
336 Component component = getNewService();
337 ToscaTemplate toscaNode = new ToscaTemplate("");
338 Either<ToscaTemplate, ToscaError> result;
339 component.setComponentInstances(new ArrayList<>());
341 List<GroupDefinition> groups = new ArrayList<>();
342 GroupDefinition group = new GroupDefinition();
343 List<String> artifacts = new ArrayList<>();
344 artifacts.add("artifact");
345 group.setType("org.openecomp.groups.VfModule");
346 group.setArtifacts(artifacts);
348 component.setGroups(groups);
350 Map<String, String[]> substitutionMappingMap = new HashMap<>();
351 String[] array = { "value1", "value2" };
352 substitutionMappingMap.put("key", array);
354 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
355 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
357 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
358 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
359 .thenReturn(Either.left(new SubstitutionMapping()));
361 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
363 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
364 .thenReturn(new HashMap<>());
365 // test component contains group
366 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
370 public void testConvertMetadata_1() throws Exception {
372 Component component = getNewResource();
373 boolean isInstance = true;
374 ComponentInstance componentInstance = new ComponentInstance();
375 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
376 componentInstance.setSourceModelInvariant("targetModelInvariant");
378 ToscaMetadata result;
382 result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
386 public void testFillImports() throws Exception {
388 Component component = getNewService();
389 ToscaTemplate toscaTemplate = new ToscaTemplate("");
390 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
392 ComponentInstance instance = new ComponentInstance();
393 List<ComponentInstance> resourceInstances = new ArrayList<>();
394 instance.setComponentUid("name");
395 resourceInstances.add(instance);
396 component.setComponentInstances(resourceInstances);
397 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
398 ArtifactDefinition artifact = new ArtifactDefinition();
399 artifact.setArtifactName("name.name2");
400 toscaArtifacts.put("assettoscatemplate", artifact);
401 component.setToscaArtifacts(toscaArtifacts);
403 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.any(String.class)))
404 .thenReturn(Either.left(component));
407 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
411 public void testCreateDependency() throws Exception {
413 Map<String, Component> componentCache = new HashMap<>();
414 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
415 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
416 ComponentInstance ci = new ComponentInstance();
417 Component component = getNewResource();
419 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
420 ArtifactDefinition artifact = new ArtifactDefinition();
421 artifact.setArtifactName("name.name2");
422 toscaArtifacts.put("assettoscatemplate", artifact);
423 component.setToscaArtifacts(toscaArtifacts);
424 ci.setComponentUid("name");
425 ci.setOriginType(OriginTypeEnum.ServiceProxy);
426 ci.setSourceModelUid("modelName");
428 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("name"))).thenReturn(Either.left(component));
430 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("modelName")))
431 .thenReturn(Either.left(new Service()));
434 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
438 public void testGetInterfaceFilename() throws Exception {
439 String artifactName = "artifact.name";
443 result = ToscaExportHandler.getInterfaceFilename(artifactName);
447 public void testConvertNodeType() throws Exception {
448 Component component = new Resource();
449 ToscaTemplate toscaNode = new ToscaTemplate("");
450 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
451 Either<ToscaTemplate, ToscaError> result;
453 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(TitanOperationStatus.ALREADY_EXIST));
454 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
455 .thenReturn(Either.left(Collections.emptyMap()));
457 result = Deencapsulation.invoke(testSubject, "convertNodeType",new HashMap<>(), component, toscaNode, nodeTypes);
461 public void testConvertInterfaceNodeType() throws Exception {
462 Component component = getNewResource();
463 ToscaTemplate toscaNode = new ToscaTemplate("");
464 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
465 Either<ToscaTemplate, ToscaError> result;
466 List<InputDefinition> inputs = new ArrayList<>();
467 inputs.add(new InputDefinition());
468 component.setInputs(inputs);
470 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
471 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
473 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
474 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
477 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType",new HashMap<>(), component, toscaNode
480 @Ignore("need to fix change in injected class.")
482 public void testConvertReqCapAndTypeName() throws Exception {
483 Component component = new Resource();
484 ToscaTemplate toscaNode = new ToscaTemplate("");
485 Map<String, ToscaNodeType> nodeTypes = new HashMap();
486 ToscaNodeType toscaNodeType = new ToscaNodeType();
487 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
488 Either<ToscaTemplate, ToscaError> result;
491 capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class),Mockito.any(Resource.class), Mockito.any(Map.class)))
492 .thenReturn(new HashMap<>());
494 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
495 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
498 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName",new HashMap<>(), component, toscaNode, nodeTypes,
499 toscaNodeType, dataTypes);
501 component = new Service();
503 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
504 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
506 // test when component is service
507 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName", component, toscaNode, nodeTypes,
508 toscaNodeType, dataTypes);
513 public void testConvertNodeTemplates() throws Exception {
514 Component component = getNewResource();
515 List<ComponentInstance> componentInstances = new ArrayList<>();
516 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
517 Map<String, Component> componentCache = new HashMap<>();
518 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
519 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
520 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
521 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
522 List<ComponentInstanceInput> inputs = new ArrayList<>();
523 inputs.add(new ComponentInstanceInput());
524 componentInstancesInputs.put("key", inputs);
525 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
526 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
527 reldef.setFromNode("node");
528 resourceInstancesRelations.add(reldef);
529 component.setComponentInstancesRelations(resourceInstancesRelations);
531 ComponentInstance instance = new ComponentInstance();
532 instance.setUniqueId("id");
533 instance.setComponentUid("uid");
534 instance.setOriginType(OriginTypeEnum.ServiceProxy);
535 List<GroupInstance> groupInstances = new ArrayList<>();
536 GroupInstance groupInst = new GroupInstance();
537 List<String> artifacts = new ArrayList<>();
538 artifacts.add("artifact");
539 groupInst.setArtifacts(artifacts);
540 groupInst.setType("type");
541 groupInstances.add(groupInst);
542 instance.setGroupInstances(groupInstances);
543 componentInstances.add(instance);
545 component.setComponentInstancesInputs(componentInstancesInputs);
546 component.setInvariantUUID("uuid");
547 component.setUUID("uuid");
548 component.setDescription("desc");
550 componentCache.put("uid", component);
552 componentInstancesProperties.put("id", new ArrayList<>());
553 componentInstancesInputs.put("id", new ArrayList<>());
555 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
556 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
558 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
559 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
560 .thenReturn(Either.left(new ToscaNodeTemplate()));
563 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
564 componentInstancesProperties, componentCache, dataTypes, topologyTemplate);
568 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
569 Component component = getNewService();
570 List<ComponentInstance> componentInstances = new ArrayList<>();
571 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
572 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
573 Map<String, Component> componentCache = new HashMap<>();
574 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
575 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
576 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
577 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
578 List<ComponentInstanceInput> inputs = new ArrayList<>();
579 inputs.add(new ComponentInstanceInput());
580 componentInstancesInputs.put("key", inputs);
581 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
582 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
583 reldef.setFromNode("node");
584 resourceInstancesRelations.add(reldef);
585 component.setComponentInstancesRelations(resourceInstancesRelations);
587 ComponentInstance instance = new ComponentInstance();
588 instance.setUniqueId("id");
589 instance.setComponentUid("uid");
590 instance.setOriginType(OriginTypeEnum.ServiceProxy);
591 List<GroupInstance> groupInstances = new ArrayList<>();
592 GroupInstance groupInst = new GroupInstance();
593 List<String> artifacts = new ArrayList<>();
594 artifacts.add("artifact");
595 groupInst.setArtifacts(artifacts);
596 groupInst.setType("type");
597 groupInstances.add(groupInst);
598 instance.setGroupInstances(groupInstances);
599 componentInstances.add(instance);
601 component.setComponentInstancesInputs(componentInstancesInputs);
602 component.setInvariantUUID("uuid");
603 component.setUUID("uuid");
604 component.setDescription("desc");
606 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
607 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
608 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
609 path.setPathElements(list);
610 forwardingPaths.put("key", path);
612 ((Service) component).setForwardingPaths(forwardingPaths);
614 componentCache.put("uid", component);
616 componentInstancesProperties.put("id", new ArrayList<>());
617 componentInstancesInterfaces.put("id", new ArrayList<>());
618 componentInstancesInputs.put("id", new ArrayList<>());
620 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
621 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
623 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
624 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
625 .thenReturn(Either.left(new ToscaNodeTemplate()));
628 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
629 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
633 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
634 Component component = getNewResource();
635 List<ComponentInstance> componentInstances = new ArrayList<>();
636 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
637 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
638 Map<String, Component> componentCache = new HashMap<>();
639 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
640 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
641 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
642 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
643 List<ComponentInstanceInput> inputs = new ArrayList<>();
644 inputs.add(new ComponentInstanceInput());
645 componentInstancesInputs.put("key", inputs);
646 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
647 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
648 reldef.setFromNode("node");
649 resourceInstancesRelations.add(reldef);
650 component.setComponentInstancesRelations(resourceInstancesRelations);
652 ComponentInstance instance = new ComponentInstance();
653 instance.setUniqueId("id");
654 instance.setComponentUid("uid");
655 instance.setOriginType(OriginTypeEnum.ServiceProxy);
656 componentInstances.add(instance);
658 component.setComponentInstancesInputs(componentInstancesInputs);
659 component.setInvariantUUID("uuid");
660 component.setUUID("uuid");
661 component.setDescription("desc");
663 componentCache.put("uid", component);
665 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
666 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
668 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
669 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
670 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
673 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
674 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
678 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
679 Component component = getNewResource();
680 List<ComponentInstance> componentInstances = new ArrayList<>();
681 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
682 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
683 Map<String, Component> componentCache = new HashMap<>();
684 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
685 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
686 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
687 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
688 List<ComponentInstanceInput> inputs = new ArrayList<>();
689 inputs.add(new ComponentInstanceInput());
690 componentInstancesInputs.put("key", inputs);
691 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
692 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
693 reldef.setFromNode("id");
694 resourceInstancesRelations.add(reldef);
695 component.setComponentInstancesRelations(resourceInstancesRelations);
697 ComponentInstance instance = new ComponentInstance();
698 instance.setUniqueId("id");
699 instance.setComponentUid("uid");
700 instance.setOriginType(OriginTypeEnum.ServiceProxy);
701 componentInstances.add(instance);
703 component.setComponentInstancesInputs(componentInstancesInputs);
704 component.setInvariantUUID("uuid");
705 component.setUUID("uuid");
706 component.setDescription("desc");
708 componentCache.put("uid", component);
710 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
711 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
714 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
715 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
719 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
720 Component component = new Resource();
721 List<ComponentInstance> componentInstances = new ArrayList<>();
722 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
723 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
724 Map<String, Component> componentCache = new HashMap<>();
725 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
726 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
727 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
728 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
729 List<ComponentInstanceInput> inputs = new ArrayList<>();
730 inputs.add(new ComponentInstanceInput());
731 componentInstancesInputs.put("key", inputs);
732 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
733 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
734 reldef.setFromNode("id");
735 reldef.setToNode("node");
736 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
737 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
738 relationship.setRelation(new RelationshipInfo());
739 relationships.add(relationship);
740 reldef.setRelationships(relationships);
741 resourceInstancesRelations.add(reldef);
742 component.setComponentInstancesRelations(resourceInstancesRelations);
744 ComponentInstance instance = new ComponentInstance();
745 instance.setUniqueId("id");
746 componentInstances.add(instance);
748 component.setComponentInstancesInputs(componentInstancesInputs);
749 component.setComponentInstances(componentInstances);
751 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
752 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
755 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
756 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
760 public void testAddComponentInstanceInputs() throws Exception {
762 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
763 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
764 ComponentInstance componentInstance = new ComponentInstance();
765 String instanceUniqueId = "id";
766 Map<String, Object> props = new HashMap<>();
768 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
769 componentInstanceInputs.add(new ComponentInstanceInput());
771 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
774 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
775 instanceUniqueId, props);
779 public void testAddPropertiesOfComponentInstance() throws Exception {
780 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
781 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
782 ComponentInstance componentInstance = new ComponentInstance();
783 String instanceUniqueId = "id";
784 Map<String, Object> props = new HashMap<>();
786 ComponentInstanceProperty cip = new ComponentInstanceProperty();
787 cip.setInstanceUniqueId("id");
789 List<ComponentInstanceProperty> list = new ArrayList<>();
792 componentInstancesProperties.put("id", list);
795 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
796 instanceUniqueId, props);
800 public void testAddPropertiesOfParentComponent() throws Exception {
801 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
802 ComponentInstance componentInstance = new ComponentInstance();
803 Component componentOfInstance = new Resource();
804 Map<String, Object> props = new HashMap<>();
806 List<PropertyDefinition> properties = new ArrayList<>();
807 properties.add(new PropertyDefinition());
809 ((Resource) componentOfInstance).setProperties(properties);
812 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
813 componentOfInstance, props);
818 public void testCreateNodeType() throws Exception {
820 Component component = new Resource();
821 List<String> array = new ArrayList<>();
823 ((Resource) component).setDerivedFrom(array);
824 ToscaNodeType result;
826 // test when component is resource
827 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
829 component = new Service();
830 // test when component is service
831 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
835 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
836 Component container = new Service();
837 Either<Map<String, ToscaNodeType>, ToscaError> result;
838 List<ComponentInstance> componentInstances = new ArrayList<>();
839 ComponentInstance instance = new ComponentInstance();
840 instance.setOriginType(OriginTypeEnum.ServiceProxy);
841 instance.setSourceModelUid("targetModelUid");
842 instance.setToscaComponentName("toscaComponentName");
844 componentInstances.add(instance);
845 container.setComponentInstances(componentInstances);
846 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
847 Mockito.any(ComponentParametersView.class)))
848 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
849 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
850 Assert.assertTrue(result.isRight());
855 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
856 Component container = new Service();
857 Either<Map<String, ToscaNodeType>, ToscaError> result;
858 List<ComponentInstance> componentInstances = new ArrayList<>();
859 ComponentInstance instance = new ComponentInstance();
860 instance.setOriginType(OriginTypeEnum.ServiceProxy);
861 instance.setSourceModelUid("targetModelUid");
862 instance.setToscaComponentName("toscaComponentName");
863 componentInstances.add(instance);
864 container.setComponentInstances(componentInstances);
866 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
867 Mockito.any(ComponentParametersView.class)))
868 .thenReturn(Either.left(new Resource()));
869 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
870 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
871 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
872 Assert.assertTrue(result.isRight());
876 public void testCreateProxyInterfaceTypesPositive() {
877 Component container = new Service();
878 Either<Map<String, ToscaNodeType>, ToscaError> result;
879 List<ComponentInstance> componentInstances = new ArrayList<>();
880 ComponentInstance instance = new ComponentInstance();
881 instance.setOriginType(OriginTypeEnum.ServiceProxy);
882 instance.setSourceModelUid("targetModelUid");
883 instance.setToscaComponentName("toscaComponentName");
884 componentInstances.add(instance);
885 container.setComponentInstances(componentInstances);
887 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
888 .thenReturn(Either.left(Collections.emptyMap()));
890 Component proxyResource = new Resource();
891 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
892 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
893 proxyResource.setInterfaces(proxyInterfaces);
894 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
895 Mockito.any(ComponentParametersView.class)))
896 .thenReturn(Either.left(proxyResource));
898 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
899 Assert.assertTrue(result.isLeft());
900 Assert.assertEquals(1, result.left().value().size());
904 public void testCreateProxyNodeTypes() throws Exception {
905 Map<String, Component> componentCache = new HashMap<>();
906 Component container = new Resource();
907 Either<Map<String, ToscaNodeType>, ToscaError> result;
908 List<ComponentInstance> componentInstances = new ArrayList<>();
909 ComponentInstance instance = new ComponentInstance();
910 instance.setOriginType(OriginTypeEnum.ServiceProxy);
911 instance.setSourceModelUid("targetModelUid");
913 componentInstances.add(instance);
914 container.setComponentInstances(componentInstances);
916 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
917 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
919 // test when getLatestByName return is right
920 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
925 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
926 Map<String, Component> componentCache = new HashMap<>();
927 Component container = new Resource();
928 Either<Map<String, ToscaNodeType>, ToscaError> result;
929 List<ComponentInstance> componentInstances = new ArrayList<>();
930 ComponentInstance instance = new ComponentInstance();
931 instance.setOriginType(OriginTypeEnum.ServiceProxy);
932 instance.setSourceModelUid("targetModelUid");
934 componentInstances.add(instance);
935 container.setComponentInstances(componentInstances);
937 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
939 ComponentParametersView parameterView = new ComponentParametersView();
940 parameterView.disableAll();
941 parameterView.setIgnoreCategories(false);
943 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
944 Mockito.any(ComponentParametersView.class)))
945 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
947 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
949 // test when getLatestByName is left
950 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
954 public void testCreateProxyNodeType() throws Exception {
955 Map<String, Component> componentCache = new HashMap<>();
956 Component origComponent = new Resource();
957 Component proxyComponent = new Resource();
958 ComponentInstance instance = new ComponentInstance();
959 ToscaNodeType result;
961 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
964 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
965 proxyComponent, instance);
969 public void testConvertComponentInstanceRequirements() throws Exception {
970 Component component = new Resource();
971 ComponentInstance componentInstance = new ComponentInstance();
972 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
973 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
974 Component originComponent = new Resource();
975 Map<String, Component> componentCache = new HashMap<>();
976 Either<ToscaNodeTemplate, ToscaError> result;
979 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
980 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
982 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
983 reldef.setFromNode("name");
984 reldef.setToNode("name1");
985 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
986 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
987 cap.setRelation(new RelationshipInfo());
988 relationships.add(cap);
989 reldef.setRelationships(relationships);
990 relations.add(reldef);
991 componentInstance.setUniqueId("name");
993 List<ComponentInstance> instances = new ArrayList<>();
994 instances.add(componentInstance);
995 component.setComponentInstances(instances);
997 // test when filteredRElations ins't empty
998 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
999 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1003 public void testAddRequirement() throws Exception {
1004 ComponentInstance fromInstance = new ComponentInstance();
1005 Component fromOriginComponent = new Resource();
1006 List<ComponentInstance> instancesList = new ArrayList<>();
1007 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1008 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1009 Map<String, Component> componentCache = new HashMap<>();
1012 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1013 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1014 cap.setRequirement(new RequirementDataDefinition());
1015 RelationshipInfo relation = new RelationshipInfo();
1016 relation.setRequirementUid("Uid");
1017 relation.setRequirement("requirment");
1018 relation.setCapability("cap");
1019 relation.setCapabilityOwnerId("id1");
1020 cap.setRelation(relation);
1021 relationships.add(cap);
1022 rel.setRelationships(relationships);
1023 rel.setToNode("name");
1024 fromInstance.setUniqueId("name");
1025 fromInstance.setComponentUid("string");
1026 instancesList.add(fromInstance);
1027 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1028 fromOriginComponent.setRequirements(requirements);
1031 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1032 rel, toscaRequirements, componentCache);
1037 public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
1039 ComponentInstance fromInstance = new ComponentInstance();
1040 Component fromOriginComponent = new Resource();
1041 List<ComponentInstance> instancesList = new ArrayList<>();
1042 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1043 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1044 Map<String, Component> componentCache = new HashMap<>();
1047 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1048 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1049 cap.setRequirement(new RequirementDataDefinition());
1050 RelationshipInfo relation = new RelationshipInfo();
1051 relation.setRequirementUid("Uid");
1052 relation.setRequirement("requirment");
1053 relation.setCapability("cap");
1054 relation.setCapabilityOwnerId("id1");
1055 cap.setRelation(relation);
1056 relationships.add(cap);
1057 rel.setRelationships(relationships);
1058 rel.setToNode("name");
1059 fromInstance.setUniqueId("name");
1060 fromInstance.setComponentUid("string");
1061 instancesList.add(fromInstance);
1062 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1064 List<RequirementDefinition> defs = new ArrayList<>();
1065 RequirementDefinition def = new RequirementDefinition();
1066 def.setName("requirment");
1067 def.setCapability("cap");
1069 requirements.put("key", defs);
1070 fromOriginComponent.setRequirements(requirements);
1072 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1073 Mockito.any(ComponentParametersView.class)))
1074 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1077 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1078 rel, toscaRequirements, componentCache);
1082 public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
1083 ComponentInstance fromInstance = new ComponentInstance();
1084 Component fromOriginComponent = new Resource();
1085 List<ComponentInstance> instancesList = new ArrayList<>();
1086 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1087 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1088 Map<String, Component> componentCache = new HashMap<>();
1091 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1092 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1093 cap.setRequirement(new RequirementDataDefinition());
1094 RelationshipInfo relation = new RelationshipInfo();
1095 relation.setRequirementUid("Uid");
1096 relation.setRequirement("requirment");
1097 relation.setCapability("cap");
1098 relation.setCapabilityOwnerId("id1");
1099 cap.setRelation(relation);
1100 relationships.add(cap);
1101 rel.setRelationships(relationships);
1102 rel.setToNode("name");
1103 fromInstance.setUniqueId("name");
1104 fromInstance.setComponentUid("string");
1105 instancesList.add(fromInstance);
1106 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1108 List<RequirementDefinition> defs = new ArrayList<>();
1109 RequirementDefinition def = new RequirementDefinition();
1110 def.setName("requirment");
1111 def.setCapability("cap");
1113 requirements.put("key", defs);
1114 fromOriginComponent.setRequirements(requirements);
1116 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1117 List<CapabilityDefinition> caps = new ArrayList<>();
1118 CapabilityDefinition capdef = new CapabilityDefinition();
1119 capdef.setOwnerId("id");
1120 capdef.setName("name");
1121 capdef.setType("type");
1123 capabilities.put("cap", caps);
1125 fromOriginComponent.setCapabilities(capabilities);
1127 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1128 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1131 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1132 rel, toscaRequirements, componentCache);
1134 @Ignore("need to fix change in injected class.")
1136 public void testAddRequirmentsWithBuildAndAddRequirements() {
1137 ComponentInstance fromInstance = new ComponentInstance();
1138 Component fromOriginComponent = new Resource();
1139 List<ComponentInstance> instancesList = new ArrayList<>();
1140 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1141 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1142 Map<String, Component> componentCache = new HashMap<>();
1145 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1146 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1147 cap.setRequirement(new RequirementDataDefinition());
1148 RelationshipInfo relation = new RelationshipInfo();
1149 relation.setRequirementUid("Uid");
1150 relation.setRequirement("requirment");
1151 relation.setCapability("cap");
1152 relation.setCapabilityOwnerId("id");
1153 cap.setRelation(relation);
1154 relationships.add(cap);
1155 rel.setRelationships(relationships);
1156 rel.setToNode("name");
1157 fromInstance.setUniqueId("name");
1158 fromInstance.setComponentUid("string");
1159 instancesList.add(fromInstance);
1160 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1162 List<RequirementDefinition> defs = new ArrayList<>();
1163 RequirementDefinition def = new RequirementDefinition();
1164 def.setName("requirment");
1165 def.setCapability("cap");
1167 requirements.put("key", defs);
1168 fromOriginComponent.setRequirements(requirements);
1170 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1171 List<CapabilityDefinition> caps = new ArrayList<>();
1172 CapabilityDefinition capdef = new CapabilityDefinition();
1173 capdef.setOwnerId("id");
1174 capdef.setName("cap");
1175 capdef.setType("type");
1177 capabilities.put("cap", caps);
1178 fromOriginComponent.setCapabilities(capabilities);
1180 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1181 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1183 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.any(Map.class),
1184 Mockito.any(Component.class), Mockito.any(List.class), Mockito.anyString(),Mockito.anyString()))
1185 .thenReturn(Either.right(false));
1188 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1189 rel, toscaRequirements, componentCache);
1191 @Ignore("need to fix change in injected class.")
1193 public void testBuildAndAddRequirement() throws Exception {
1194 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1195 Component fromOriginComponent = new Resource();
1196 Component toOriginComponent = new Resource();
1197 CapabilityDefinition capability = new CapabilityDefinition();
1198 RequirementDefinition requirement = new RequirementDefinition();
1199 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1200 ComponentInstance toInstance = new ComponentInstance();
1201 Map<String, Component> componentCache = new HashMap<>();
1203 capability.setPath(new ArrayList<>());
1204 reqAndRelationshipPair.setCapability("cap");
1205 requirement.setPath(new ArrayList<>());
1206 reqAndRelationshipPair.setRequirement("req");
1208 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), toOriginComponent,
1209 new ArrayList<>(),Mockito.anyString(), "cap")).thenReturn(Either.left("buildCapNameRes"));
1211 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), fromOriginComponent,
1212 new ArrayList<>(),Mockito.anyString(), "req")).thenReturn(Either.right(false));
1215 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1216 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1219 @Ignore("need to fix change in injected class.")
1221 public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
1222 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1223 Component fromOriginComponent = new Resource();
1224 Component toOriginComponent = new Resource();
1225 CapabilityDefinition capability = new CapabilityDefinition();
1226 RequirementDefinition requirement = new RequirementDefinition();
1227 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1228 ComponentInstance toInstance = new ComponentInstance();
1229 Map<String, Component> componentCache = new HashMap<>();
1231 capability.setPath(new ArrayList<>());
1232 reqAndRelationshipPair.setCapability("cap");
1233 requirement.setPath(new ArrayList<>());
1234 reqAndRelationshipPair.setRequirement("req");
1236 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.anyMap(), Mockito.any(Resource.class),
1237 Mockito.anyList(), Mockito.anyString(),Mockito.anyString())).thenReturn(Either.left("buildCapNameRes"));
1240 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1241 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1245 public void testIsRequirementBelongToRelation() throws Exception {
1247 Component originComponent = new Resource();
1248 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1249 RequirementDefinition requirement = new RequirementDefinition();
1250 String fromInstanceId = "";
1253 requirement.setName("name");
1254 reqAndRelationshipPair.setRequirement("name1");
1256 // test return false
1257 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1258 reqAndRelationshipPair, requirement, fromInstanceId);
1262 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1264 Component originComponent = new Service();
1265 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1266 RequirementDefinition requirement = new RequirementDefinition();
1267 String fromInstanceId = "";
1270 // default test return true
1271 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1272 reqAndRelationshipPair, requirement, fromInstanceId);
1276 public void testIsRequirementBelongToOwner() throws Exception {
1278 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1279 RequirementDefinition requirement = new RequirementDefinition();
1280 String fromInstanceId = "";
1281 Component originComponent = new Resource();
1284 requirement.setOwnerId("owner1");
1285 reqAndRelationshipPair.setRequirementOwnerId("owner");
1288 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1289 fromInstanceId, originComponent);
1293 public void testIsCvfc() throws Exception {
1295 Component component = new Resource();
1298 component = new Service();
1300 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1304 public void testConvertCapabilities() throws Exception {
1305 Component component = new Resource();
1306 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1307 Map<String, Component> componentCache = new HashMap<>();
1308 Either<SubstitutionMapping, ToscaError> result;
1310 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
1311 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1313 // default test return isRight
1314 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1317 @Ignore("need to fix change in injected class.")
1319 public void testConvertCapabilities_1() throws Exception {
1320 Component component = new Resource();
1321 ToscaNodeType nodeType = new ToscaNodeType();
1322 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1323 Either<ToscaNodeType, ToscaError> result;
1325 Map<String, ToscaCapability> capabilities = new HashMap<>();
1326 capabilities.put("key", new ToscaCapability());
1328 Mockito.when(capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class), component, dataTypes)).thenReturn(capabilities);
1331 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, nodeType, dataTypes);