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=========================================================
19 * Modifications copyright (c) 2020, Nordix Foundation
20 * ================================================================================
23 package org.openecomp.sdc.be.tosca;
25 import static org.junit.jupiter.api.Assertions.assertEquals;
26 import static org.junit.jupiter.api.Assertions.assertFalse;
27 import static org.junit.jupiter.api.Assertions.assertNotNull;
28 import static org.junit.jupiter.api.Assertions.assertThrows;
29 import static org.junit.jupiter.api.Assertions.assertTrue;
30 import static org.mockito.ArgumentMatchers.any;
31 import static org.mockito.ArgumentMatchers.anyBoolean;
32 import static org.mockito.ArgumentMatchers.anyList;
33 import static org.mockito.ArgumentMatchers.anyMap;
34 import static org.mockito.ArgumentMatchers.anyString;
35 import static org.mockito.ArgumentMatchers.eq;
36 import static org.mockito.ArgumentMatchers.isNull;
37 import static org.mockito.Mockito.doReturn;
38 import static org.mockito.Mockito.times;
39 import static org.mockito.Mockito.verify;
40 import static org.mockito.Mockito.when;
41 import static org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum.VF;
42 import static org.openecomp.sdc.be.tosca.PropertyConvertor.PropertyType.PROPERTY;
44 import fj.data.Either;
45 import java.util.ArrayList;
46 import java.util.Arrays;
47 import java.util.Collections;
48 import java.util.HashMap;
49 import java.util.LinkedList;
50 import java.util.List;
52 import java.util.stream.Collectors;
53 import mockit.Deencapsulation;
54 import org.apache.commons.collections.MapUtils;
55 import org.apache.commons.lang3.tuple.ImmutablePair;
56 import org.apache.commons.lang3.tuple.Triple;
57 import org.junit.jupiter.api.BeforeAll;
58 import org.junit.jupiter.api.BeforeEach;
59 import org.junit.jupiter.api.Test;
60 import org.mockito.InjectMocks;
61 import org.mockito.Mock;
62 import org.mockito.MockitoAnnotations;
63 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
64 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
65 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
66 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
67 import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition;
68 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
69 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
70 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
71 import org.openecomp.sdc.be.exception.ToscaExportException;
72 import org.openecomp.sdc.be.model.ArtifactDefinition;
73 import org.openecomp.sdc.be.model.AttributeDefinition;
74 import org.openecomp.sdc.be.model.CapabilityDefinition;
75 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
76 import org.openecomp.sdc.be.model.Component;
77 import org.openecomp.sdc.be.model.ComponentInstance;
78 import org.openecomp.sdc.be.model.ComponentInstanceAttribute;
79 import org.openecomp.sdc.be.model.ComponentInstanceInput;
80 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
81 import org.openecomp.sdc.be.model.ComponentParametersView;
82 import org.openecomp.sdc.be.model.DataTypeDefinition;
83 import org.openecomp.sdc.be.model.GroupDefinition;
84 import org.openecomp.sdc.be.model.GroupInstance;
85 import org.openecomp.sdc.be.model.InputDefinition;
86 import org.openecomp.sdc.be.model.InterfaceDefinition;
87 import org.openecomp.sdc.be.model.OutputDefinition;
88 import org.openecomp.sdc.be.model.PropertyDefinition;
89 import org.openecomp.sdc.be.model.RelationshipInfo;
90 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
91 import org.openecomp.sdc.be.model.RequirementDefinition;
92 import org.openecomp.sdc.be.model.Resource;
93 import org.openecomp.sdc.be.model.Service;
94 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
95 import org.openecomp.sdc.be.model.category.CategoryDefinition;
96 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
97 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
98 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
99 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
100 import org.openecomp.sdc.be.tosca.exception.ToscaConversionException;
101 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
102 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
103 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
104 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
105 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
106 import org.openecomp.sdc.be.tosca.model.ToscaTemplateArtifact;
107 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
108 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
109 import org.openecomp.sdc.be.tosca.utils.InputConverter;
110 import org.openecomp.sdc.be.tosca.utils.OutputConverter;
111 import org.openecomp.sdc.common.test.BaseConfDependent;
113 class ToscaExportHandlerTest extends BaseConfDependent {
115 private static final String COMPONENT_PROPERTY_NAME = "prop1";
116 private static final String COMPONENT_PROPERTY_TYPE = "string";
117 private static final String COMPONENT_INPUT_NAME = "input1";
118 private static final String COMPONENT_OUTPUT_NAME = "output1";
119 private static final String COMPONENT_INPUT_TYPE = "integer";
120 private static final String COMPONENT_OUTPUT_TYPE = "integer";
121 private static final String RESOURCE_NAME = "resource";
122 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
123 private static final String LOCAL_INTERFACE_TYPE = "Local";
126 private ToscaExportHandler testSubject;
129 private ApplicationDataTypeCache applicationDataTypeCache;
132 private ToscaOperationFacade toscaOperationFacade;
135 private CapabilityRequirementConverter capabilityRequirementConverter;
138 private InputConverter inputConverter;
141 private OutputConverter outputConverter;
144 private GroupExportParser groupExportParser;
147 private PropertyConvertor propertyConvertor;
150 private GroupExportParserImpl groupExportParserImpl;
153 private InterfaceLifecycleOperation interfaceLifecycleOperation;
156 private InterfacesOperationsConverter interfacesOperationsConverter;
159 private PolicyExportParser policyExportParser;
162 private AttributeConverter attributeConverter;
165 public static void setupBeforeClass() {
166 componentName = "catalog-be";
167 confPath = "src/test/resources/config";
173 MockitoAnnotations.openMocks(this);
174 doReturn(new ToscaProperty()).when(propertyConvertor).convertProperty(any(), any(), eq(PROPERTY));
175 doReturn(new HashMap<String, Object>()).when(interfacesOperationsConverter).getInterfacesMap(any(), isNull(), anyMap(), anyMap(), anyBoolean());
178 private Resource getNewResource() {
179 Resource resource = new Resource();
180 resource.setUniqueId("resourceUniqueId");
181 List<CategoryDefinition> categories = new ArrayList<>();
182 CategoryDefinition category = new CategoryDefinition();
183 List<SubCategoryDefinition> subcategories = new ArrayList<>();
184 SubCategoryDefinition subcategory = new SubCategoryDefinition();
185 List<DataTypeDefinition> dataTypes = new ArrayList<>();
186 DataTypeDefinition dataType = new DataTypeDefinition();
187 dataType.setName("dataTypeName");
188 dataType.setDerivedFromName("tosca.datatypes.Root");
189 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
193 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
194 dataType.setPropertiesData(propDataList);
195 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
196 .collect(Collectors.toList());
197 dataType.setProperties(propList);
198 dataTypes.add(dataType);
200 subcategory.setName("name");
201 subcategories.add(subcategory);
202 category.setName("name");
203 category.setSubcategories(subcategories);
204 categories.add(category);
206 final List<PropertyDefinition> properties = new ArrayList<>();
207 properties.add(new PropertyDefinition());
208 resource.setProperties(properties);
209 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
210 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
211 resource.setInterfaces(proxyInterfaces);
213 resource.setCategories(categories);
214 resource.setVersion("version");
215 resource.setVendorName("vendorName");
216 resource.setVendorRelease("vendorRelease");
217 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
218 resource.setDataTypes(dataTypes);
223 private Service getNewService() {
224 Service service = new Service();
225 List<CategoryDefinition> categories = new ArrayList<>();
226 CategoryDefinition category = new CategoryDefinition();
227 List<SubCategoryDefinition> subcategories = new ArrayList<>();
228 SubCategoryDefinition subcategory = new SubCategoryDefinition();
230 subcategory.setName("name");
231 subcategories.add(subcategory);
232 category.setName("name");
233 category.setSubcategories(subcategories);
234 categories.add(category);
236 service.setCategories(categories);
237 service.setComponentType(ComponentTypeEnum.SERVICE);
238 service.setServiceType("serviceType");
239 service.setServiceRole("serviceRole");
240 service.setEnvironmentContext("environmentContext");
246 void testExportComponent() {
247 Component component = getNewResource();
248 Either<ToscaRepresentation, ToscaError> result;
250 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
251 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
252 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
253 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
254 .thenReturn(Either.left(Collections.emptyMap()));
256 // default test when component is Resource
257 result = testSubject.exportComponent(component);
258 assertNotNull(result);
260 component = getNewService();
261 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
262 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
263 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
265 // default test when component is Service
266 result = testSubject.exportComponent(component);
267 assertNotNull(result);
271 void testExportComponentInterface() {
272 Resource component = getNewResource();
273 Either<ToscaRepresentation, ToscaError> result;
275 component.setInterfaces(new HashMap<>());
277 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
278 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
279 .thenReturn(Either.left(Collections.emptyMap()));
280 // default test when convertInterfaceNodeType is right
281 result = testSubject.exportComponentInterface(component, false);
282 assertNotNull(result);
284 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
285 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
286 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
288 // default test when convertInterfaceNodeType is left
289 result = testSubject.exportComponentInterface(component, false);
290 assertNotNull(result);
294 void testConvertInterfaceNodeTypeProperties() {
296 Resource component = getNewResource();
298 component.setInterfaces(new HashMap<>());
299 InputDefinition input = new InputDefinition();
300 input.setName(COMPONENT_INPUT_NAME);
301 input.setType(COMPONENT_INPUT_TYPE);
302 component.setInputs(Collections.singletonList(input));
303 PropertyDefinition property = new PropertyDefinition();
304 property.setName(COMPONENT_PROPERTY_NAME);
305 property.setType(COMPONENT_PROPERTY_TYPE);
306 component.setProperties(Collections.singletonList(property));
307 component.setName(RESOURCE_NAME);
308 component.setToscaResourceName(RESOURCE_NAME);
310 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
311 .thenReturn(Either.left(Collections.emptyMap()));
312 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
313 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
314 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
315 any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
317 final var result = testSubject.convertInterfaceNodeType(new HashMap<String, Component>(), component,
318 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
319 assertNotNull(result);
320 assertTrue(result.isLeft());
321 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
322 assertNotNull(nodeTypeMap);
323 assertEquals(1, nodeTypeMap.size());
324 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
325 assertNotNull(toscaNodeType);
326 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
327 // Check if inputs and properties in component are merged properly
328 assertNotNull(propertyMap);
329 assertEquals(1, propertyMap.size());
330 assertFalse(propertyMap.containsKey(COMPONENT_INPUT_NAME));
331 assertTrue(propertyMap.containsKey(COMPONENT_PROPERTY_NAME));
335 void testGetDependencies() {
337 Component component = new Resource();
338 Either<ToscaTemplate, ToscaError> result;
341 result = testSubject.getDependencies(component);
342 assertNotNull(result);
346 void testSetImports() {
347 Resource resource = new Resource();
348 resource.setResourceType(ResourceTypeEnum.PNF);
350 resource.setName("TestResourceName");
351 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
352 ArtifactDefinition artifact = new ArtifactDefinition();
353 artifact.setArtifactName("name.name2");
354 artifactList.put("assettoscatemplate", artifact);
355 resource.setArtifacts(artifactList);
356 resource.setToscaArtifacts(artifactList);
357 ToscaTemplate toscaTemplate = new ToscaTemplate("");
359 ComponentInstance ci = new ComponentInstance();
360 ci.setComponentUid("name");
361 ci.setOriginType(OriginTypeEnum.PNF);
362 ci.setSourceModelUid("modelName");
363 List<ComponentInstance> componentInstanceList = new LinkedList<>();
364 componentInstanceList.add(ci);
365 resource.setComponentInstances(componentInstanceList);
367 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(resource));
369 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
370 result = Deencapsulation.invoke(testSubject, "fillImports", resource, toscaTemplate);
372 verify(toscaOperationFacade, times(1)).getToscaFullElement("name");
373 assertTrue(result.isLeft());
374 ToscaTemplate toscaTemplateRes = result.left().value().left;
375 assertEquals(8, toscaTemplateRes.getImports().size());
376 assertNotNull(toscaTemplateRes.getImports().get(6).get("resource-TestResourceName-interface"));
377 assertNotNull(toscaTemplateRes.getImports().get(7).get("resource-TestResourceName"));
378 assertEquals(1, toscaTemplateRes.getDependencies().size());
379 assertEquals("name.name2", toscaTemplateRes.getDependencies().get(0).getLeft());
383 void testConvertToscaTemplate() throws Exception {
385 final Component component = getNewResource();
386 final ToscaTemplate toscaNode = new ToscaTemplate("");
387 Either<ToscaTemplate, ToscaError> result;
388 final List<ComponentInstance> resourceInstances = new ArrayList<>();
389 final ComponentInstance instance = new ComponentInstance();
391 instance.setOriginType(OriginTypeEnum.SERVICE);
392 instance.setSourceModelUid("targetModelUid");
393 resourceInstances.add(instance);
395 component.setComponentInstances(resourceInstances);
397 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
398 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.right(false));
400 final Map<String, ToscaProperty> map = new HashMap<>();
401 map.put("mock", new ToscaProperty());
402 doReturn(map).when(outputConverter).convert(any(), any());
405 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
406 assertNotNull(result);
410 void testConvertToscaTemplateWhenComponentContainsGroup() throws ToscaConversionException {
411 Component component = getNewResource();
412 ToscaTemplate toscaNode = new ToscaTemplate("");
413 component.setComponentInstances(new ArrayList<>());
415 List<GroupDefinition> groups = new ArrayList<>();
416 GroupDefinition group = new GroupDefinition();
417 List<String> artifacts = new ArrayList<>();
418 artifacts.add("artifact");
419 group.setType("org.openecomp.groups.VfModule");
420 group.setArtifacts(artifacts);
422 component.setGroups(groups);
424 final var input = new InputDefinition();
425 input.setName(COMPONENT_INPUT_NAME);
426 input.setType(COMPONENT_INPUT_TYPE);
427 component.setInputs(Collections.singletonList(input));
429 final var output = new OutputDefinition();
430 output.setName(COMPONENT_OUTPUT_NAME);
431 output.setType(COMPONENT_OUTPUT_TYPE);
432 component.setOutputs(Collections.singletonList(output));
434 Map<String, String[]> substitutionMappingMap = new HashMap<>();
435 String[] array = {"value1", "value2"};
436 substitutionMappingMap.put("key", array);
438 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(),
439 any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
441 when(capabilityRequirementConverter.convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
442 .thenReturn(Either.left(Collections.emptyMap()));
444 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
446 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
448 when(groupExportParser.getGroups(component)).thenReturn(null);
450 final Map<String, ToscaProperty> map = new HashMap<>();
451 map.put("mock", new ToscaProperty());
452 doReturn(map).when(outputConverter).convert(any(), any());
454 // test component contains group
455 final var result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
456 assertNotNull(result);
460 void testConvertToscaTemplateWhenComponentIsService() throws Exception {
461 Component component = getNewService();
462 ToscaTemplate toscaNode = new ToscaTemplate("");
463 Either<ToscaTemplate, ToscaError> result;
464 component.setComponentInstances(new ArrayList<>());
466 List<GroupDefinition> groups = new ArrayList<>();
467 GroupDefinition group = new GroupDefinition();
468 List<String> artifacts = new ArrayList<>();
469 artifacts.add("artifact");
470 group.setType("org.openecomp.groups.VfModule");
471 group.setArtifacts(artifacts);
473 component.setGroups(groups);
475 Map<String, String[]> substitutionMappingMap = new HashMap<>();
476 String[] array = {"value1", "value2"};
477 substitutionMappingMap.put("key", array);
479 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
480 .thenReturn(Either.left(substitutionMappingMap));
482 when(capabilityRequirementConverter
483 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
484 .thenReturn(Either.left(Collections.emptyMap()));
486 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
488 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
489 final Map<String, ToscaProperty> map = new HashMap<>();
490 map.put("mock", new ToscaProperty());
491 doReturn(map).when(outputConverter).convert(any(), any());
493 // test component contains group
494 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
495 assertNotNull(result);
499 void testConvertMetadata_1() {
501 Component component = getNewResource();
502 boolean isInstance = true;
503 ComponentInstance componentInstance = new ComponentInstance();
504 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
505 componentInstance.setSourceModelInvariant("targetModelInvariant");
508 Map<String, String> result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
509 assertNotNull(result);
513 void testFillImports() {
515 Component component = getNewService();
516 ToscaTemplate toscaTemplate = new ToscaTemplate("");
517 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
519 ComponentInstance instance = new ComponentInstance();
520 List<ComponentInstance> resourceInstances = new ArrayList<>();
521 instance.setComponentUid("name");
522 resourceInstances.add(instance);
523 component.setComponentInstances(resourceInstances);
524 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
525 ArtifactDefinition artifact = new ArtifactDefinition();
526 artifact.setArtifactName("name.name2");
527 toscaArtifacts.put("assettoscatemplate", artifact);
528 component.setToscaArtifacts(toscaArtifacts);
530 when(toscaOperationFacade.getToscaFullElement(any(String.class)))
531 .thenReturn(Either.left(component));
533 Resource baseType = getNewResource();
534 Map<String, ArtifactDefinition> baseTypeToscaArtifacts = new HashMap<>();
535 ArtifactDefinition baseTypeArtifact = new ArtifactDefinition();
536 baseTypeArtifact.setArtifactName("typeA");
537 baseTypeToscaArtifacts.put("assettoscatemplate", baseTypeArtifact);
538 baseType.setToscaArtifacts(baseTypeToscaArtifacts);
540 component.setDerivedFromGenericType("org.typeA");
541 component.setDerivedFromGenericVersion("1.0");
542 when(toscaOperationFacade.getByToscaResourceNameAndVersion("org.typeA", "1.0", null)).thenReturn(Either.left(baseType));
545 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
546 assertNotNull(result);
550 void testCreateDependency() {
552 Map<String, Component> componentCache = new HashMap<>();
553 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
554 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
555 ComponentInstance ci = new ComponentInstance();
556 Component component = getNewResource();
558 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
559 ArtifactDefinition artifact = new ArtifactDefinition();
560 artifact.setArtifactName("name.name2");
561 toscaArtifacts.put("assettoscatemplate", artifact);
562 component.setToscaArtifacts(toscaArtifacts);
563 ci.setComponentUid("name");
564 ci.setOriginType(OriginTypeEnum.ServiceProxy);
565 ci.setSourceModelUid("modelName");
567 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(component));
569 when(toscaOperationFacade.getToscaFullElement("modelName")).thenReturn(Either.left(new Service()));
572 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
573 assertFalse(componentCache.isEmpty());
577 void testGetInterfaceFilename() {
578 String artifactName = "artifact.name";
582 result = ToscaExportHandler.getInterfaceFilename(artifactName);
583 assertNotNull(result);
587 void testConvertNodeType() {
588 Component component = new Resource();
589 ToscaTemplate toscaNode = new ToscaTemplate("");
590 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
591 Either<ToscaTemplate, ToscaError> result;
593 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
594 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
595 .thenReturn(Either.left(Collections.emptyMap()));
597 result = Deencapsulation
598 .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
599 assertNotNull(result);
603 void testConvertInterfaceNodeType() {
604 Component component = getNewResource();
605 ToscaTemplate toscaNode = new ToscaTemplate("");
606 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
607 Either<ToscaTemplate, ToscaError> result;
608 List<InputDefinition> inputs = new ArrayList<>();
609 inputs.add(new InputDefinition());
610 component.setInputs(inputs);
612 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
613 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
614 .thenReturn(Either.left(Collections.emptyMap()));
616 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
617 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
620 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
622 assertNotNull(result);
626 void testConvertReqCapAndTypeName() {
627 Component component = new Resource();
628 ToscaTemplate toscaNode = new ToscaTemplate("");
629 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
630 ToscaNodeType toscaNodeType = new ToscaNodeType();
631 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
632 Either<ToscaTemplate, ToscaError> result;
635 capabilityRequirementConverter
636 .convertCapabilities(anyMap(), any(Resource.class), anyMap()))
637 .thenReturn(new HashMap<>());
639 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
640 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
643 result = Deencapsulation
644 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
645 toscaNodeType, dataTypes);
646 assertNotNull(result);
648 component = new Service();
650 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
651 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
653 // test when component is service
654 result = Deencapsulation
655 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
656 toscaNodeType, dataTypes);
657 assertNotNull(result);
661 void testConvertNodeTemplatesWhenComponentIsService() {
662 final Component component = getNewService();
663 final List<ComponentInstance> componentInstances = new ArrayList<>();
664 final Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
665 final Map<String, Component> componentCache = new HashMap<>();
666 final Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
667 final ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
668 final Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
669 final Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
670 final List<ComponentInstanceInput> inputs = new ArrayList<>();
671 final ComponentInstanceInput componentInstanceInput = new ComponentInstanceInput();
672 componentInstanceInput.setUniqueId("uuid");
673 inputs.add(componentInstanceInput);
674 componentInstancesInputs.put("uuid", inputs);
675 final List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
676 final RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
677 reldef.setFromNode("node");
678 resourceInstancesRelations.add(reldef);
679 component.setComponentInstancesRelations(resourceInstancesRelations);
681 final ComponentInstance instance = new ComponentInstance();
682 instance.setUniqueId("id");
683 instance.setComponentUid("uid");
684 instance.setOriginType(OriginTypeEnum.ServiceProxy);
685 final List<GroupInstance> groupInstances = new ArrayList<>();
686 final GroupInstance groupInst = new GroupInstance();
687 final List<String> artifacts = new ArrayList<>();
688 artifacts.add("artifact");
689 groupInst.setArtifacts(artifacts);
690 groupInst.setType("type");
691 groupInstances.add(groupInst);
692 instance.setGroupInstances(groupInstances);
694 final List<PropertyDefinition> properties = new ArrayList<>();
695 properties.add(new PropertyDefinition());
696 instance.setProperties(properties);
698 instance.setUniqueId("uuid");
699 instance.setDescription("desc");
700 instance.setSourceModelUid("sourceModelUid");
702 componentInstances.add(instance);
704 component.setComponentInstances(componentInstances);
706 component.setComponentInstancesInputs(componentInstancesInputs);
707 component.setInvariantUUID("uuid");
708 component.setUUID("uuid");
709 component.setDescription("desc");
710 component.setUniqueId("uid");
712 componentCache.put("uid", component);
714 final List<ComponentInstanceProperty> componentInstanceProperties = new ArrayList<>();
715 componentInstanceProperties.add(new ComponentInstanceProperty());
717 componentInstancesProperties.put("uuid", componentInstanceProperties);
718 component.setComponentInstancesProperties(componentInstancesProperties);
720 final Map<String, List<ComponentInstanceAttribute>> componentInstancesAttributes = new HashMap<>();
721 final List<ComponentInstanceAttribute> componentInstanceAttributes = new ArrayList<>();
722 final ComponentInstanceAttribute componentInstanceAttribute = new ComponentInstanceAttribute();
723 componentInstanceAttribute.setDefaultValue("def value");
724 componentInstanceAttributes.add(componentInstanceAttribute);
726 componentInstancesAttributes.put("uuid", componentInstanceAttributes);
727 component.setComponentInstancesAttributes(componentInstancesAttributes);
729 ComponentInstanceProperty cip = new ComponentInstanceProperty();
730 cip.setInstanceUniqueId("id");
732 List<ComponentInstanceProperty> list = new ArrayList<>();
735 componentInstancesProperties.put("id", list);
736 component.setComponentInstancesProperties(componentInstancesProperties);
738 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
739 when(capabilityRequirementConverter
740 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
741 .thenReturn(Either.left(new ToscaNodeTemplate()));
742 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
743 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
744 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class), any(ToscaNodeType.class)))
745 .thenReturn(Either.left(new ToscaNodeType()));
746 when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
747 when(toscaOperationFacade.getToscaFullElement("sourceModelUid")).thenReturn(Either.left(component));
748 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
749 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(getNewResource()));
751 final Map<String, String[]> substitutionMappingMap = new HashMap<>();
752 final String[] array = {"value1", "value2"};
753 substitutionMappingMap.put("key", array);
754 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
755 .thenReturn(Either.left(substitutionMappingMap));
757 when(capabilityRequirementConverter
758 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
759 .thenReturn(Either.left(Collections.emptyMap()));
762 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
763 assertNotNull(toscaRepresentationToscaErrorEither);
768 void testConvertNodeTemplatesWhenComponentIsResource() {
769 final Resource component = getNewResource();
770 component.setResourceType(VF);
771 final List<ComponentInstance> componentInstances = new ArrayList<>();
772 final Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
773 final Map<String, Component> componentCache = new HashMap<>();
774 final Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
775 final ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
776 final Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
777 final Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
778 final List<ComponentInstanceInput> inputs = new ArrayList<>();
779 final ComponentInstanceInput componentInstanceInput = new ComponentInstanceInput();
780 componentInstanceInput.setUniqueId("uuid");
781 inputs.add(componentInstanceInput);
782 componentInstancesInputs.put("uuid", inputs);
783 final List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
784 final RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
785 reldef.setFromNode("node");
786 resourceInstancesRelations.add(reldef);
787 component.setComponentInstancesRelations(resourceInstancesRelations);
789 final ComponentInstance instance = new ComponentInstance();
790 instance.setUniqueId("id");
791 instance.setComponentUid("uid");
792 instance.setOriginType(OriginTypeEnum.VFC);
793 final List<GroupInstance> groupInstances = new ArrayList<>();
794 final GroupInstance groupInst = new GroupInstance();
795 final List<String> artifacts = new ArrayList<>();
796 artifacts.add("artifact");
797 groupInst.setArtifacts(artifacts);
798 groupInst.setType("type");
799 groupInstances.add(groupInst);
800 instance.setGroupInstances(groupInstances);
802 final List<PropertyDefinition> properties = new ArrayList<>();
803 properties.add(new PropertyDefinition());
804 instance.setProperties(properties);
805 component.setProperties(properties);
807 instance.setUniqueId("uuid");
808 instance.setDescription("desc");
809 instance.setSourceModelUid("sourceModelUid");
810 final Map<String, ArtifactDefinition> artifactList = new HashMap<>();
811 final ArtifactDefinition artifact = new ArtifactDefinition();
812 artifact.setArtifactName("name.name2");
813 artifactList.put("assettoscatemplate", artifact);
814 instance.setArtifacts(artifactList);
816 Map<String, ToscaArtifactDataDefinition> toscaArtifactDataDefinitionMap = new HashMap<>();
817 toscaArtifactDataDefinitionMap.put("assettoscatemplate", new ToscaArtifactDataDefinition());
818 instance.setToscaArtifacts(toscaArtifactDataDefinitionMap);
820 componentInstances.add(instance);
822 component.setComponentInstances(componentInstances);
824 component.setComponentInstancesInputs(componentInstancesInputs);
825 component.setInvariantUUID("uuid");
826 component.setUUID("uuid");
827 component.setDescription("desc");
828 component.setUniqueId("uid");
830 componentCache.put("uid", component);
832 final List<ComponentInstanceProperty> componentInstanceProperties = new ArrayList<>();
833 componentInstanceProperties.add(new ComponentInstanceProperty());
835 componentInstancesProperties.put("uuid", componentInstanceProperties);
836 component.setComponentInstancesProperties(componentInstancesProperties);
838 final Map<String, List<ComponentInstanceAttribute>> componentInstancesAttributes = new HashMap<>();
839 final List<ComponentInstanceAttribute> componentInstanceAttributes = new ArrayList<>();
840 final ComponentInstanceAttribute componentInstanceAttribute = new ComponentInstanceAttribute();
841 componentInstanceAttribute.setDefaultValue("def value");
842 componentInstanceAttributes.add(componentInstanceAttribute);
844 componentInstancesAttributes.put("uuid", componentInstanceAttributes);
845 component.setComponentInstancesAttributes(componentInstancesAttributes);
847 component.setArtifacts(artifactList);
848 component.setToscaArtifacts(artifactList);
850 final List<AttributeDefinition> attributes = new ArrayList<>();
851 final var attribute = new AttributeDefinition();
852 attribute.setName("mock");
853 attributes.add(attribute);
854 component.setAttributes(attributes);
856 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
857 componentInstanceInputs.add(new ComponentInstanceInput());
859 componentInstancesInputs.put("id", componentInstanceInputs);
860 component.setComponentInstancesInputs(componentInstancesInputs);
862 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
863 when(capabilityRequirementConverter
864 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
865 .thenReturn(Either.left(new ToscaNodeTemplate()));
866 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
867 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
868 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class), any(ToscaNodeType.class)))
869 .thenReturn(Either.left(new ToscaNodeType()));
870 when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
871 when(toscaOperationFacade.getToscaFullElement("sourceModelUid")).thenReturn(Either.left(component));
872 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
874 Resource newResource = getNewResource();
875 InputDefinition input = new InputDefinition();
876 input.setName(COMPONENT_INPUT_NAME);
877 input.setType(COMPONENT_INPUT_TYPE);
878 newResource.setInputs(Collections.singletonList(input));
880 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(newResource));
882 final Map<String, String[]> substitutionMappingMap = new HashMap<>();
883 final String[] array = {"value1", "value2"};
884 substitutionMappingMap.put("key", array);
885 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
886 .thenReturn(Either.left(substitutionMappingMap));
888 when(capabilityRequirementConverter
889 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
890 .thenReturn(Either.left(Collections.emptyMap()));
893 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(newResource);
894 assertNotNull(toscaRepresentationToscaErrorEither);
899 void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() {
900 Component component = getNewResource();
901 List<ComponentInstance> componentInstances = new ArrayList<>();
902 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
903 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
904 Map<String, Component> componentCache = new HashMap<>();
905 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
906 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
907 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
908 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
909 List<ComponentInstanceInput> inputs = new ArrayList<>();
910 inputs.add(new ComponentInstanceInput());
911 componentInstancesInputs.put("key", inputs);
912 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
913 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
914 reldef.setFromNode("node");
915 resourceInstancesRelations.add(reldef);
916 component.setComponentInstancesRelations(resourceInstancesRelations);
918 ComponentInstance instance = new ComponentInstance();
919 instance.setUniqueId("id");
920 instance.setComponentUid("uid");
921 instance.setOriginType(OriginTypeEnum.ServiceProxy);
922 componentInstances.add(instance);
923 component.setComponentInstances(componentInstances);
925 component.setComponentInstancesInputs(componentInstancesInputs);
926 component.setInvariantUUID("uuid");
927 component.setUUID("uuid");
928 component.setDescription("desc");
930 componentCache.put("uid", component);
932 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
933 when(capabilityRequirementConverter
934 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
935 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
936 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
937 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
938 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
939 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
942 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
943 assertNotNull(toscaRepresentationToscaErrorEither);
947 void testConvetNodeTemplateWhenGetOriginComponentIsRight() {
948 Component component = getNewResource();
949 List<ComponentInstance> componentInstances = new ArrayList<>();
950 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
951 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
952 Map<String, Component> componentCache = new HashMap<>();
953 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
954 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
955 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
956 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
957 List<ComponentInstanceInput> inputs = new ArrayList<>();
958 inputs.add(new ComponentInstanceInput());
959 componentInstancesInputs.put("key", inputs);
960 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
961 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
962 reldef.setFromNode("id");
963 resourceInstancesRelations.add(reldef);
964 component.setComponentInstancesRelations(resourceInstancesRelations);
966 ComponentInstance instance = new ComponentInstance();
967 instance.setUniqueId("id");
968 instance.setComponentUid("uid");
969 instance.setOriginType(OriginTypeEnum.ServiceProxy);
970 componentInstances.add(instance);
971 component.setComponentInstances(componentInstances);
973 component.setComponentInstancesInputs(componentInstancesInputs);
974 component.setInvariantUUID("uuid");
975 component.setUUID("uuid");
976 component.setDescription("desc");
978 final List<AttributeDefinition> attributes = new ArrayList<>();
979 final var attribute = new AttributeDefinition();
980 attribute.setName("mock");
981 attributes.add(attribute);
982 component.setAttributes(attributes);
984 componentCache.put("uid", component);
986 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.right(false));
987 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
988 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
989 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
990 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
993 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
994 assertNotNull(toscaRepresentationToscaErrorEither);
998 void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
999 Resource component = getNewResource();
1000 component.setResourceType(VF);
1001 List<ComponentInstance> componentInstances = new ArrayList<>();
1002 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
1003 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
1004 Map<String, Component> componentCache = new HashMap<>();
1005 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1006 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
1007 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
1008 List<ComponentInstanceInput> inputs = new ArrayList<>();
1009 inputs.add(new ComponentInstanceInput());
1010 componentInstancesInputs.put("key", inputs);
1011 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
1012 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1013 reldef.setFromNode("id");
1014 reldef.setToNode("node");
1015 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1016 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1017 relationship.setRelation(new RelationshipInfo());
1018 relationships.add(relationship);
1019 reldef.setRelationships(relationships);
1020 resourceInstancesRelations.add(reldef);
1021 component.setComponentInstancesRelations(resourceInstancesRelations);
1023 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
1024 ArtifactDefinition artifact = new ArtifactDefinition();
1025 artifact.setArtifactName("name.name2");
1026 artifactList.put("assettoscatemplate", artifact);
1027 component.setArtifacts(artifactList);
1028 component.setToscaArtifacts(artifactList);
1030 ComponentInstance instance = new ComponentInstance();
1031 instance.setUniqueId("id");
1032 instance.setComponentUid("id");
1033 instance.setOriginType(OriginTypeEnum.VF);
1034 componentInstances.add(instance);
1035 component.setComponentInstances(componentInstances);
1037 component.setComponentInstancesInputs(componentInstancesInputs);
1038 component.setComponentInstances(componentInstances);
1040 doReturn(Either.left(component)).when(toscaOperationFacade).getToscaFullElement("id");
1041 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
1042 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
1043 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1044 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
1045 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1046 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1047 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1050 final Either<ToscaRepresentation, ToscaError> result = testSubject.exportComponent(component);
1051 assertNotNull(result);
1055 void testCreateNodeType() {
1057 Component component = new Resource();
1058 List<String> array = new ArrayList<>();
1060 ((Resource) component).setDerivedFrom(array);
1061 ToscaNodeType result;
1063 // test when component is resource
1064 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
1065 assertNotNull(result);
1067 component = new Service();
1068 // test when component is service
1069 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
1070 assertNotNull(result);
1074 void testCreateProxyInterfaceTypesComponentNotFound() {
1075 Component container = new Service();
1076 Either<Map<String, ToscaNodeType>, ToscaError> result;
1077 List<ComponentInstance> componentInstances = new ArrayList<>();
1078 ComponentInstance instance = new ComponentInstance();
1079 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1080 instance.setSourceModelUid("targetModelUid");
1081 instance.setToscaComponentName("toscaComponentName");
1083 componentInstances.add(instance);
1084 container.setComponentInstances(componentInstances);
1085 when(toscaOperationFacade.getToscaElement(any(String.class),
1086 any(ComponentParametersView.class)))
1087 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1088 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1089 assertTrue(result.isRight());
1093 void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
1094 Component container = new Service();
1095 Either<Map<String, ToscaNodeType>, ToscaError> result;
1096 List<ComponentInstance> componentInstances = new ArrayList<>();
1097 ComponentInstance instance = new ComponentInstance();
1098 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1099 instance.setSourceModelUid("targetModelUid");
1100 instance.setToscaComponentName("toscaComponentName");
1101 componentInstances.add(instance);
1102 container.setComponentInstances(componentInstances);
1104 when(toscaOperationFacade.getToscaElement(any(String.class),
1105 any(ComponentParametersView.class)))
1106 .thenReturn(Either.left(new Resource()));
1107 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
1108 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1109 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1110 assertTrue(result.isRight());
1114 void testCreateProxyInterfaceTypesPositive() {
1115 Component container = new Service();
1116 Either<Map<String, ToscaNodeType>, ToscaError> result;
1117 List<ComponentInstance> componentInstances = new ArrayList<>();
1118 ComponentInstance instance = new ComponentInstance();
1119 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1120 instance.setSourceModelUid("targetModelUid");
1121 instance.setToscaComponentName("toscaComponentName");
1122 componentInstances.add(instance);
1123 container.setComponentInstances(componentInstances);
1125 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
1127 Component proxyResource = new Resource();
1128 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
1129 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
1130 proxyResource.setInterfaces(proxyInterfaces);
1131 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(proxyResource));
1132 when(interfacesOperationsConverter.addInterfaceTypeElement(any(Component.class), anyList()))
1133 .thenReturn(Collections.singletonMap(LOCAL_INTERFACE_TYPE, new HashMap<>()));
1135 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1136 assertNotNull(result);
1137 assertTrue(result.isLeft());
1138 assertEquals(1, result.left().value().size());
1142 void testCreateProxyNodeTypes() {
1143 Map<String, Component> componentCache = new HashMap<>();
1144 Component container = new Resource();
1145 Either<Map<String, ToscaNodeType>, ToscaError> result;
1146 List<ComponentInstance> componentInstances = new ArrayList<>();
1147 ComponentInstance instance = new ComponentInstance();
1148 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1149 instance.setSourceModelUid("targetModelUid");
1151 componentInstances.add(instance);
1152 container.setComponentInstances(componentInstances);
1154 when(toscaOperationFacade.getLatestByName("serviceProxy", null))
1155 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1157 // test when getLatestByName return is right
1158 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1159 assertNotNull(result);
1163 void testCreateServiceSubstitutionNodeTypes() {
1164 Map<String, Component> componentCache = new HashMap<>();
1166 Component referencedService = getNewService();
1167 referencedService.setInvariantUUID("uuid");
1168 referencedService.setUUID("uuid");
1169 referencedService.setUniqueId("targetModelUid");
1170 referencedService.setDescription("desc");
1171 componentCache.put("targetModelUid", referencedService);
1173 Component containerService = new Service();
1174 List<ComponentInstance> componentInstances = new ArrayList<>();
1175 ComponentInstance instance = new ComponentInstance();
1176 instance.setOriginType(OriginTypeEnum.ServiceSubstitution);
1177 instance.setSourceModelUid("targetModelUid");
1179 componentInstances.add(instance);
1180 containerService.setComponentInstances(componentInstances);
1182 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
1183 .thenReturn(Either.left(Collections.emptyMap()));
1184 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1185 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
1186 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1188 ToscaTemplate toscaNode = new ToscaTemplate("1_1");
1190 Deencapsulation.invoke(testSubject, "createServiceSubstitutionNodeTypes", componentCache, containerService, toscaNode);
1191 assertNotNull(toscaNode.getNode_types());
1195 void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
1196 Map<String, Component> componentCache = new HashMap<>();
1197 Component container = new Resource();
1198 Either<Map<String, ToscaNodeType>, ToscaError> result;
1199 List<ComponentInstance> componentInstances = new ArrayList<>();
1200 ComponentInstance instance = new ComponentInstance();
1201 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1202 instance.setSourceModelUid("targetModelUid");
1204 componentInstances.add(instance);
1205 container.setComponentInstances(componentInstances);
1207 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
1209 ComponentParametersView parameterView = new ComponentParametersView();
1210 parameterView.disableAll();
1211 parameterView.setIgnoreCategories(false);
1213 when(toscaOperationFacade.getToscaElement(any(String.class),
1214 any(ComponentParametersView.class)))
1215 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1217 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1219 // test when getLatestByName is left
1220 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1221 assertNotNull(result);
1225 void testCreateProxyNodeType() {
1226 Map<String, Component> componentCache = new HashMap<>();
1227 Component origComponent = new Resource();
1228 Component proxyComponent = new Resource();
1229 ComponentInstance instance = new ComponentInstance();
1230 ToscaNodeType result;
1232 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1235 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
1236 proxyComponent, instance);
1237 assertNotNull(result);
1241 void testConvertComponentInstanceRequirements() {
1242 Component component = new Resource();
1243 ComponentInstance componentInstance = new ComponentInstance();
1244 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1245 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
1246 Component originComponent = new Resource();
1247 Map<String, Component> componentCache = new HashMap<>();
1248 Either<ToscaNodeTemplate, ToscaError> result;
1251 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1252 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1253 assertNotNull(result);
1255 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1256 reldef.setFromNode("name");
1257 reldef.setToNode("name1");
1258 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1259 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1260 cap.setRelation(new RelationshipInfo());
1261 relationships.add(cap);
1262 reldef.setRelationships(relationships);
1263 relations.add(reldef);
1264 componentInstance.setUniqueId("name");
1266 List<ComponentInstance> instances = new ArrayList<>();
1267 instances.add(componentInstance);
1268 component.setComponentInstances(instances);
1270 // test when filteredRElations ins't empty
1271 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1272 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1273 assertNotNull(result);
1277 void buildRequirementFailure() {
1278 final Component fromOriginComponent = new Resource();
1279 final ComponentInstance fromInstance = new ComponentInstance();
1280 final String fromInstanceUid = "fromInstanceUid";
1281 fromInstance.setUniqueId(fromInstanceUid);
1282 fromInstance.setComponentUid("componentUid");
1283 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1284 relationshipDefinition.setToNode("wrongNodeUid");
1285 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1286 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1287 relationship.setRequirement(new RequirementDataDefinition());
1288 relationshipList.add(relationship);
1289 relationshipDefinition.setRelationships(relationshipList);
1290 final List<ComponentInstance> instancesList = new ArrayList<>();
1291 instancesList.add(fromInstance);
1292 String expectedError = String
1293 .format("Failed to find a relation from the node %s to the node %s", fromInstance.getName(),
1294 relationshipDefinition.getToNode());
1295 assertThrows(ToscaExportException.class, () ->
1296 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1297 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1300 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1301 instancesList, relationshipDefinition, new HashMap<>());
1302 } catch (Exception e) {
1303 assertTrue(e instanceof ToscaExportException);
1304 assertEquals(expectedError, e.getMessage());
1307 final RelationshipInfo relation = new RelationshipInfo();
1308 final String requirementUid = "Uid";
1309 relation.setRequirementUid(requirementUid);
1310 final String requirementName = "requirementName";
1311 relation.setRequirement(requirementName);
1312 final String capabilityName = "capabilityName";
1313 relation.setCapability(capabilityName);
1314 final String capabilityOwnerId = "capabilityOwnerId";
1315 relation.setCapabilityOwnerId(capabilityOwnerId);
1316 relationship.setRelation(relation);
1318 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1319 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1320 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1321 fromOriginComponent.setRequirements(requirementMap);
1322 relationshipDefinition.setToNode(fromInstanceUid);
1324 expectedError = String
1325 .format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s",
1326 relation.getRequirementUid(), fromOriginComponent.getUniqueId());
1328 assertThrows(ToscaExportException.class, () ->
1329 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1330 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1332 requirementDefinition.setName(requirementName);
1334 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1335 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1337 expectedError = String.format(
1338 "Failed to build substituted name for the requirement %s. "
1339 + "Failed to get an origin component with uniqueId %s",
1340 requirementName, fromInstance.getActualComponentUid());
1341 assertThrows(ToscaExportException.class, () -> Deencapsulation
1342 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1343 relationshipDefinition, new HashMap<>()), expectedError);
1345 final Component toOriginComponent = new Resource();
1346 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1347 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1349 capabilityDefinition.setName(capabilityName);
1350 capabilityDefinition.setOwnerId(capabilityOwnerId);
1351 capabilityDefinition.setType("aType");
1352 final String capabilityPreviousName = "capabilityPreviousName";
1353 capabilityDefinition.setPreviousName(capabilityPreviousName);
1354 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1355 toOriginComponent.setCapabilities(capabilityMap);
1356 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1357 .thenReturn(Either.left(toOriginComponent));
1359 requirementDefinition.setCapability(capabilityName);
1360 relation.setCapability("wrong");
1361 final String requirementPreviousName = "requirementPreviousName";
1362 requirementDefinition.setPreviousName(requirementPreviousName);
1363 requirementDefinition.setPath(new ArrayList<>());
1365 expectedError = String
1366 .format("Failed to find a capability with name %s on a component with uniqueId %s",
1367 relation.getCapability(), fromOriginComponent.getUniqueId());
1369 assertThrows(ToscaExportException.class, () -> Deencapsulation
1370 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1371 relationshipDefinition, new HashMap<>()),
1376 void testBuildRequirement() {
1377 final ComponentInstance fromInstance = new ComponentInstance();
1378 fromInstance.setUniqueId("name");
1379 fromInstance.setComponentUid("string");
1380 final List<ComponentInstance> instancesList = new ArrayList<>();
1382 final Map<String, Component> componentCache = new HashMap<>();
1383 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1384 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1385 relationship.setRequirement(new RequirementDataDefinition());
1386 final RelationshipInfo relation = new RelationshipInfo();
1387 final String requirementUid = "Uid";
1388 relation.setRequirementUid(requirementUid);
1389 final String requirementName = "requirementName";
1390 relation.setRequirement(requirementName);
1391 final String capabilityName = "capabilityName";
1392 relation.setCapability(capabilityName);
1393 final String capabilityOwnerId = "capabilityOwnerId";
1394 relation.setCapabilityOwnerId(capabilityOwnerId);
1395 relationship.setRelation(relation);
1396 relationshipList.add(relationship);
1397 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1398 relationshipDefinition.setRelationships(relationshipList);
1399 relationshipDefinition.setToNode("name");
1400 instancesList.add(fromInstance);
1401 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1402 requirementDefinition.setName(requirementName);
1403 requirementDefinition.setCapability(capabilityName);
1404 final String requirementPreviousName = "requirementPreviousName";
1405 requirementDefinition.setPreviousName(requirementPreviousName);
1406 requirementDefinition.setPath(new ArrayList<>());
1407 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1408 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1409 final Component fromOriginComponent = new Resource();
1410 fromOriginComponent.setRequirements(requirementMap);
1412 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1413 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1414 capabilityDefinition.setName(capabilityName);
1415 capabilityDefinition.setOwnerId(capabilityOwnerId);
1416 final String capabilityPreviousName = "capabilityPreviousName";
1417 capabilityDefinition.setPreviousName(capabilityPreviousName);
1418 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1419 final Component toOriginComponent = new Resource();
1420 toOriginComponent.setCapabilities(capabilityMap);
1422 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1423 .thenReturn(Either.left(toOriginComponent));
1424 final String builtCapabilityName = "builtCapabilityName";
1426 capabilityRequirementConverter
1427 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq(capabilityName), eq(
1428 capabilityPreviousName), any()))
1429 .thenReturn(Either.left(builtCapabilityName));
1431 final String builtRequirementName = "builtRequirementName";
1433 capabilityRequirementConverter
1434 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq(requirementName), eq(
1435 requirementPreviousName), any()))
1436 .thenReturn(Either.left(builtRequirementName));
1438 final Map<String, ToscaTemplateRequirement> actualRequirementMap =
1439 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1440 instancesList, relationshipDefinition, componentCache);
1441 assertNotNull(actualRequirementMap);
1442 assertFalse(actualRequirementMap.isEmpty());
1443 assertTrue(actualRequirementMap.containsKey(builtRequirementName));
1444 final ToscaTemplateRequirement actualToscaTemplateRequirement = actualRequirementMap.get(builtRequirementName);
1445 assertNotNull(actualToscaTemplateRequirement);
1446 assertEquals(builtCapabilityName, actualToscaTemplateRequirement.getCapability());
1448 //to toOriginComponent not found
1449 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1450 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1452 assertThrows(ToscaExportException.class, () -> Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1453 instancesList, relationshipDefinition, componentCache));
1457 void testAddRequirmentsWithBuildAndAddRequirements() {
1458 ComponentInstance fromInstance = new ComponentInstance();
1459 Component fromOriginComponent = new Resource();
1460 List<ComponentInstance> instancesList = new ArrayList<>();
1461 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1462 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1463 Map<String, Component> componentCache = new HashMap<>();
1465 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1466 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1467 cap.setRequirement(new RequirementDataDefinition());
1468 RelationshipInfo relation = new RelationshipInfo();
1469 relation.setRequirementUid("Uid");
1470 relation.setRequirement("requirment");
1471 relation.setCapability("cap");
1472 relation.setCapabilityOwnerId("id");
1473 cap.setRelation(relation);
1474 relationships.add(cap);
1475 rel.setRelationships(relationships);
1476 rel.setToNode("name");
1477 fromInstance.setUniqueId("name");
1478 fromInstance.setComponentUid("string");
1479 instancesList.add(fromInstance);
1480 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1482 List<RequirementDefinition> defs = new ArrayList<>();
1483 RequirementDefinition def = new RequirementDefinition();
1484 def.setName("requirment");
1485 def.setCapability("cap");
1487 requirements.put("key", defs);
1488 fromOriginComponent.setRequirements(requirements);
1490 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1491 List<CapabilityDefinition> caps = new ArrayList<>();
1492 CapabilityDefinition capdef = new CapabilityDefinition();
1493 capdef.setOwnerId("id");
1494 capdef.setName("cap");
1495 capdef.setPreviousName("before cap");
1496 capdef.setType("type");
1498 capabilities.put("cap", caps);
1499 fromOriginComponent.setCapabilities(capabilities);
1501 when(toscaOperationFacade.getToscaElement(any(String.class),
1502 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1505 capabilityRequirementConverter
1506 .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString(), any()))
1507 .thenReturn(Either.right(false));
1509 final String expectedErrorMsg =
1510 String.format("Failed to build a substituted capability name for the capability "
1511 + "with name %s on a component with uniqueId %s",
1512 cap.getRequirement(), fromOriginComponent.getUniqueId());
1514 assertThrows(ToscaExportException.class, () ->
1515 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1516 rel, componentCache), expectedErrorMsg);
1520 void testBuildAndAddRequirement() {
1521 Component fromOriginComponent = new Resource();
1522 Component toOriginComponent = new Resource();
1523 CapabilityDefinition capability = new CapabilityDefinition();
1524 RequirementDefinition requirement = new RequirementDefinition();
1525 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1526 ComponentInstance toInstance = new ComponentInstance();
1527 Map<String, Component> componentCache = new HashMap<>();
1528 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1529 capabilityRequirementRelationship.setRelation(reqAndRelationshipPair);
1530 capability.setPath(new ArrayList<>());
1531 capability.setPreviousName("before cap");
1532 reqAndRelationshipPair.setCapability("cap");
1533 requirement.setPath(new ArrayList<>());
1534 requirement.setPreviousName("before req");
1535 reqAndRelationshipPair.setRequirement("req");
1538 capabilityRequirementConverter
1539 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString(), any()))
1540 .thenReturn(Either.left("buildCapNameRes"));
1543 capabilityRequirementConverter
1544 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString(), any()))
1545 .thenReturn(Either.left("buildReqNameRes"));
1548 final Map<String, ToscaTemplateRequirement> requirementMap =
1549 Deencapsulation.invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent,
1550 capability, requirement, capabilityRequirementRelationship, toInstance, componentCache);
1551 assertNotNull(requirementMap);
1552 assertFalse(requirementMap.isEmpty());
1553 assertTrue(requirementMap.containsKey("buildReqNameRes"));
1554 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get("buildReqNameRes");
1555 assertNotNull(actualToscaTemplateRequirement);
1556 assertEquals("buildCapNameRes", actualToscaTemplateRequirement.getCapability());
1560 void testBuildRequirementBuildSubstitutedNameReturnsValueTwice() {
1561 final Component fromOriginComponent = new Resource();
1562 final Component toOriginComponent = new Resource();
1563 final CapabilityDefinition capability = new CapabilityDefinition();
1564 final RequirementDefinition requirement = new RequirementDefinition();
1565 final RelationshipInfo relationship = new RelationshipInfo();
1566 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1567 capabilityRequirementRelationship.setRelation(relationship);
1568 ComponentInstance toInstance = new ComponentInstance();
1569 Map<String, Component> componentCache = new HashMap<>();
1570 capability.setPath(new ArrayList<>());
1571 relationship.setCapability("cap");
1572 requirement.setPath(new ArrayList<>());
1573 relationship.setRequirement("req");
1575 final String builtCapabilityOrRequirementName = "builtCapabilityOrRequirementName";
1576 when(capabilityRequirementConverter.buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("cap"), any(), any()))
1577 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1578 when(capabilityRequirementConverter.buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("req"), any(), any()))
1579 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1581 final Map<String, ToscaTemplateRequirement> requirementMap = Deencapsulation
1582 .invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent, capability, requirement,
1583 capabilityRequirementRelationship, toInstance, componentCache);
1584 assertNotNull(requirementMap);
1585 assertFalse(requirementMap.isEmpty());
1586 assertTrue(requirementMap.containsKey(builtCapabilityOrRequirementName));
1587 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get(builtCapabilityOrRequirementName);
1588 assertNotNull(actualToscaTemplateRequirement);
1589 assertEquals(builtCapabilityOrRequirementName, actualToscaTemplateRequirement.getCapability());
1593 void testIsRequirementBelongToRelation() {
1595 Component originComponent = new Resource();
1596 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1597 RequirementDefinition requirement = new RequirementDefinition();
1598 String fromInstanceId = "";
1601 requirement.setName("name");
1602 reqAndRelationshipPair.setRequirement("name1");
1604 // test return false
1605 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1606 reqAndRelationshipPair, requirement, fromInstanceId);
1607 assertFalse(result);
1611 void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1613 Component originComponent = new Service();
1614 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1615 RequirementDefinition requirement = new RequirementDefinition();
1616 String fromInstanceId = "";
1619 // default test return true
1620 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1621 reqAndRelationshipPair, requirement, fromInstanceId);
1626 void testIsRequirementBelongToOwner() {
1628 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1629 RequirementDefinition requirement = new RequirementDefinition();
1630 String fromInstanceId = "";
1631 Component originComponent = new Resource();
1634 requirement.setOwnerId("owner1");
1635 reqAndRelationshipPair.setRequirementOwnerId("owner");
1638 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1639 fromInstanceId, originComponent);
1640 assertFalse(result);
1646 Component component = new Service();
1649 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1650 assertFalse(result);
1654 void testConvertCapabilities() {
1655 final Component component = new Resource();
1656 final Map<String, Component> componentCache = new HashMap<>();
1658 final Either<Map<String, String[]>, ToscaError> expectedResult = Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR);
1659 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(componentCache, component))
1660 .thenReturn(expectedResult);
1662 // default test return isRight
1663 final Either<Map<String, String[]>, ToscaError> actualResult =
1664 Deencapsulation.invoke(testSubject, "convertSubstitutionMappingCapabilities", component, componentCache);
1665 assertNotNull(actualResult);
1666 assertEquals(expectedResult, actualResult);
1670 void testConvertCapabilities_1() {
1671 Component component = new Resource();
1672 ToscaNodeType nodeType = new ToscaNodeType();
1673 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1674 Either<ToscaNodeType, ToscaError> result;
1676 Map<String, ToscaCapability> capabilities = new HashMap<>();
1677 capabilities.put("key", new ToscaCapability());
1680 result = Deencapsulation
1681 .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
1682 assertNotNull(result);
1686 void testConvertToNodeTemplateArtifacts() {
1687 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1688 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1689 art.setFile("test_file");
1690 art.setType("test_type");
1691 Map<String, ToscaTemplateArtifact> result;
1692 container.put("test_art", art);
1693 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1694 assertNotNull(result);
1695 assertTrue(MapUtils.isNotEmpty(result));
1696 assertEquals("test_file", result.get("test_art").getFile());
1697 assertEquals("test_type", result.get("test_art").getType());
1700 private Component getTestComponent() {
1701 Component component = new Service();
1702 component.setUniqueId("serviceUniqueId");
1703 component.setNormalizedName("normalizedServiceComponentName");
1704 InterfaceDefinition addedInterface = new InterfaceDefinition();
1705 addedInterface.setType("com.some.service.or.other.serviceName");
1706 final String interfaceType = "normalizedServiceComponentName-interface";
1707 component.setInterfaces(new HashMap<>());
1708 component.getInterfaces().put(interfaceType, addedInterface);
1712 private PropertyDefinition createMockProperty(String propertyName, String defaultValue) {
1713 PropertyDefinition propertyDefinition = new PropertyDefinition();
1714 propertyDefinition.setName(propertyName);
1715 propertyDefinition.setType("string");
1716 propertyDefinition.setDefaultValue(defaultValue);
1717 return propertyDefinition;
1720 private InputDefinition createMockInput(String inputName, String defaultValue) {
1721 InputDefinition inputDefinition = new InputDefinition();
1722 inputDefinition.setName(inputName);
1723 inputDefinition.setType("string");
1724 inputDefinition.setDefaultValue(defaultValue);
1725 return inputDefinition;