2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.tosca;
23 import static org.hamcrest.CoreMatchers.is;
24 import static org.junit.Assert.assertThat;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.anyBoolean;
27 import static org.mockito.ArgumentMatchers.anyList;
28 import static org.mockito.ArgumentMatchers.anyMap;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.ArgumentMatchers.eq;
31 import static org.mockito.ArgumentMatchers.isNull;
32 import static org.mockito.Mockito.doReturn;
33 import static org.openecomp.sdc.be.tosca.PropertyConvertor.PropertyType.PROPERTY;
35 import fj.data.Either;
36 import java.util.ArrayList;
37 import java.util.Arrays;
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.List;
42 import java.util.Optional;
43 import java.util.stream.Collectors;
44 import mockit.Deencapsulation;
45 import org.apache.commons.collections.MapUtils;
46 import org.apache.commons.lang3.tuple.ImmutablePair;
47 import org.apache.commons.lang3.tuple.Triple;
48 import org.junit.Assert;
49 import org.junit.Before;
50 import org.junit.Test;
51 import org.mockito.InjectMocks;
52 import org.mockito.Mock;
53 import org.mockito.Mockito;
54 import org.mockito.MockitoAnnotations;
55 import org.openecomp.sdc.be.components.BeConfDependentTest;
56 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
57 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
58 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
59 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
60 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
61 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
62 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
63 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
64 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
65 import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition;
66 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
67 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
68 import org.openecomp.sdc.be.model.ArtifactDefinition;
69 import org.openecomp.sdc.be.model.CapabilityDefinition;
70 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
71 import org.openecomp.sdc.be.model.Component;
72 import org.openecomp.sdc.be.model.ComponentInstance;
73 import org.openecomp.sdc.be.model.ComponentInstanceInput;
74 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
75 import org.openecomp.sdc.be.model.ComponentParametersView;
76 import org.openecomp.sdc.be.model.DataTypeDefinition;
77 import org.openecomp.sdc.be.model.GroupDefinition;
78 import org.openecomp.sdc.be.model.GroupInstance;
79 import org.openecomp.sdc.be.model.InputDefinition;
80 import org.openecomp.sdc.be.model.InterfaceDefinition;
81 import org.openecomp.sdc.be.model.PropertyDefinition;
82 import org.openecomp.sdc.be.model.RelationshipInfo;
83 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
84 import org.openecomp.sdc.be.model.RequirementDefinition;
85 import org.openecomp.sdc.be.model.Resource;
86 import org.openecomp.sdc.be.model.Service;
87 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
88 import org.openecomp.sdc.be.model.category.CategoryDefinition;
89 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
90 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
91 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
92 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
93 import org.openecomp.sdc.be.tosca.model.SubstitutionMapping;
94 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
95 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
96 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
97 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
98 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
99 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
100 import org.openecomp.sdc.be.tosca.model.ToscaTemplateArtifact;
101 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
102 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
103 import org.openecomp.sdc.be.tosca.utils.InputConverter;
105 public class ToscaExportHandlerTest extends BeConfDependentTest {
107 private static final String COMPONENT_PROPERTY_NAME = "prop1";
108 private static final String COMPONENT_PROPERTY_TYPE = "string";
109 private static final String COMPONENT_INPUT_NAME = "input1";
110 private static final String COMPONENT_INPUT_TYPE = "integer";
111 private static final String RESOURCE_NAME = "resource";
112 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
113 private static final Map<String, DataTypeDefinition> DATA_TYPES = new HashMap<>();
116 private ToscaExportHandler testSubject;
119 private ApplicationDataTypeCache dataTypeCache;
122 private ToscaOperationFacade toscaOperationFacade;
125 private CapabilityRequirementConverter capabiltyRequirementConvertor;
128 private InputConverter inputConverter;
131 private GroupExportParser groupExportParser;
134 private PropertyConvertor propertyConvertor;
137 private GroupExportParserImpl groupExportParserImpl;
140 private InterfaceLifecycleOperation interfaceLifecycleOperation;
143 private InterfacesOperationsConverter interfacesOperationsConverter;
146 private PolicyExportParser policyExportParser;
149 public void setUpMock() throws Exception {
150 MockitoAnnotations.initMocks(this);
151 doReturn(new ToscaProperty()).when(propertyConvertor).convertProperty(any(), any(), eq(PROPERTY));
152 doReturn(new HashMap<String, Object>()).when(interfacesOperationsConverter)
153 .getInterfacesMap(any(), isNull(), anyMap(), anyMap(), anyBoolean(), anyBoolean());
156 private Resource getNewResource() {
157 Resource resource = new Resource();
158 List<CategoryDefinition> categories = new ArrayList<>();
159 CategoryDefinition category = new CategoryDefinition();
160 List<SubCategoryDefinition> subcategories = new ArrayList<>();
161 SubCategoryDefinition subcategory = new SubCategoryDefinition();
162 List<DataTypeDefinition> dataTypes = new ArrayList<>();
163 DataTypeDefinition dataType = new DataTypeDefinition();
164 dataType.setName("dataTypeName");
165 dataType.setDerivedFromName("tosca.datatypes.Root");
166 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
170 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
171 dataType.setPropertiesData(propDataList);
172 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
173 .collect(Collectors.toList());
174 dataType.setProperties(propList);
175 dataTypes.add(dataType);
177 subcategory.setName("name");
178 subcategories.add(subcategory);
179 category.setName("name");
180 category.setSubcategories(subcategories);
181 categories.add(category);
183 resource.setCategories(categories);
184 resource.setVersion("version");
185 resource.setVendorName("vendorName");
186 resource.setVendorRelease("vendorRelease");
187 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
188 resource.setDataTypes(dataTypes);
193 private Service getNewService() {
194 Service service = new Service();
195 List<CategoryDefinition> categories = new ArrayList<>();
196 CategoryDefinition category = new CategoryDefinition();
197 List<SubCategoryDefinition> subcategories = new ArrayList<>();
198 SubCategoryDefinition subcategory = new SubCategoryDefinition();
200 subcategory.setName("name");
201 subcategories.add(subcategory);
202 category.setName("name");
203 category.setSubcategories(subcategories);
204 categories.add(category);
206 service.setCategories(categories);
207 service.setComponentType(ComponentTypeEnum.SERVICE);
208 service.setServiceType("serviceType");
209 service.setServiceRole("serviceRole");
210 service.setEnvironmentContext("environmentContext");
216 public void testExportComponent() throws Exception {
217 Component component = getNewResource();
218 Either<ToscaRepresentation, ToscaError> result;
220 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
222 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
223 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
224 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
225 .thenReturn(Either.left(Collections.emptyMap()));
227 // default test when component is Resource
228 result = testSubject.exportComponent(component);
229 Assert.assertNotNull(result);
231 component = getNewService();
233 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Service.class),
234 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
235 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
237 // default test when component is Service
238 result = testSubject.exportComponent(component);
239 Assert.assertNotNull(result);
243 public void testExportComponentInterface() throws Exception {
244 Component component = getNewResource();
245 Either<ToscaRepresentation, ToscaError> result;
247 ((Resource) component).setInterfaces(new HashMap<>());
249 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
250 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
251 .thenReturn(Either.left(Collections.emptyMap()));
252 // default test when convertInterfaceNodeType is right
253 result = testSubject.exportComponentInterface(component, false);
254 Assert.assertNotNull(result);
256 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
258 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
259 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
261 // default test when convertInterfaceNodeType is left
262 result = testSubject.exportComponentInterface(component, false);
263 Assert.assertNotNull(result);
267 public void testConvertInterfaceNodeTypeProperties() throws Exception {
269 Resource component = getNewResource();
271 component.setInterfaces(new HashMap<>());
272 InputDefinition input = new InputDefinition();
273 input.setName(COMPONENT_INPUT_NAME);
274 input.setType(COMPONENT_INPUT_TYPE);
275 component.setInputs(Collections.singletonList(input));
276 PropertyDefinition property = new PropertyDefinition();
277 property.setName(COMPONENT_PROPERTY_NAME);
278 property.setType(COMPONENT_PROPERTY_TYPE);
279 component.setProperties(Collections.singletonList(property));
280 component.setName(RESOURCE_NAME);
281 component.setToscaResourceName(RESOURCE_NAME);
283 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
284 .thenReturn(Either.left(Collections.emptyMap()));
285 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
286 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
288 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
289 any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
291 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
292 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
293 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
294 Assert.assertNotNull(result);
295 assertThat(result.isLeft(), is(true));
296 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
297 assertThat(nodeTypeMap.size(), is(1));
298 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
299 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
300 // Check if inputs and properties in component are merged properly
301 assertThat(propertyMap.size(), is(2));
302 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
303 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
307 public void testCreateToscaRepresentation() throws Exception {
308 ToscaTemplate toscaTemplate = new ToscaTemplate("");
309 ToscaRepresentation result;
312 result = testSubject.createToscaRepresentation(toscaTemplate);
313 Assert.assertNotNull(result);
317 public void testGetDependencies() throws Exception {
319 Component component = new Resource();
320 Either<ToscaTemplate, ToscaError> result;
323 result = testSubject.getDependencies(component);
324 Assert.assertNotNull(result);
328 public void testConvertToscaTemplate() throws Exception {
330 Component component = getNewResource();
331 ToscaTemplate toscaNode = new ToscaTemplate("");
332 Either<ToscaTemplate, ToscaError> result;
333 List<ComponentInstance> resourceInstances = new ArrayList<>();
334 ComponentInstance instance = new ComponentInstance();
336 instance.setOriginType(OriginTypeEnum.SERVICE);
337 instance.setSourceModelUid("targetModelUid");
338 resourceInstances.add(instance);
340 component.setComponentInstances(resourceInstances);
342 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
343 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
344 any(ComponentInstance.class))).thenReturn(Either.right(false));
347 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
348 Assert.assertNotNull(result);
352 public void testConvertToscaTemplateWhenComponentContainsGroup() {
353 Component component = getNewResource();
354 ToscaTemplate toscaNode = new ToscaTemplate("");
355 Either<ToscaTemplate, ToscaError> result;
356 component.setComponentInstances(new ArrayList<>());
358 List<GroupDefinition> groups = new ArrayList<>();
359 GroupDefinition group = new GroupDefinition();
360 List<String> artifacts = new ArrayList<>();
361 artifacts.add("artifact");
362 group.setType("org.openecomp.groups.VfModule");
363 group.setArtifacts(artifacts);
365 component.setGroups(groups);
367 Map<String, String[]> substitutionMappingMap = new HashMap<>();
368 String[] array = {"value1", "value2"};
369 substitutionMappingMap.put("key", array);
371 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(any(Map.class),
372 any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
374 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(any(Map.class),
375 any(Component.class), any(SubstitutionMapping.class)))
376 .thenReturn(Either.left(new SubstitutionMapping()));
378 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
380 Mockito.when(inputConverter.convertInputs(any(List.class), any(Map.class)))
381 .thenReturn(new HashMap<>());
383 Mockito.when(groupExportParser.getGroups(component))
386 // test component contains group
387 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
388 Assert.assertNotNull(result);
392 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
393 Component component = getNewService();
394 ToscaTemplate toscaNode = new ToscaTemplate("");
395 Either<ToscaTemplate, ToscaError> result;
396 component.setComponentInstances(new ArrayList<>());
398 List<GroupDefinition> groups = new ArrayList<>();
399 GroupDefinition group = new GroupDefinition();
400 List<String> artifacts = new ArrayList<>();
401 artifacts.add("artifact");
402 group.setType("org.openecomp.groups.VfModule");
403 group.setArtifacts(artifacts);
405 component.setGroups(groups);
407 Map<String, String[]> substitutionMappingMap = new HashMap<>();
408 String[] array = {"value1", "value2"};
409 substitutionMappingMap.put("key", array);
412 .when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
413 .thenReturn(Either.left(substitutionMappingMap));
415 Mockito.when(capabiltyRequirementConvertor
416 .convertSubstitutionMappingRequirements(anyMap(), any(Component.class), any(SubstitutionMapping.class)))
417 .thenReturn(Either.left(new SubstitutionMapping()));
419 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
421 Mockito.when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
422 // test component contains group
423 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
424 Assert.assertNotNull(result);
428 public void testConvertMetadata_1() throws Exception {
430 Component component = getNewResource();
431 boolean isInstance = true;
432 ComponentInstance componentInstance = new ComponentInstance();
433 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
434 componentInstance.setSourceModelInvariant("targetModelInvariant");
436 ToscaMetadata result;
439 result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
440 Assert.assertNotNull(result);
444 public void testFillImports() throws Exception {
446 Component component = getNewService();
447 ToscaTemplate toscaTemplate = new ToscaTemplate("");
448 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
450 ComponentInstance instance = new ComponentInstance();
451 List<ComponentInstance> resourceInstances = new ArrayList<>();
452 instance.setComponentUid("name");
453 resourceInstances.add(instance);
454 component.setComponentInstances(resourceInstances);
455 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
456 ArtifactDefinition artifact = new ArtifactDefinition();
457 artifact.setArtifactName("name.name2");
458 toscaArtifacts.put("assettoscatemplate", artifact);
459 component.setToscaArtifacts(toscaArtifacts);
461 Mockito.when(toscaOperationFacade.getToscaFullElement(any(String.class)))
462 .thenReturn(Either.left(component));
465 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
466 Assert.assertNotNull(result);
470 public void testCreateDependency() throws Exception {
472 Map<String, Component> componentCache = new HashMap<>();
473 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
474 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
475 ComponentInstance ci = new ComponentInstance();
476 Component component = getNewResource();
478 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
479 ArtifactDefinition artifact = new ArtifactDefinition();
480 artifact.setArtifactName("name.name2");
481 toscaArtifacts.put("assettoscatemplate", artifact);
482 component.setToscaArtifacts(toscaArtifacts);
483 ci.setComponentUid("name");
484 ci.setOriginType(OriginTypeEnum.ServiceProxy);
485 ci.setSourceModelUid("modelName");
487 Mockito.when(toscaOperationFacade.getToscaFullElement(eq("name"))).thenReturn(Either.left(component));
489 Mockito.when(toscaOperationFacade.getToscaFullElement(eq("modelName")))
490 .thenReturn(Either.left(new Service()));
493 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
497 public void testGetInterfaceFilename() throws Exception {
498 String artifactName = "artifact.name";
502 result = ToscaExportHandler.getInterfaceFilename(artifactName);
503 Assert.assertNotNull(result);
507 public void testConvertNodeType() throws Exception {
508 Component component = new Resource();
509 ToscaTemplate toscaNode = new ToscaTemplate("");
510 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
511 Either<ToscaTemplate, ToscaError> result;
513 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
514 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
515 .thenReturn(Either.left(Collections.emptyMap()));
517 result = Deencapsulation
518 .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
519 Assert.assertNotNull(result);
523 public void testConvertInterfaceNodeType() throws Exception {
524 Component component = getNewResource();
525 ToscaTemplate toscaNode = new ToscaTemplate("");
526 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
527 Either<ToscaTemplate, ToscaError> result;
528 List<InputDefinition> inputs = new ArrayList<>();
529 inputs.add(new InputDefinition());
530 component.setInputs(inputs);
532 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
533 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
534 .thenReturn(Either.left(Collections.emptyMap()));
537 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
538 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
541 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
543 Assert.assertNotNull(result);
547 public void testConvertReqCapAndTypeName() throws Exception {
548 Component component = new Resource();
549 ToscaTemplate toscaNode = new ToscaTemplate("");
550 Map<String, ToscaNodeType> nodeTypes = new HashMap();
551 ToscaNodeType toscaNodeType = new ToscaNodeType();
552 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
553 Either<ToscaTemplate, ToscaError> result;
556 capabiltyRequirementConvertor
557 .convertCapabilities(any(Map.class), any(Resource.class), any(Map.class)))
558 .thenReturn(new HashMap<>());
561 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Resource.class),
562 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
565 result = Deencapsulation
566 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
567 toscaNodeType, dataTypes);
568 Assert.assertNotNull(result);
570 component = new Service();
573 .when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Service.class),
574 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
576 // test when component is service
577 result = Deencapsulation
578 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
579 toscaNodeType, dataTypes);
580 Assert.assertNotNull(result);
584 public void testConvertNodeTemplates() throws Exception {
585 Component component = getNewResource();
586 List<ComponentInstance> componentInstances = new ArrayList<>();
587 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
588 Map<String, Component> componentCache = new HashMap<>();
589 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
590 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
591 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
592 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
593 List<ComponentInstanceInput> inputs = new ArrayList<>();
594 inputs.add(new ComponentInstanceInput());
595 componentInstancesInputs.put("key", inputs);
596 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
597 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
598 reldef.setFromNode("node");
599 resourceInstancesRelations.add(reldef);
600 component.setComponentInstancesRelations(resourceInstancesRelations);
602 ComponentInstance instance = new ComponentInstance();
603 instance.setUniqueId("id");
604 instance.setComponentUid("uid");
605 instance.setOriginType(OriginTypeEnum.ServiceProxy);
606 List<GroupInstance> groupInstances = new ArrayList<>();
607 GroupInstance groupInst = new GroupInstance();
608 List<String> artifacts = new ArrayList<>();
609 artifacts.add("artifact");
610 groupInst.setArtifacts(artifacts);
611 groupInst.setType("type");
612 groupInstances.add(groupInst);
613 instance.setGroupInstances(groupInstances);
614 componentInstances.add(instance);
616 component.setComponentInstancesInputs(componentInstancesInputs);
617 component.setInvariantUUID("uuid");
618 component.setUUID("uuid");
619 component.setDescription("desc");
621 componentCache.put("uid", component);
623 componentInstancesProperties.put("id", new ArrayList<>());
624 componentInstancesInputs.put("id", new ArrayList<>());
626 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
627 any(ComponentInstance.class))).thenReturn(Either.left(component));
629 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
630 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
631 .thenReturn(Either.left(new ToscaNodeTemplate()));
634 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
635 componentInstancesProperties, new HashMap<>(), componentCache, dataTypes, topologyTemplate);
636 Assert.assertNotNull(result);
640 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
641 Component component = getNewService();
642 List<ComponentInstance> componentInstances = new ArrayList<>();
643 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
644 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
645 Map<String, Component> componentCache = new HashMap<>();
646 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
647 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
648 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
649 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
650 List<ComponentInstanceInput> inputs = new ArrayList<>();
651 inputs.add(new ComponentInstanceInput());
652 componentInstancesInputs.put("key", inputs);
653 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
654 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
655 reldef.setFromNode("node");
656 resourceInstancesRelations.add(reldef);
657 component.setComponentInstancesRelations(resourceInstancesRelations);
659 ComponentInstance instance = new ComponentInstance();
660 instance.setUniqueId("id");
661 instance.setComponentUid("uid");
662 instance.setOriginType(OriginTypeEnum.ServiceProxy);
663 List<GroupInstance> groupInstances = new ArrayList<>();
664 GroupInstance groupInst = new GroupInstance();
665 List<String> artifacts = new ArrayList<>();
666 artifacts.add("artifact");
667 groupInst.setArtifacts(artifacts);
668 groupInst.setType("type");
669 groupInstances.add(groupInst);
670 instance.setGroupInstances(groupInstances);
671 componentInstances.add(instance);
673 component.setComponentInstancesInputs(componentInstancesInputs);
674 component.setInvariantUUID("uuid");
675 component.setUUID("uuid");
676 component.setDescription("desc");
678 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
679 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
680 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
681 path.setPathElements(list);
682 forwardingPaths.put("key", path);
684 ((Service) component).setForwardingPaths(forwardingPaths);
686 componentCache.put("uid", component);
688 componentInstancesProperties.put("id", new ArrayList<>());
689 componentInstancesInterfaces.put("id", new ArrayList<>());
690 componentInstancesInputs.put("id", new ArrayList<>());
692 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
693 any(ComponentInstance.class))).thenReturn(Either.left(component));
695 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
696 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
697 .thenReturn(Either.left(new ToscaNodeTemplate()));
700 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
701 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
702 Assert.assertNotNull(result);
706 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
707 Component component = getNewResource();
708 List<ComponentInstance> componentInstances = new ArrayList<>();
709 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
710 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
711 Map<String, Component> componentCache = new HashMap<>();
712 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
713 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
714 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
715 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
716 List<ComponentInstanceInput> inputs = new ArrayList<>();
717 inputs.add(new ComponentInstanceInput());
718 componentInstancesInputs.put("key", inputs);
719 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
720 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
721 reldef.setFromNode("node");
722 resourceInstancesRelations.add(reldef);
723 component.setComponentInstancesRelations(resourceInstancesRelations);
725 ComponentInstance instance = new ComponentInstance();
726 instance.setUniqueId("id");
727 instance.setComponentUid("uid");
728 instance.setOriginType(OriginTypeEnum.ServiceProxy);
729 componentInstances.add(instance);
731 component.setComponentInstancesInputs(componentInstancesInputs);
732 component.setInvariantUUID("uuid");
733 component.setUUID("uuid");
734 component.setDescription("desc");
736 componentCache.put("uid", component);
738 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
739 any(ComponentInstance.class))).thenReturn(Either.left(component));
741 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
742 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
743 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
746 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
747 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
748 Assert.assertNotNull(result);
752 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
753 Component component = getNewResource();
754 List<ComponentInstance> componentInstances = new ArrayList<>();
755 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
756 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
757 Map<String, Component> componentCache = new HashMap<>();
758 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
759 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
760 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
761 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
762 List<ComponentInstanceInput> inputs = new ArrayList<>();
763 inputs.add(new ComponentInstanceInput());
764 componentInstancesInputs.put("key", inputs);
765 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
766 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
767 reldef.setFromNode("id");
768 resourceInstancesRelations.add(reldef);
769 component.setComponentInstancesRelations(resourceInstancesRelations);
771 ComponentInstance instance = new ComponentInstance();
772 instance.setUniqueId("id");
773 instance.setComponentUid("uid");
774 instance.setOriginType(OriginTypeEnum.ServiceProxy);
775 componentInstances.add(instance);
777 component.setComponentInstancesInputs(componentInstancesInputs);
778 component.setInvariantUUID("uuid");
779 component.setUUID("uuid");
780 component.setDescription("desc");
782 componentCache.put("uid", component);
784 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
785 any(ComponentInstance.class))).thenReturn(Either.right(false));
788 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
789 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
790 Assert.assertNotNull(result);
794 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
795 Component component = new Resource();
796 List<ComponentInstance> componentInstances = new ArrayList<>();
797 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
798 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
799 Map<String, Component> componentCache = new HashMap<>();
800 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
801 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
802 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
803 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
804 List<ComponentInstanceInput> inputs = new ArrayList<>();
805 inputs.add(new ComponentInstanceInput());
806 componentInstancesInputs.put("key", inputs);
807 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
808 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
809 reldef.setFromNode("id");
810 reldef.setToNode("node");
811 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
812 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
813 relationship.setRelation(new RelationshipInfo());
814 relationships.add(relationship);
815 reldef.setRelationships(relationships);
816 resourceInstancesRelations.add(reldef);
817 component.setComponentInstancesRelations(resourceInstancesRelations);
819 ComponentInstance instance = new ComponentInstance();
820 instance.setUniqueId("id");
821 componentInstances.add(instance);
823 component.setComponentInstancesInputs(componentInstancesInputs);
824 component.setComponentInstances(componentInstances);
826 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(any(Map.class),
827 any(ComponentInstance.class))).thenReturn(Either.left(component));
830 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
831 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
832 Assert.assertNotNull(result);
836 public void testAddComponentInstanceInputs() throws Exception {
838 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
839 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
840 ComponentInstance componentInstance = new ComponentInstance();
841 String instanceUniqueId = "id";
842 Map<String, Object> props = new HashMap<>();
844 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
845 componentInstanceInputs.add(new ComponentInstanceInput());
847 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
850 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
851 instanceUniqueId, props);
855 public void testAddPropertiesOfComponentInstance() throws Exception {
856 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
857 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
858 ComponentInstance componentInstance = new ComponentInstance();
859 String instanceUniqueId = "id";
860 Map<String, Object> props = new HashMap<>();
862 ComponentInstanceProperty cip = new ComponentInstanceProperty();
863 cip.setInstanceUniqueId("id");
865 List<ComponentInstanceProperty> list = new ArrayList<>();
868 componentInstancesProperties.put("id", list);
871 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
872 instanceUniqueId, props);
876 public void testAddPropertiesOfParentComponent() throws Exception {
877 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
878 ComponentInstance componentInstance = new ComponentInstance();
879 Component componentOfInstance = new Resource();
880 Map<String, Object> props = new HashMap<>();
882 List<PropertyDefinition> properties = new ArrayList<>();
883 properties.add(new PropertyDefinition());
885 ((Resource) componentOfInstance).setProperties(properties);
888 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
889 componentOfInstance, props);
893 public void testCreateNodeType() throws Exception {
895 Component component = new Resource();
896 List<String> array = new ArrayList<>();
898 ((Resource) component).setDerivedFrom(array);
899 ToscaNodeType result;
901 // test when component is resource
902 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
903 Assert.assertNotNull(result);
905 component = new Service();
906 // test when component is service
907 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
908 Assert.assertNotNull(result);
912 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
913 Component container = new Service();
914 Either<Map<String, ToscaNodeType>, ToscaError> result;
915 List<ComponentInstance> componentInstances = new ArrayList<>();
916 ComponentInstance instance = new ComponentInstance();
917 instance.setOriginType(OriginTypeEnum.ServiceProxy);
918 instance.setSourceModelUid("targetModelUid");
919 instance.setToscaComponentName("toscaComponentName");
921 componentInstances.add(instance);
922 container.setComponentInstances(componentInstances);
923 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
924 any(ComponentParametersView.class)))
925 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
926 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
927 Assert.assertTrue(result.isRight());
931 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
932 Component container = new Service();
933 Either<Map<String, ToscaNodeType>, ToscaError> result;
934 List<ComponentInstance> componentInstances = new ArrayList<>();
935 ComponentInstance instance = new ComponentInstance();
936 instance.setOriginType(OriginTypeEnum.ServiceProxy);
937 instance.setSourceModelUid("targetModelUid");
938 instance.setToscaComponentName("toscaComponentName");
939 componentInstances.add(instance);
940 container.setComponentInstances(componentInstances);
942 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
943 any(ComponentParametersView.class)))
944 .thenReturn(Either.left(new Resource()));
945 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
946 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
947 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
948 Assert.assertTrue(result.isRight());
952 public void testCreateProxyInterfaceTypesPositive() {
953 Component container = new Service();
954 Either<Map<String, ToscaNodeType>, ToscaError> result;
955 List<ComponentInstance> componentInstances = new ArrayList<>();
956 ComponentInstance instance = new ComponentInstance();
957 instance.setOriginType(OriginTypeEnum.ServiceProxy);
958 instance.setSourceModelUid("targetModelUid");
959 instance.setToscaComponentName("toscaComponentName");
960 componentInstances.add(instance);
961 container.setComponentInstances(componentInstances);
963 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
964 .thenReturn(Either.left(Collections.emptyMap()));
966 Component proxyResource = new Resource();
967 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
968 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
969 proxyResource.setInterfaces(proxyInterfaces);
970 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
971 any(ComponentParametersView.class)))
972 .thenReturn(Either.left(proxyResource));
974 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
975 Assert.assertNotNull(result);
976 Assert.assertTrue(result.isLeft());
977 Assert.assertEquals(1, result.left().value().size());
981 public void testCreateProxyNodeTypes() throws Exception {
982 Map<String, Component> componentCache = new HashMap<>();
983 Component container = new Resource();
984 Either<Map<String, ToscaNodeType>, ToscaError> result;
985 List<ComponentInstance> componentInstances = new ArrayList<>();
986 ComponentInstance instance = new ComponentInstance();
987 instance.setOriginType(OriginTypeEnum.ServiceProxy);
988 instance.setSourceModelUid("targetModelUid");
990 componentInstances.add(instance);
991 container.setComponentInstances(componentInstances);
993 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
994 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
996 // test when getLatestByName return is right
997 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
998 Assert.assertNotNull(result);
1002 public void testCreateServiceSubstitutionNodeTypes() throws Exception {
1003 Map<String, Component> componentCache = new HashMap<>();
1005 Component referencedService = getNewService();
1006 referencedService.setInvariantUUID("uuid");
1007 referencedService.setUUID("uuid");
1008 referencedService.setUniqueId("targetModelUid");
1009 referencedService.setDescription("desc");
1010 componentCache.put("targetModelUid", referencedService);
1012 Component containerService = new Service();
1013 List<ComponentInstance> componentInstances = new ArrayList<>();
1014 ComponentInstance instance = new ComponentInstance();
1015 instance.setOriginType(OriginTypeEnum.ServiceSubstitution);
1016 instance.setSourceModelUid("targetModelUid");
1018 componentInstances.add(instance);
1019 containerService.setComponentInstances(componentInstances);
1021 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1022 .thenReturn(Either.left(Collections.emptyMap()));
1023 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1024 Mockito.when(capabiltyRequirementConvertor.convertRequirements(any(Map.class), any(Service.class),
1025 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1027 ToscaTemplate toscaNode = new ToscaTemplate("1_1");
1029 Deencapsulation.invoke(testSubject, "createServiceSubstitutionNodeTypes", componentCache, containerService, toscaNode);
1030 Assert.assertNotNull(toscaNode.getNode_types());
1034 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
1035 Map<String, Component> componentCache = new HashMap<>();
1036 Component container = new Resource();
1037 Either<Map<String, ToscaNodeType>, ToscaError> result;
1038 List<ComponentInstance> componentInstances = new ArrayList<>();
1039 ComponentInstance instance = new ComponentInstance();
1040 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1041 instance.setSourceModelUid("targetModelUid");
1043 componentInstances.add(instance);
1044 container.setComponentInstances(componentInstances);
1046 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
1048 ComponentParametersView parameterView = new ComponentParametersView();
1049 parameterView.disableAll();
1050 parameterView.setIgnoreCategories(false);
1052 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
1053 any(ComponentParametersView.class)))
1054 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1056 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1058 // test when getLatestByName is left
1059 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1060 Assert.assertNotNull(result);
1064 public void testCreateProxyNodeType() throws Exception {
1065 Map<String, Component> componentCache = new HashMap<>();
1066 Component origComponent = new Resource();
1067 Component proxyComponent = new Resource();
1068 ComponentInstance instance = new ComponentInstance();
1069 ToscaNodeType result;
1071 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1074 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
1075 proxyComponent, instance);
1076 Assert.assertNotNull(result);
1080 public void testConvertComponentInstanceRequirements() throws Exception {
1081 Component component = new Resource();
1082 ComponentInstance componentInstance = new ComponentInstance();
1083 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1084 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
1085 Component originComponent = new Resource();
1086 Map<String, Component> componentCache = new HashMap<>();
1087 Either<ToscaNodeTemplate, ToscaError> result;
1090 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1091 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1092 Assert.assertNotNull(result);
1094 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1095 reldef.setFromNode("name");
1096 reldef.setToNode("name1");
1097 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1098 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1099 cap.setRelation(new RelationshipInfo());
1100 relationships.add(cap);
1101 reldef.setRelationships(relationships);
1102 relations.add(reldef);
1103 componentInstance.setUniqueId("name");
1105 List<ComponentInstance> instances = new ArrayList<>();
1106 instances.add(componentInstance);
1107 component.setComponentInstances(instances);
1109 // test when filteredRElations ins't empty
1110 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1111 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1112 Assert.assertNotNull(result);
1116 public void testAddRequirement() throws Exception {
1117 ComponentInstance fromInstance = new ComponentInstance();
1118 Component fromOriginComponent = new Resource();
1119 List<ComponentInstance> instancesList = new ArrayList<>();
1120 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1121 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1122 Map<String, Component> componentCache = new HashMap<>();
1125 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1126 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1127 cap.setRequirement(new RequirementDataDefinition());
1128 RelationshipInfo relation = new RelationshipInfo();
1129 relation.setRequirementUid("Uid");
1130 relation.setRequirement("requirment");
1131 relation.setCapability("cap");
1132 relation.setCapabilityOwnerId("id1");
1133 cap.setRelation(relation);
1134 relationships.add(cap);
1135 rel.setRelationships(relationships);
1136 rel.setToNode("name");
1137 fromInstance.setUniqueId("name");
1138 fromInstance.setComponentUid("string");
1139 instancesList.add(fromInstance);
1140 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1141 fromOriginComponent.setRequirements(requirements);
1144 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1145 rel, toscaRequirements, componentCache);
1146 Assert.assertNotNull(result);
1150 public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
1152 ComponentInstance fromInstance = new ComponentInstance();
1153 Component fromOriginComponent = new Resource();
1154 List<ComponentInstance> instancesList = new ArrayList<>();
1155 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1156 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1157 Map<String, Component> componentCache = new HashMap<>();
1160 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1161 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1162 cap.setRequirement(new RequirementDataDefinition());
1163 RelationshipInfo relation = new RelationshipInfo();
1164 relation.setRequirementUid("Uid");
1165 relation.setRequirement("requirment");
1166 relation.setCapability("cap");
1167 relation.setCapabilityOwnerId("id1");
1168 cap.setRelation(relation);
1169 relationships.add(cap);
1170 rel.setRelationships(relationships);
1171 rel.setToNode("name");
1172 fromInstance.setUniqueId("name");
1173 fromInstance.setComponentUid("string");
1174 instancesList.add(fromInstance);
1175 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1177 List<RequirementDefinition> defs = new ArrayList<>();
1178 RequirementDefinition def = new RequirementDefinition();
1179 def.setName("requirment");
1180 def.setCapability("cap");
1182 requirements.put("key", defs);
1183 fromOriginComponent.setRequirements(requirements);
1185 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
1186 any(ComponentParametersView.class)))
1187 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1190 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1191 rel, toscaRequirements, componentCache);
1192 Assert.assertNotNull(result);
1196 public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
1197 ComponentInstance fromInstance = new ComponentInstance();
1198 Component fromOriginComponent = new Resource();
1199 List<ComponentInstance> instancesList = new ArrayList<>();
1200 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1201 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1202 Map<String, Component> componentCache = new HashMap<>();
1205 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1206 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1207 cap.setRequirement(new RequirementDataDefinition());
1208 RelationshipInfo relation = new RelationshipInfo();
1209 relation.setRequirementUid("Uid");
1210 relation.setRequirement("requirment");
1211 relation.setCapability("cap");
1212 relation.setCapabilityOwnerId("id1");
1213 cap.setRelation(relation);
1214 relationships.add(cap);
1215 rel.setRelationships(relationships);
1216 rel.setToNode("name");
1217 fromInstance.setUniqueId("name");
1218 fromInstance.setComponentUid("string");
1219 instancesList.add(fromInstance);
1220 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1222 List<RequirementDefinition> defs = new ArrayList<>();
1223 RequirementDefinition def = new RequirementDefinition();
1224 def.setName("requirment");
1225 def.setCapability("cap");
1227 requirements.put("key", defs);
1228 fromOriginComponent.setRequirements(requirements);
1230 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1231 List<CapabilityDefinition> caps = new ArrayList<>();
1232 CapabilityDefinition capdef = new CapabilityDefinition();
1233 capdef.setOwnerId("id");
1234 capdef.setName("name");
1235 capdef.setType("type");
1237 capabilities.put("cap", caps);
1239 fromOriginComponent.setCapabilities(capabilities);
1241 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
1242 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1245 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1246 rel, toscaRequirements, componentCache);
1247 Assert.assertNotNull(result);
1251 public void testAddRequirmentsWithBuildAndAddRequirements() {
1252 ComponentInstance fromInstance = new ComponentInstance();
1253 Component fromOriginComponent = new Resource();
1254 List<ComponentInstance> instancesList = new ArrayList<>();
1255 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1256 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1257 Map<String, Component> componentCache = new HashMap<>();
1260 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1261 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1262 cap.setRequirement(new RequirementDataDefinition());
1263 RelationshipInfo relation = new RelationshipInfo();
1264 relation.setRequirementUid("Uid");
1265 relation.setRequirement("requirment");
1266 relation.setCapability("cap");
1267 relation.setCapabilityOwnerId("id");
1268 cap.setRelation(relation);
1269 relationships.add(cap);
1270 rel.setRelationships(relationships);
1271 rel.setToNode("name");
1272 fromInstance.setUniqueId("name");
1273 fromInstance.setComponentUid("string");
1274 instancesList.add(fromInstance);
1275 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1277 List<RequirementDefinition> defs = new ArrayList<>();
1278 RequirementDefinition def = new RequirementDefinition();
1279 def.setName("requirment");
1280 def.setCapability("cap");
1282 requirements.put("key", defs);
1283 fromOriginComponent.setRequirements(requirements);
1285 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1286 List<CapabilityDefinition> caps = new ArrayList<>();
1287 CapabilityDefinition capdef = new CapabilityDefinition();
1288 capdef.setOwnerId("id");
1289 capdef.setName("cap");
1290 capdef.setPreviousName("before cap");
1291 capdef.setType("type");
1293 capabilities.put("cap", caps);
1294 fromOriginComponent.setCapabilities(capabilities);
1296 Mockito.when(toscaOperationFacade.getToscaElement(any(String.class),
1297 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1300 capabiltyRequirementConvertor
1301 .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString()))
1302 .thenReturn(Either.right(false));
1305 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1306 rel, toscaRequirements, componentCache);
1307 Assert.assertNotNull(result);
1311 public void testBuildAndAddRequirement() throws Exception {
1312 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1313 Component fromOriginComponent = new Resource();
1314 Component toOriginComponent = new Resource();
1315 CapabilityDefinition capability = new CapabilityDefinition();
1316 RequirementDefinition requirement = new RequirementDefinition();
1317 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1318 ComponentInstance toInstance = new ComponentInstance();
1319 Map<String, Component> componentCache = new HashMap<>();
1321 capability.setPath(new ArrayList<>());
1322 capability.setPreviousName("before cap");
1323 reqAndRelationshipPair.setCapability("cap");
1324 requirement.setPath(new ArrayList<>());
1325 requirement.setPreviousName("before req");
1326 reqAndRelationshipPair.setRequirement("req");
1329 capabiltyRequirementConvertor
1330 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString()))
1331 .thenReturn(Either.left("buildCapNameRes"));
1334 capabiltyRequirementConvertor
1335 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString()))
1336 .thenReturn(Either.right(false));
1339 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1340 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1341 Assert.assertNotNull(result);
1345 public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
1346 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1347 Component fromOriginComponent = new Resource();
1348 Component toOriginComponent = new Resource();
1349 CapabilityDefinition capability = new CapabilityDefinition();
1350 RequirementDefinition requirement = new RequirementDefinition();
1351 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1352 ComponentInstance toInstance = new ComponentInstance();
1353 Map<String, Component> componentCache = new HashMap<>();
1355 capability.setPath(new ArrayList<>());
1356 reqAndRelationshipPair.setCapability("cap");
1357 requirement.setPath(new ArrayList<>());
1358 reqAndRelationshipPair.setRequirement("req");
1360 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(any(), any(), any(), any(), any()))
1361 .thenReturn(Either.left("buildCapNameRes"));
1364 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1365 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1366 Assert.assertNotNull(result);
1367 Assert.assertTrue(result);
1371 public void testIsRequirementBelongToRelation() throws Exception {
1373 Component originComponent = new Resource();
1374 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1375 RequirementDefinition requirement = new RequirementDefinition();
1376 String fromInstanceId = "";
1379 requirement.setName("name");
1380 reqAndRelationshipPair.setRequirement("name1");
1382 // test return false
1383 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1384 reqAndRelationshipPair, requirement, fromInstanceId);
1385 Assert.assertNotNull(result);
1389 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1391 Component originComponent = new Service();
1392 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1393 RequirementDefinition requirement = new RequirementDefinition();
1394 String fromInstanceId = "";
1397 // default test return true
1398 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1399 reqAndRelationshipPair, requirement, fromInstanceId);
1400 Assert.assertNotNull(result);
1404 public void testIsRequirementBelongToOwner() throws Exception {
1406 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1407 RequirementDefinition requirement = new RequirementDefinition();
1408 String fromInstanceId = "";
1409 Component originComponent = new Resource();
1412 requirement.setOwnerId("owner1");
1413 reqAndRelationshipPair.setRequirementOwnerId("owner");
1416 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1417 fromInstanceId, originComponent);
1418 Assert.assertNotNull(result);
1422 public void testIsCvfc() throws Exception {
1424 Component component = new Resource();
1427 component = new Service();
1429 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1430 Assert.assertNotNull(result);
1434 public void testConvertCapabilities() throws Exception {
1435 Component component = new Resource();
1436 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1437 Map<String, Component> componentCache = new HashMap<>();
1438 Either<SubstitutionMapping, ToscaError> result;
1440 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
1441 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1443 // default test return isRight
1444 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1446 Assert.assertNotNull(result);
1450 public void testConvertCapabilities_1() throws Exception {
1451 Component component = new Resource();
1452 ToscaNodeType nodeType = new ToscaNodeType();
1453 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1454 Either<ToscaNodeType, ToscaError> result;
1456 Map<String, ToscaCapability> capabilities = new HashMap<>();
1457 capabilities.put("key", new ToscaCapability());
1460 result = Deencapsulation
1461 .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
1462 Assert.assertNotNull(result);
1466 public void testConvertToNodeTemplateArtifacts() throws Exception {
1467 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1468 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1469 art.setFile("test_file");
1470 art.setType("test_type");
1471 Map<String, ToscaTemplateArtifact> result;
1472 container.put("test_art", art);
1473 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1474 Assert.assertNotNull(result);
1475 Assert.assertTrue(MapUtils.isNotEmpty(result));
1476 Assert.assertTrue(result.get("test_art").getFile().equals("test_file"));
1477 Assert.assertTrue(result.get("test_art").getType().equals("test_type"));
1481 public void testGetProxyNodeTypeInterfacesNoInterfaces() {
1482 Component service = new Service();
1483 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1484 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1485 Assert.assertFalse(proxyNodeTypeInterfaces.isPresent());
1489 public void testGetProxyNodeTypeInterfaces() {
1490 Component service = getTestComponent();
1491 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1492 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1493 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1494 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1495 Assert.assertNotNull(componentInterfaces);
1500 public void testGetProxyNodeTypePropertiesComponentNull() {
1501 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1502 testSubject.getProxyNodeTypeProperties(null, DATA_TYPES);
1503 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1507 public void testGetProxyNodeTypePropertiesNoProperties() {
1508 Component service = new Service();
1509 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1510 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1511 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1515 public void testGetProxyNodeTypeProperties() {
1516 Component service = getTestComponent();
1517 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1518 createMockProperty("componentPropInt", null)));
1519 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1520 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1521 Assert.assertTrue(proxyNodeTypeProperties.isPresent());
1522 Map<String, ToscaProperty> componentProperties = proxyNodeTypeProperties.get();
1523 Assert.assertNotNull(componentProperties);
1524 Assert.assertEquals(2, componentProperties.size());
1528 public void testAddInputsToPropertiesNoInputs() {
1529 Component service = getTestComponent();
1530 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1531 createMockProperty("componentPropInt", null)));
1532 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1533 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1535 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1536 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1537 testSubject.addInputsToProperties(DATA_TYPES, null, proxyNodeTypeProperties);
1538 Assert.assertNotNull(proxyNodeTypeProperties);
1539 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1540 testSubject.addInputsToProperties(DATA_TYPES, new ArrayList<>(), proxyNodeTypeProperties);
1541 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1545 public void testAddInputsToPropertiesWithInputs() {
1546 Component service = getTestComponent();
1547 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1548 createMockProperty("componentPropInt", null)));
1549 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1550 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1551 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1552 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1554 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1555 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1556 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1557 Assert.assertNotNull(proxyNodeTypeProperties);
1558 Assert.assertEquals(4, proxyNodeTypeProperties.size());
1562 public void testAddInputsToPropertiesOnlyInputs() {
1563 Component service = getTestComponent();
1564 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1565 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1566 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1567 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1569 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1570 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1571 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1572 Assert.assertNotNull(proxyNodeTypeProperties);
1573 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1577 public void testOperationImplementationInProxyNodeTypeNotPresent() {
1578 Component service = getTestComponent();
1579 InterfaceDefinition interfaceDefinition =
1580 service.getInterfaces().get("normalizedServiceComponentName-interface");
1581 interfaceDefinition.setOperations(new HashMap<>());
1582 final OperationDataDefinition operation = new OperationDataDefinition();
1583 operation.setName("start");
1584 operation.setDescription("op description");
1585 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
1586 implementation.setArtifactName("createBPMN.bpmn");
1587 operation.setImplementation(implementation);
1588 interfaceDefinition.getOperations().put(operation.getName(), operation);
1589 service.getInterfaces().put("normalizedServiceComponentName-interface", interfaceDefinition);
1590 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1591 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1592 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1593 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1594 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1595 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1596 Assert.assertNotNull(componentInterfaces);
1599 private Component getTestComponent() {
1600 Component component = new Service();
1601 component.setNormalizedName("normalizedServiceComponentName");
1602 InterfaceDefinition addedInterface = new InterfaceDefinition();
1603 addedInterface.setType("com.some.service.or.other.serviceName");
1604 final String interfaceType = "normalizedServiceComponentName-interface";
1605 component.setInterfaces(new HashMap<>());
1606 component.getInterfaces().put(interfaceType, addedInterface);
1610 private PropertyDefinition createMockProperty(String propertyName, String defaultValue){
1611 PropertyDefinition propertyDefinition = new PropertyDefinition();
1612 propertyDefinition.setName(propertyName);
1613 propertyDefinition.setType("string");
1614 propertyDefinition.setDefaultValue(defaultValue);
1615 return propertyDefinition;
1618 private InputDefinition createMockInput(String inputName, String defaultValue){
1619 InputDefinition inputDefinition = new InputDefinition();
1620 inputDefinition.setName(inputName);
1621 inputDefinition.setType("string");
1622 inputDefinition.setDefaultValue(defaultValue);
1623 return inputDefinition;