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.janusgraph.JanusGraphOperationStatus;
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.jsonjanusgraph.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;
68 import static org.junit.Assert.assertThat;
69 import static org.hamcrest.CoreMatchers.is;
71 public class ToscaExportHandlerTest extends BeConfDependentTest {
72 private static final String COMPONENT_PROPERTY_NAME = "prop1";
73 private static final String COMPONENT_PROPERTY_TYPE = "string";
74 private static final String COMPONENT_INPUT_NAME = "input1";
75 private static final String COMPONENT_INPUT_TYPE = "integer";
76 private static final String RESOURCE_NAME = "resource";
77 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
80 ToscaExportHandler testSubject;
83 ApplicationDataTypeCache dataTypeCache;
86 ToscaOperationFacade toscaOperationFacade;
89 CapabilityRequirementConverter capabiltyRequirementConvertor;
92 InputConverter inputConverter;
95 GroupExportParser groupExportParser;
98 GroupExportParserImpl groupExportParserImpl;
101 InterfaceLifecycleOperation interfaceLifecycleOperation;
104 public void setUpMock() throws Exception {
105 MockitoAnnotations.initMocks(this);
108 private Resource getNewResource() {
109 Resource resource = new Resource();
110 List<CategoryDefinition> categories = new ArrayList<>();
111 CategoryDefinition category = new CategoryDefinition();
112 List<SubCategoryDefinition> subcategories = new ArrayList<>();
113 SubCategoryDefinition subcategory = new SubCategoryDefinition();
114 List<DataTypeDefinition> dataTypes = new ArrayList<>();
115 DataTypeDefinition dataType = new DataTypeDefinition();
116 dataType.setName("dataTypeName");
117 dataType.setDerivedFromName("tosca.datatypes.Root");
118 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
122 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
123 dataType.setPropertiesData(propDataList);
124 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
125 .collect(Collectors.toList());
126 dataType.setProperties(propList);
127 dataTypes.add(dataType);
129 subcategory.setName("name");
130 subcategories.add(subcategory);
131 category.setName("name");
132 category.setSubcategories(subcategories);
133 categories.add(category);
135 resource.setCategories(categories);
136 resource.setVersion("version");
137 resource.setVendorName("vendorName");
138 resource.setVendorRelease("vendorRelease");
139 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
140 resource.setDataTypes(dataTypes);
145 private Service getNewService() {
146 Service service = new Service();
147 List<CategoryDefinition> categories = new ArrayList<>();
148 CategoryDefinition category = new CategoryDefinition();
149 List<SubCategoryDefinition> subcategories = new ArrayList<>();
150 SubCategoryDefinition subcategory = new SubCategoryDefinition();
152 subcategory.setName("name");
153 subcategories.add(subcategory);
154 category.setName("name");
155 category.setSubcategories(subcategories);
156 categories.add(category);
158 service.setCategories(categories);
159 service.setComponentType(ComponentTypeEnum.SERVICE);
160 service.setServiceType("serviceType");
161 service.setServiceRole("serviceRole");
162 service.setEnvironmentContext("environmentContext");
168 public void testExportComponent() throws Exception {
169 Component component = getNewResource();
170 Either<ToscaRepresentation, ToscaError> result;
172 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
173 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
174 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
175 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
176 .thenReturn(Either.left(Collections.emptyMap()));
178 // default test when component is Resource
179 result = testSubject.exportComponent(component);
181 component = getNewService();
182 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
183 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
184 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
186 // default test when component is Service
187 result = testSubject.exportComponent(component);
191 public void testExportComponentInterface() throws Exception {
192 Component component = getNewResource();
193 Either<ToscaRepresentation, ToscaError> result;
195 ((Resource) component).setInterfaces(new HashMap<>());
197 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
198 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
199 // default test when convertInterfaceNodeType is right
200 result = testSubject.exportComponentInterface(component, false);
202 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
203 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
204 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
206 // default test when convertInterfaceNodeType is left
207 result = testSubject.exportComponentInterface(component, false);
212 public void testConvertInterfaceNodeTypeProperties() throws Exception {
214 Resource component = getNewResource();
216 component.setInterfaces(new HashMap<>());
217 InputDefinition input = new InputDefinition();
218 input.setName(COMPONENT_INPUT_NAME);
219 input.setType(COMPONENT_INPUT_TYPE);
220 component.setInputs(Collections.singletonList(input));
221 PropertyDefinition property = new PropertyDefinition();
222 property.setName(COMPONENT_PROPERTY_NAME);
223 property.setType(COMPONENT_PROPERTY_TYPE);
224 component.setProperties(Collections.singletonList(property));
225 component.setName(RESOURCE_NAME);
226 component.setToscaResourceName(RESOURCE_NAME);
228 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
229 .thenReturn(Either.left(Collections.emptyMap()));
230 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
231 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
233 .when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
234 Mockito.any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
236 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
237 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
238 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
239 assertThat(result.isLeft(), is(true));
240 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
241 assertThat(nodeTypeMap.size(), is(1));
242 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
243 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
244 // Check if inputs and properties in component are merged properly
245 assertThat(propertyMap.size(), is(2));
246 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
247 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
251 public void testCreateToscaRepresentation() throws Exception {
252 ToscaTemplate toscaTemplate = new ToscaTemplate("");
253 ToscaRepresentation result;
256 result = testSubject.createToscaRepresentation(toscaTemplate);
260 public void testGetDependencies() throws Exception {
262 Component component = new Resource();
263 Either<ToscaTemplate, ToscaError> result;
266 result = testSubject.getDependencies(component);
270 public void testConvertToscaTemplate() throws Exception {
272 Component component = getNewResource();
273 ToscaTemplate toscaNode = new ToscaTemplate("");
274 Either<ToscaTemplate, ToscaError> result;
275 List<ComponentInstance> resourceInstances = new ArrayList<>();
276 ComponentInstance instance = new ComponentInstance();
278 instance.setOriginType(OriginTypeEnum.SERVICE);
279 instance.setSourceModelUid("targetModelUid");
280 resourceInstances.add(instance);
282 component.setComponentInstances(resourceInstances);
284 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
285 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
286 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
289 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
292 @Ignore("need to solve problem with groupExportParser injection")
294 public void testConvertToscaTemplateWhenComponentContainsGroup() {
295 Component component = getNewResource();
296 ToscaTemplate toscaNode = new ToscaTemplate("");
297 Either<ToscaTemplate, ToscaError> result;
298 component.setComponentInstances(new ArrayList<>());
300 List<GroupDefinition> groups = new ArrayList<>();
301 GroupDefinition group = new GroupDefinition();
302 List<String> artifacts = new ArrayList<>();
303 artifacts.add("artifact");
304 group.setType("org.openecomp.groups.VfModule");
305 group.setArtifacts(artifacts);
307 component.setGroups(groups);
309 Map<String, String[]> substitutionMappingMap = new HashMap<>();
310 String[] array = { "value1", "value2" };
311 substitutionMappingMap.put("key", array);
313 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
314 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
316 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
317 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
318 .thenReturn(Either.left(new SubstitutionMapping()));
320 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
322 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
323 .thenReturn(new HashMap<>());
325 Mockito.when(groupExportParser.getGroups(component))
328 // test component contains group
329 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
332 @Ignore("need to solve problem with groupExportParser injection")
334 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
335 Component component = getNewService();
336 ToscaTemplate toscaNode = new ToscaTemplate("");
337 Either<ToscaTemplate, ToscaError> result;
338 component.setComponentInstances(new ArrayList<>());
340 List<GroupDefinition> groups = new ArrayList<>();
341 GroupDefinition group = new GroupDefinition();
342 List<String> artifacts = new ArrayList<>();
343 artifacts.add("artifact");
344 group.setType("org.openecomp.groups.VfModule");
345 group.setArtifacts(artifacts);
347 component.setGroups(groups);
349 Map<String, String[]> substitutionMappingMap = new HashMap<>();
350 String[] array = { "value1", "value2" };
351 substitutionMappingMap.put("key", array);
353 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
354 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
356 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
357 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
358 .thenReturn(Either.left(new SubstitutionMapping()));
360 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
362 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
363 .thenReturn(new HashMap<>());
364 // test component contains group
365 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
369 public void testConvertMetadata_1() throws Exception {
371 Component component = getNewResource();
372 boolean isInstance = true;
373 ComponentInstance componentInstance = new ComponentInstance();
374 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
375 componentInstance.setSourceModelInvariant("targetModelInvariant");
377 ToscaMetadata result;
381 result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
385 public void testFillImports() throws Exception {
387 Component component = getNewService();
388 ToscaTemplate toscaTemplate = new ToscaTemplate("");
389 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
391 ComponentInstance instance = new ComponentInstance();
392 List<ComponentInstance> resourceInstances = new ArrayList<>();
393 instance.setComponentUid("name");
394 resourceInstances.add(instance);
395 component.setComponentInstances(resourceInstances);
396 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
397 ArtifactDefinition artifact = new ArtifactDefinition();
398 artifact.setArtifactName("name.name2");
399 toscaArtifacts.put("assettoscatemplate", artifact);
400 component.setToscaArtifacts(toscaArtifacts);
402 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.any(String.class)))
403 .thenReturn(Either.left(component));
406 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
410 public void testCreateDependency() throws Exception {
412 Map<String, Component> componentCache = new HashMap<>();
413 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
414 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
415 ComponentInstance ci = new ComponentInstance();
416 Component component = getNewResource();
418 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
419 ArtifactDefinition artifact = new ArtifactDefinition();
420 artifact.setArtifactName("name.name2");
421 toscaArtifacts.put("assettoscatemplate", artifact);
422 component.setToscaArtifacts(toscaArtifacts);
423 ci.setComponentUid("name");
424 ci.setOriginType(OriginTypeEnum.ServiceProxy);
425 ci.setSourceModelUid("modelName");
427 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("name"))).thenReturn(Either.left(component));
429 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("modelName")))
430 .thenReturn(Either.left(new Service()));
433 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
437 public void testGetInterfaceFilename() throws Exception {
438 String artifactName = "artifact.name";
442 result = ToscaExportHandler.getInterfaceFilename(artifactName);
446 public void testConvertNodeType() throws Exception {
447 Component component = new Resource();
448 ToscaTemplate toscaNode = new ToscaTemplate("");
449 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
450 Either<ToscaTemplate, ToscaError> result;
452 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
453 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
454 .thenReturn(Either.left(Collections.emptyMap()));
456 result = Deencapsulation.invoke(testSubject, "convertNodeType",new HashMap<>(), component, toscaNode, nodeTypes);
460 public void testConvertInterfaceNodeType() throws Exception {
461 Component component = getNewResource();
462 ToscaTemplate toscaNode = new ToscaTemplate("");
463 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
464 Either<ToscaTemplate, ToscaError> result;
465 List<InputDefinition> inputs = new ArrayList<>();
466 inputs.add(new InputDefinition());
467 component.setInputs(inputs);
469 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
470 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
472 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
473 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
476 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType",new HashMap<>(), component, toscaNode
479 @Ignore("need to fix change in injected class.")
481 public void testConvertReqCapAndTypeName() throws Exception {
482 Component component = new Resource();
483 ToscaTemplate toscaNode = new ToscaTemplate("");
484 Map<String, ToscaNodeType> nodeTypes = new HashMap();
485 ToscaNodeType toscaNodeType = new ToscaNodeType();
486 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
487 Either<ToscaTemplate, ToscaError> result;
490 capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class),Mockito.any(Resource.class), Mockito.any(Map.class)))
491 .thenReturn(new HashMap<>());
493 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
494 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
497 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName",new HashMap<>(), component, toscaNode, nodeTypes,
498 toscaNodeType, dataTypes);
500 component = new Service();
502 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
503 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
505 // test when component is service
506 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName", component, toscaNode, nodeTypes,
507 toscaNodeType, dataTypes);
512 public void testConvertNodeTemplates() throws Exception {
513 Component component = getNewResource();
514 List<ComponentInstance> componentInstances = new ArrayList<>();
515 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
516 Map<String, Component> componentCache = new HashMap<>();
517 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
518 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
519 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
520 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
521 List<ComponentInstanceInput> inputs = new ArrayList<>();
522 inputs.add(new ComponentInstanceInput());
523 componentInstancesInputs.put("key", inputs);
524 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
525 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
526 reldef.setFromNode("node");
527 resourceInstancesRelations.add(reldef);
528 component.setComponentInstancesRelations(resourceInstancesRelations);
530 ComponentInstance instance = new ComponentInstance();
531 instance.setUniqueId("id");
532 instance.setComponentUid("uid");
533 instance.setOriginType(OriginTypeEnum.ServiceProxy);
534 List<GroupInstance> groupInstances = new ArrayList<>();
535 GroupInstance groupInst = new GroupInstance();
536 List<String> artifacts = new ArrayList<>();
537 artifacts.add("artifact");
538 groupInst.setArtifacts(artifacts);
539 groupInst.setType("type");
540 groupInstances.add(groupInst);
541 instance.setGroupInstances(groupInstances);
542 componentInstances.add(instance);
544 component.setComponentInstancesInputs(componentInstancesInputs);
545 component.setInvariantUUID("uuid");
546 component.setUUID("uuid");
547 component.setDescription("desc");
549 componentCache.put("uid", component);
551 componentInstancesProperties.put("id", new ArrayList<>());
552 componentInstancesInputs.put("id", new ArrayList<>());
554 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
555 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
557 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
558 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
559 .thenReturn(Either.left(new ToscaNodeTemplate()));
562 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
563 componentInstancesProperties, componentCache, dataTypes, topologyTemplate);
567 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
568 Component component = getNewService();
569 List<ComponentInstance> componentInstances = new ArrayList<>();
570 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
571 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
572 Map<String, Component> componentCache = new HashMap<>();
573 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
574 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
575 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
576 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
577 List<ComponentInstanceInput> inputs = new ArrayList<>();
578 inputs.add(new ComponentInstanceInput());
579 componentInstancesInputs.put("key", inputs);
580 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
581 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
582 reldef.setFromNode("node");
583 resourceInstancesRelations.add(reldef);
584 component.setComponentInstancesRelations(resourceInstancesRelations);
586 ComponentInstance instance = new ComponentInstance();
587 instance.setUniqueId("id");
588 instance.setComponentUid("uid");
589 instance.setOriginType(OriginTypeEnum.ServiceProxy);
590 List<GroupInstance> groupInstances = new ArrayList<>();
591 GroupInstance groupInst = new GroupInstance();
592 List<String> artifacts = new ArrayList<>();
593 artifacts.add("artifact");
594 groupInst.setArtifacts(artifacts);
595 groupInst.setType("type");
596 groupInstances.add(groupInst);
597 instance.setGroupInstances(groupInstances);
598 componentInstances.add(instance);
600 component.setComponentInstancesInputs(componentInstancesInputs);
601 component.setInvariantUUID("uuid");
602 component.setUUID("uuid");
603 component.setDescription("desc");
605 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
606 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
607 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
608 path.setPathElements(list);
609 forwardingPaths.put("key", path);
611 ((Service) component).setForwardingPaths(forwardingPaths);
613 componentCache.put("uid", component);
615 componentInstancesProperties.put("id", new ArrayList<>());
616 componentInstancesInterfaces.put("id", new ArrayList<>());
617 componentInstancesInputs.put("id", new ArrayList<>());
619 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
620 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
622 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
623 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
624 .thenReturn(Either.left(new ToscaNodeTemplate()));
627 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
628 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
632 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
633 Component component = getNewResource();
634 List<ComponentInstance> componentInstances = new ArrayList<>();
635 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
636 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
637 Map<String, Component> componentCache = new HashMap<>();
638 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
639 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
640 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
641 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
642 List<ComponentInstanceInput> inputs = new ArrayList<>();
643 inputs.add(new ComponentInstanceInput());
644 componentInstancesInputs.put("key", inputs);
645 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
646 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
647 reldef.setFromNode("node");
648 resourceInstancesRelations.add(reldef);
649 component.setComponentInstancesRelations(resourceInstancesRelations);
651 ComponentInstance instance = new ComponentInstance();
652 instance.setUniqueId("id");
653 instance.setComponentUid("uid");
654 instance.setOriginType(OriginTypeEnum.ServiceProxy);
655 componentInstances.add(instance);
657 component.setComponentInstancesInputs(componentInstancesInputs);
658 component.setInvariantUUID("uuid");
659 component.setUUID("uuid");
660 component.setDescription("desc");
662 componentCache.put("uid", component);
664 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
665 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
667 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
668 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
669 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
672 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
673 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
677 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
678 Component component = getNewResource();
679 List<ComponentInstance> componentInstances = new ArrayList<>();
680 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
681 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
682 Map<String, Component> componentCache = new HashMap<>();
683 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
684 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
685 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
686 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
687 List<ComponentInstanceInput> inputs = new ArrayList<>();
688 inputs.add(new ComponentInstanceInput());
689 componentInstancesInputs.put("key", inputs);
690 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
691 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
692 reldef.setFromNode("id");
693 resourceInstancesRelations.add(reldef);
694 component.setComponentInstancesRelations(resourceInstancesRelations);
696 ComponentInstance instance = new ComponentInstance();
697 instance.setUniqueId("id");
698 instance.setComponentUid("uid");
699 instance.setOriginType(OriginTypeEnum.ServiceProxy);
700 componentInstances.add(instance);
702 component.setComponentInstancesInputs(componentInstancesInputs);
703 component.setInvariantUUID("uuid");
704 component.setUUID("uuid");
705 component.setDescription("desc");
707 componentCache.put("uid", component);
709 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
710 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
713 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
714 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
718 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
719 Component component = new Resource();
720 List<ComponentInstance> componentInstances = new ArrayList<>();
721 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
722 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
723 Map<String, Component> componentCache = new HashMap<>();
724 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
725 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
726 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
727 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
728 List<ComponentInstanceInput> inputs = new ArrayList<>();
729 inputs.add(new ComponentInstanceInput());
730 componentInstancesInputs.put("key", inputs);
731 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
732 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
733 reldef.setFromNode("id");
734 reldef.setToNode("node");
735 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
736 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
737 relationship.setRelation(new RelationshipInfo());
738 relationships.add(relationship);
739 reldef.setRelationships(relationships);
740 resourceInstancesRelations.add(reldef);
741 component.setComponentInstancesRelations(resourceInstancesRelations);
743 ComponentInstance instance = new ComponentInstance();
744 instance.setUniqueId("id");
745 componentInstances.add(instance);
747 component.setComponentInstancesInputs(componentInstancesInputs);
748 component.setComponentInstances(componentInstances);
750 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
751 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
754 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
755 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
759 public void testAddComponentInstanceInputs() throws Exception {
761 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
762 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
763 ComponentInstance componentInstance = new ComponentInstance();
764 String instanceUniqueId = "id";
765 Map<String, Object> props = new HashMap<>();
767 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
768 componentInstanceInputs.add(new ComponentInstanceInput());
770 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
773 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
774 instanceUniqueId, props);
778 public void testAddPropertiesOfComponentInstance() throws Exception {
779 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
780 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
781 ComponentInstance componentInstance = new ComponentInstance();
782 String instanceUniqueId = "id";
783 Map<String, Object> props = new HashMap<>();
785 ComponentInstanceProperty cip = new ComponentInstanceProperty();
786 cip.setInstanceUniqueId("id");
788 List<ComponentInstanceProperty> list = new ArrayList<>();
791 componentInstancesProperties.put("id", list);
794 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
795 instanceUniqueId, props);
799 public void testAddPropertiesOfParentComponent() throws Exception {
800 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
801 ComponentInstance componentInstance = new ComponentInstance();
802 Component componentOfInstance = new Resource();
803 Map<String, Object> props = new HashMap<>();
805 List<PropertyDefinition> properties = new ArrayList<>();
806 properties.add(new PropertyDefinition());
808 ((Resource) componentOfInstance).setProperties(properties);
811 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
812 componentOfInstance, props);
817 public void testCreateNodeType() throws Exception {
819 Component component = new Resource();
820 List<String> array = new ArrayList<>();
822 ((Resource) component).setDerivedFrom(array);
823 ToscaNodeType result;
825 // test when component is resource
826 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
828 component = new Service();
829 // test when component is service
830 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
834 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
835 Component container = new Service();
836 Either<Map<String, ToscaNodeType>, ToscaError> result;
837 List<ComponentInstance> componentInstances = new ArrayList<>();
838 ComponentInstance instance = new ComponentInstance();
839 instance.setOriginType(OriginTypeEnum.ServiceProxy);
840 instance.setSourceModelUid("targetModelUid");
841 instance.setToscaComponentName("toscaComponentName");
843 componentInstances.add(instance);
844 container.setComponentInstances(componentInstances);
845 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
846 Mockito.any(ComponentParametersView.class)))
847 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
848 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
849 Assert.assertTrue(result.isRight());
854 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
855 Component container = new Service();
856 Either<Map<String, ToscaNodeType>, ToscaError> result;
857 List<ComponentInstance> componentInstances = new ArrayList<>();
858 ComponentInstance instance = new ComponentInstance();
859 instance.setOriginType(OriginTypeEnum.ServiceProxy);
860 instance.setSourceModelUid("targetModelUid");
861 instance.setToscaComponentName("toscaComponentName");
862 componentInstances.add(instance);
863 container.setComponentInstances(componentInstances);
865 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
866 Mockito.any(ComponentParametersView.class)))
867 .thenReturn(Either.left(new Resource()));
868 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
869 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
870 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
871 Assert.assertTrue(result.isRight());
875 public void testCreateProxyInterfaceTypesPositive() {
876 Component container = new Service();
877 Either<Map<String, ToscaNodeType>, ToscaError> result;
878 List<ComponentInstance> componentInstances = new ArrayList<>();
879 ComponentInstance instance = new ComponentInstance();
880 instance.setOriginType(OriginTypeEnum.ServiceProxy);
881 instance.setSourceModelUid("targetModelUid");
882 instance.setToscaComponentName("toscaComponentName");
883 componentInstances.add(instance);
884 container.setComponentInstances(componentInstances);
886 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
887 .thenReturn(Either.left(Collections.emptyMap()));
889 Component proxyResource = new Resource();
890 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
891 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
892 proxyResource.setInterfaces(proxyInterfaces);
893 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
894 Mockito.any(ComponentParametersView.class)))
895 .thenReturn(Either.left(proxyResource));
897 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
898 Assert.assertTrue(result.isLeft());
899 Assert.assertEquals(1, result.left().value().size());
903 public void testCreateProxyNodeTypes() throws Exception {
904 Map<String, Component> componentCache = new HashMap<>();
905 Component container = new Resource();
906 Either<Map<String, ToscaNodeType>, ToscaError> result;
907 List<ComponentInstance> componentInstances = new ArrayList<>();
908 ComponentInstance instance = new ComponentInstance();
909 instance.setOriginType(OriginTypeEnum.ServiceProxy);
910 instance.setSourceModelUid("targetModelUid");
912 componentInstances.add(instance);
913 container.setComponentInstances(componentInstances);
915 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
916 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
918 // test when getLatestByName return is right
919 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
924 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
925 Map<String, Component> componentCache = new HashMap<>();
926 Component container = new Resource();
927 Either<Map<String, ToscaNodeType>, ToscaError> result;
928 List<ComponentInstance> componentInstances = new ArrayList<>();
929 ComponentInstance instance = new ComponentInstance();
930 instance.setOriginType(OriginTypeEnum.ServiceProxy);
931 instance.setSourceModelUid("targetModelUid");
933 componentInstances.add(instance);
934 container.setComponentInstances(componentInstances);
936 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
938 ComponentParametersView parameterView = new ComponentParametersView();
939 parameterView.disableAll();
940 parameterView.setIgnoreCategories(false);
942 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
943 Mockito.any(ComponentParametersView.class)))
944 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
946 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
948 // test when getLatestByName is left
949 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
953 public void testCreateProxyNodeType() throws Exception {
954 Map<String, Component> componentCache = new HashMap<>();
955 Component origComponent = new Resource();
956 Component proxyComponent = new Resource();
957 ComponentInstance instance = new ComponentInstance();
958 ToscaNodeType result;
960 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
963 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
964 proxyComponent, instance);
968 public void testConvertComponentInstanceRequirements() throws Exception {
969 Component component = new Resource();
970 ComponentInstance componentInstance = new ComponentInstance();
971 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
972 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
973 Component originComponent = new Resource();
974 Map<String, Component> componentCache = new HashMap<>();
975 Either<ToscaNodeTemplate, ToscaError> result;
978 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
979 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
981 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
982 reldef.setFromNode("name");
983 reldef.setToNode("name1");
984 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
985 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
986 cap.setRelation(new RelationshipInfo());
987 relationships.add(cap);
988 reldef.setRelationships(relationships);
989 relations.add(reldef);
990 componentInstance.setUniqueId("name");
992 List<ComponentInstance> instances = new ArrayList<>();
993 instances.add(componentInstance);
994 component.setComponentInstances(instances);
996 // test when filteredRElations ins't empty
997 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
998 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1002 public void testAddRequirement() throws Exception {
1003 ComponentInstance fromInstance = new ComponentInstance();
1004 Component fromOriginComponent = new Resource();
1005 List<ComponentInstance> instancesList = new ArrayList<>();
1006 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1007 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1008 Map<String, Component> componentCache = new HashMap<>();
1011 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1012 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1013 cap.setRequirement(new RequirementDataDefinition());
1014 RelationshipInfo relation = new RelationshipInfo();
1015 relation.setRequirementUid("Uid");
1016 relation.setRequirement("requirment");
1017 relation.setCapability("cap");
1018 relation.setCapabilityOwnerId("id1");
1019 cap.setRelation(relation);
1020 relationships.add(cap);
1021 rel.setRelationships(relationships);
1022 rel.setToNode("name");
1023 fromInstance.setUniqueId("name");
1024 fromInstance.setComponentUid("string");
1025 instancesList.add(fromInstance);
1026 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1027 fromOriginComponent.setRequirements(requirements);
1030 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1031 rel, toscaRequirements, componentCache);
1036 public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
1038 ComponentInstance fromInstance = new ComponentInstance();
1039 Component fromOriginComponent = new Resource();
1040 List<ComponentInstance> instancesList = new ArrayList<>();
1041 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1042 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1043 Map<String, Component> componentCache = new HashMap<>();
1046 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1047 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1048 cap.setRequirement(new RequirementDataDefinition());
1049 RelationshipInfo relation = new RelationshipInfo();
1050 relation.setRequirementUid("Uid");
1051 relation.setRequirement("requirment");
1052 relation.setCapability("cap");
1053 relation.setCapabilityOwnerId("id1");
1054 cap.setRelation(relation);
1055 relationships.add(cap);
1056 rel.setRelationships(relationships);
1057 rel.setToNode("name");
1058 fromInstance.setUniqueId("name");
1059 fromInstance.setComponentUid("string");
1060 instancesList.add(fromInstance);
1061 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1063 List<RequirementDefinition> defs = new ArrayList<>();
1064 RequirementDefinition def = new RequirementDefinition();
1065 def.setName("requirment");
1066 def.setCapability("cap");
1068 requirements.put("key", defs);
1069 fromOriginComponent.setRequirements(requirements);
1071 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1072 Mockito.any(ComponentParametersView.class)))
1073 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1076 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1077 rel, toscaRequirements, componentCache);
1081 public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
1082 ComponentInstance fromInstance = new ComponentInstance();
1083 Component fromOriginComponent = new Resource();
1084 List<ComponentInstance> instancesList = new ArrayList<>();
1085 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1086 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1087 Map<String, Component> componentCache = new HashMap<>();
1090 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1091 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1092 cap.setRequirement(new RequirementDataDefinition());
1093 RelationshipInfo relation = new RelationshipInfo();
1094 relation.setRequirementUid("Uid");
1095 relation.setRequirement("requirment");
1096 relation.setCapability("cap");
1097 relation.setCapabilityOwnerId("id1");
1098 cap.setRelation(relation);
1099 relationships.add(cap);
1100 rel.setRelationships(relationships);
1101 rel.setToNode("name");
1102 fromInstance.setUniqueId("name");
1103 fromInstance.setComponentUid("string");
1104 instancesList.add(fromInstance);
1105 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1107 List<RequirementDefinition> defs = new ArrayList<>();
1108 RequirementDefinition def = new RequirementDefinition();
1109 def.setName("requirment");
1110 def.setCapability("cap");
1112 requirements.put("key", defs);
1113 fromOriginComponent.setRequirements(requirements);
1115 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1116 List<CapabilityDefinition> caps = new ArrayList<>();
1117 CapabilityDefinition capdef = new CapabilityDefinition();
1118 capdef.setOwnerId("id");
1119 capdef.setName("name");
1120 capdef.setType("type");
1122 capabilities.put("cap", caps);
1124 fromOriginComponent.setCapabilities(capabilities);
1126 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1127 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1130 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1131 rel, toscaRequirements, componentCache);
1133 @Ignore("need to fix change in injected class.")
1135 public void testAddRequirmentsWithBuildAndAddRequirements() {
1136 ComponentInstance fromInstance = new ComponentInstance();
1137 Component fromOriginComponent = new Resource();
1138 List<ComponentInstance> instancesList = new ArrayList<>();
1139 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1140 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1141 Map<String, Component> componentCache = new HashMap<>();
1144 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1145 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1146 cap.setRequirement(new RequirementDataDefinition());
1147 RelationshipInfo relation = new RelationshipInfo();
1148 relation.setRequirementUid("Uid");
1149 relation.setRequirement("requirment");
1150 relation.setCapability("cap");
1151 relation.setCapabilityOwnerId("id");
1152 cap.setRelation(relation);
1153 relationships.add(cap);
1154 rel.setRelationships(relationships);
1155 rel.setToNode("name");
1156 fromInstance.setUniqueId("name");
1157 fromInstance.setComponentUid("string");
1158 instancesList.add(fromInstance);
1159 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1161 List<RequirementDefinition> defs = new ArrayList<>();
1162 RequirementDefinition def = new RequirementDefinition();
1163 def.setName("requirment");
1164 def.setCapability("cap");
1166 requirements.put("key", defs);
1167 fromOriginComponent.setRequirements(requirements);
1169 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1170 List<CapabilityDefinition> caps = new ArrayList<>();
1171 CapabilityDefinition capdef = new CapabilityDefinition();
1172 capdef.setOwnerId("id");
1173 capdef.setName("cap");
1174 capdef.setType("type");
1176 capabilities.put("cap", caps);
1177 fromOriginComponent.setCapabilities(capabilities);
1179 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1180 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1182 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.any(Map.class),
1183 Mockito.any(Component.class), Mockito.any(List.class), Mockito.anyString(),Mockito.anyString()))
1184 .thenReturn(Either.right(false));
1187 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1188 rel, toscaRequirements, componentCache);
1190 @Ignore("need to fix change in injected class.")
1192 public void testBuildAndAddRequirement() throws Exception {
1193 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1194 Component fromOriginComponent = new Resource();
1195 Component toOriginComponent = new Resource();
1196 CapabilityDefinition capability = new CapabilityDefinition();
1197 RequirementDefinition requirement = new RequirementDefinition();
1198 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1199 ComponentInstance toInstance = new ComponentInstance();
1200 Map<String, Component> componentCache = new HashMap<>();
1202 capability.setPath(new ArrayList<>());
1203 reqAndRelationshipPair.setCapability("cap");
1204 requirement.setPath(new ArrayList<>());
1205 reqAndRelationshipPair.setRequirement("req");
1207 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), toOriginComponent,
1208 new ArrayList<>(),Mockito.anyString(), "cap")).thenReturn(Either.left("buildCapNameRes"));
1210 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), fromOriginComponent,
1211 new ArrayList<>(),Mockito.anyString(), "req")).thenReturn(Either.right(false));
1214 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1215 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1218 @Ignore("need to fix change in injected class.")
1220 public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
1221 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1222 Component fromOriginComponent = new Resource();
1223 Component toOriginComponent = new Resource();
1224 CapabilityDefinition capability = new CapabilityDefinition();
1225 RequirementDefinition requirement = new RequirementDefinition();
1226 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1227 ComponentInstance toInstance = new ComponentInstance();
1228 Map<String, Component> componentCache = new HashMap<>();
1230 capability.setPath(new ArrayList<>());
1231 reqAndRelationshipPair.setCapability("cap");
1232 requirement.setPath(new ArrayList<>());
1233 reqAndRelationshipPair.setRequirement("req");
1235 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.anyMap(), Mockito.any(Resource.class),
1236 Mockito.anyList(), Mockito.anyString(),Mockito.anyString())).thenReturn(Either.left("buildCapNameRes"));
1239 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1240 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1244 public void testIsRequirementBelongToRelation() throws Exception {
1246 Component originComponent = new Resource();
1247 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1248 RequirementDefinition requirement = new RequirementDefinition();
1249 String fromInstanceId = "";
1252 requirement.setName("name");
1253 reqAndRelationshipPair.setRequirement("name1");
1255 // test return false
1256 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1257 reqAndRelationshipPair, requirement, fromInstanceId);
1261 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1263 Component originComponent = new Service();
1264 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1265 RequirementDefinition requirement = new RequirementDefinition();
1266 String fromInstanceId = "";
1269 // default test return true
1270 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1271 reqAndRelationshipPair, requirement, fromInstanceId);
1275 public void testIsRequirementBelongToOwner() throws Exception {
1277 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1278 RequirementDefinition requirement = new RequirementDefinition();
1279 String fromInstanceId = "";
1280 Component originComponent = new Resource();
1283 requirement.setOwnerId("owner1");
1284 reqAndRelationshipPair.setRequirementOwnerId("owner");
1287 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1288 fromInstanceId, originComponent);
1292 public void testIsCvfc() throws Exception {
1294 Component component = new Resource();
1297 component = new Service();
1299 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1303 public void testConvertCapabilities() throws Exception {
1304 Component component = new Resource();
1305 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1306 Map<String, Component> componentCache = new HashMap<>();
1307 Either<SubstitutionMapping, ToscaError> result;
1309 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
1310 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1312 // default test return isRight
1313 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1316 @Ignore("need to fix change in injected class.")
1318 public void testConvertCapabilities_1() throws Exception {
1319 Component component = new Resource();
1320 ToscaNodeType nodeType = new ToscaNodeType();
1321 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1322 Either<ToscaNodeType, ToscaError> result;
1324 Map<String, ToscaCapability> capabilities = new HashMap<>();
1325 capabilities.put("key", new ToscaCapability());
1327 Mockito.when(capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class), component, dataTypes)).thenReturn(capabilities);
1330 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, nodeType, dataTypes);