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)
176 .getInterfacesMap(any(), isNull(), anyMap(), anyMap(), anyBoolean(), anyBoolean());
179 private Resource getNewResource() {
180 Resource resource = new Resource();
181 resource.setUniqueId("resourceUniqueId");
182 List<CategoryDefinition> categories = new ArrayList<>();
183 CategoryDefinition category = new CategoryDefinition();
184 List<SubCategoryDefinition> subcategories = new ArrayList<>();
185 SubCategoryDefinition subcategory = new SubCategoryDefinition();
186 List<DataTypeDefinition> dataTypes = new ArrayList<>();
187 DataTypeDefinition dataType = new DataTypeDefinition();
188 dataType.setName("dataTypeName");
189 dataType.setDerivedFromName("tosca.datatypes.Root");
190 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
194 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
195 dataType.setPropertiesData(propDataList);
196 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
197 .collect(Collectors.toList());
198 dataType.setProperties(propList);
199 dataTypes.add(dataType);
201 subcategory.setName("name");
202 subcategories.add(subcategory);
203 category.setName("name");
204 category.setSubcategories(subcategories);
205 categories.add(category);
207 final List<PropertyDefinition> properties = new ArrayList<>();
208 properties.add(new PropertyDefinition());
209 resource.setProperties(properties);
210 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
211 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
212 resource.setInterfaces(proxyInterfaces);
214 resource.setCategories(categories);
215 resource.setVersion("version");
216 resource.setVendorName("vendorName");
217 resource.setVendorRelease("vendorRelease");
218 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
219 resource.setDataTypes(dataTypes);
224 private Service getNewService() {
225 Service service = new Service();
226 List<CategoryDefinition> categories = new ArrayList<>();
227 CategoryDefinition category = new CategoryDefinition();
228 List<SubCategoryDefinition> subcategories = new ArrayList<>();
229 SubCategoryDefinition subcategory = new SubCategoryDefinition();
231 subcategory.setName("name");
232 subcategories.add(subcategory);
233 category.setName("name");
234 category.setSubcategories(subcategories);
235 categories.add(category);
237 service.setCategories(categories);
238 service.setComponentType(ComponentTypeEnum.SERVICE);
239 service.setServiceType("serviceType");
240 service.setServiceRole("serviceRole");
241 service.setEnvironmentContext("environmentContext");
247 void testExportComponent() {
248 Component component = getNewResource();
249 Either<ToscaRepresentation, ToscaError> result;
251 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
252 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
253 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
254 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
255 .thenReturn(Either.left(Collections.emptyMap()));
257 // default test when component is Resource
258 result = testSubject.exportComponent(component);
259 assertNotNull(result);
261 component = getNewService();
262 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
263 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
264 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
266 // default test when component is Service
267 result = testSubject.exportComponent(component);
268 assertNotNull(result);
272 void testExportComponentInterface() {
273 Resource component = getNewResource();
274 Either<ToscaRepresentation, ToscaError> result;
276 component.setInterfaces(new HashMap<>());
278 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
279 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
280 .thenReturn(Either.left(Collections.emptyMap()));
281 // default test when convertInterfaceNodeType is right
282 result = testSubject.exportComponentInterface(component, false);
283 assertNotNull(result);
285 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
286 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
287 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
289 // default test when convertInterfaceNodeType is left
290 result = testSubject.exportComponentInterface(component, false);
291 assertNotNull(result);
295 void testConvertInterfaceNodeTypeProperties() {
297 Resource component = getNewResource();
299 component.setInterfaces(new HashMap<>());
300 InputDefinition input = new InputDefinition();
301 input.setName(COMPONENT_INPUT_NAME);
302 input.setType(COMPONENT_INPUT_TYPE);
303 component.setInputs(Collections.singletonList(input));
304 PropertyDefinition property = new PropertyDefinition();
305 property.setName(COMPONENT_PROPERTY_NAME);
306 property.setType(COMPONENT_PROPERTY_TYPE);
307 component.setProperties(Collections.singletonList(property));
308 component.setName(RESOURCE_NAME);
309 component.setToscaResourceName(RESOURCE_NAME);
311 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
312 .thenReturn(Either.left(Collections.emptyMap()));
313 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
314 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
315 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
316 any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
318 final var result = testSubject.convertInterfaceNodeType(new HashMap<String, Component>(), component,
319 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
320 assertNotNull(result);
321 assertTrue(result.isLeft());
322 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
323 assertNotNull(nodeTypeMap);
324 assertEquals(1, nodeTypeMap.size());
325 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
326 assertNotNull(toscaNodeType);
327 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
328 // Check if inputs and properties in component are merged properly
329 assertNotNull(propertyMap);
330 assertEquals(1, propertyMap.size());
331 assertFalse(propertyMap.containsKey(COMPONENT_INPUT_NAME));
332 assertTrue(propertyMap.containsKey(COMPONENT_PROPERTY_NAME));
336 void testGetDependencies() {
338 Component component = new Resource();
339 Either<ToscaTemplate, ToscaError> result;
342 result = testSubject.getDependencies(component);
343 assertNotNull(result);
347 void testSetImports() {
348 Resource resource = new Resource();
349 resource.setResourceType(ResourceTypeEnum.PNF);
351 resource.setName("TestResourceName");
352 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
353 ArtifactDefinition artifact = new ArtifactDefinition();
354 artifact.setArtifactName("name.name2");
355 artifactList.put("assettoscatemplate", artifact);
356 resource.setArtifacts(artifactList);
357 resource.setToscaArtifacts(artifactList);
358 ToscaTemplate toscaTemplate = new ToscaTemplate("");
360 ComponentInstance ci = new ComponentInstance();
361 ci.setComponentUid("name");
362 ci.setOriginType(OriginTypeEnum.PNF);
363 ci.setSourceModelUid("modelName");
364 List<ComponentInstance> componentInstanceList = new LinkedList<>();
365 componentInstanceList.add(ci);
366 resource.setComponentInstances(componentInstanceList);
368 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(resource));
370 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
371 result = Deencapsulation.invoke(testSubject, "fillImports", resource, toscaTemplate);
373 verify(toscaOperationFacade, times(1)).getToscaFullElement("name");
374 assertTrue(result.isLeft());
375 ToscaTemplate toscaTemplateRes = result.left().value().left;
376 assertEquals(8, toscaTemplateRes.getImports().size());
377 assertNotNull(toscaTemplateRes.getImports().get(6).get("resource-TestResourceName-interface"));
378 assertNotNull(toscaTemplateRes.getImports().get(7).get("resource-TestResourceName"));
379 assertEquals(1, toscaTemplateRes.getDependencies().size());
380 assertEquals("name.name2", toscaTemplateRes.getDependencies().get(0).getLeft());
384 void testConvertToscaTemplate() throws Exception {
386 final Component component = getNewResource();
387 final ToscaTemplate toscaNode = new ToscaTemplate("");
388 Either<ToscaTemplate, ToscaError> result;
389 final List<ComponentInstance> resourceInstances = new ArrayList<>();
390 final ComponentInstance instance = new ComponentInstance();
392 instance.setOriginType(OriginTypeEnum.SERVICE);
393 instance.setSourceModelUid("targetModelUid");
394 resourceInstances.add(instance);
396 component.setComponentInstances(resourceInstances);
398 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
399 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.right(false));
401 final Map<String, ToscaProperty> map = new HashMap<>();
402 map.put("mock", new ToscaProperty());
403 doReturn(map).when(outputConverter).convert(any(), any());
406 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
407 assertNotNull(result);
411 void testConvertToscaTemplateWhenComponentContainsGroup() throws ToscaConversionException {
412 Component component = getNewResource();
413 ToscaTemplate toscaNode = new ToscaTemplate("");
414 component.setComponentInstances(new ArrayList<>());
416 List<GroupDefinition> groups = new ArrayList<>();
417 GroupDefinition group = new GroupDefinition();
418 List<String> artifacts = new ArrayList<>();
419 artifacts.add("artifact");
420 group.setType("org.openecomp.groups.VfModule");
421 group.setArtifacts(artifacts);
423 component.setGroups(groups);
425 final var input = new InputDefinition();
426 input.setName(COMPONENT_INPUT_NAME);
427 input.setType(COMPONENT_INPUT_TYPE);
428 component.setInputs(Collections.singletonList(input));
430 final var output = new OutputDefinition();
431 output.setName(COMPONENT_OUTPUT_NAME);
432 output.setType(COMPONENT_OUTPUT_TYPE);
433 component.setOutputs(Collections.singletonList(output));
435 Map<String, String[]> substitutionMappingMap = new HashMap<>();
436 String[] array = {"value1", "value2"};
437 substitutionMappingMap.put("key", array);
439 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(),
440 any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
442 when(capabilityRequirementConverter.convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
443 .thenReturn(Either.left(Collections.emptyMap()));
445 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
447 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
449 when(groupExportParser.getGroups(component)).thenReturn(null);
451 final Map<String, ToscaProperty> map = new HashMap<>();
452 map.put("mock", new ToscaProperty());
453 doReturn(map).when(outputConverter).convert(any(), any());
455 // test component contains group
456 final var result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
457 assertNotNull(result);
461 void testConvertToscaTemplateWhenComponentIsService() throws Exception {
462 Component component = getNewService();
463 ToscaTemplate toscaNode = new ToscaTemplate("");
464 Either<ToscaTemplate, ToscaError> result;
465 component.setComponentInstances(new ArrayList<>());
467 List<GroupDefinition> groups = new ArrayList<>();
468 GroupDefinition group = new GroupDefinition();
469 List<String> artifacts = new ArrayList<>();
470 artifacts.add("artifact");
471 group.setType("org.openecomp.groups.VfModule");
472 group.setArtifacts(artifacts);
474 component.setGroups(groups);
476 Map<String, String[]> substitutionMappingMap = new HashMap<>();
477 String[] array = {"value1", "value2"};
478 substitutionMappingMap.put("key", array);
480 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
481 .thenReturn(Either.left(substitutionMappingMap));
483 when(capabilityRequirementConverter
484 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
485 .thenReturn(Either.left(Collections.emptyMap()));
487 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
489 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
490 final Map<String, ToscaProperty> map = new HashMap<>();
491 map.put("mock", new ToscaProperty());
492 doReturn(map).when(outputConverter).convert(any(), any());
494 // test component contains group
495 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
496 assertNotNull(result);
500 void testConvertMetadata_1() {
502 Component component = getNewResource();
503 boolean isInstance = true;
504 ComponentInstance componentInstance = new ComponentInstance();
505 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
506 componentInstance.setSourceModelInvariant("targetModelInvariant");
509 Map<String, String> result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
510 assertNotNull(result);
514 void testFillImports() {
516 Component component = getNewService();
517 ToscaTemplate toscaTemplate = new ToscaTemplate("");
518 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
520 ComponentInstance instance = new ComponentInstance();
521 List<ComponentInstance> resourceInstances = new ArrayList<>();
522 instance.setComponentUid("name");
523 resourceInstances.add(instance);
524 component.setComponentInstances(resourceInstances);
525 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
526 ArtifactDefinition artifact = new ArtifactDefinition();
527 artifact.setArtifactName("name.name2");
528 toscaArtifacts.put("assettoscatemplate", artifact);
529 component.setToscaArtifacts(toscaArtifacts);
531 when(toscaOperationFacade.getToscaFullElement(any(String.class)))
532 .thenReturn(Either.left(component));
534 Resource baseType = getNewResource();
535 Map<String, ArtifactDefinition> baseTypeToscaArtifacts = new HashMap<>();
536 ArtifactDefinition baseTypeArtifact = new ArtifactDefinition();
537 baseTypeArtifact.setArtifactName("typeA");
538 baseTypeToscaArtifacts.put("assettoscatemplate", baseTypeArtifact);
539 baseType.setToscaArtifacts(baseTypeToscaArtifacts);
541 component.setDerivedFromGenericType("org.typeA");
542 component.setDerivedFromGenericVersion("1.0");
543 when(toscaOperationFacade.getByToscaResourceNameAndVersion("org.typeA", "1.0", null)).thenReturn(Either.left(baseType));
546 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
547 assertNotNull(result);
551 void testCreateDependency() {
553 Map<String, Component> componentCache = new HashMap<>();
554 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
555 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
556 ComponentInstance ci = new ComponentInstance();
557 Component component = getNewResource();
559 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
560 ArtifactDefinition artifact = new ArtifactDefinition();
561 artifact.setArtifactName("name.name2");
562 toscaArtifacts.put("assettoscatemplate", artifact);
563 component.setToscaArtifacts(toscaArtifacts);
564 ci.setComponentUid("name");
565 ci.setOriginType(OriginTypeEnum.ServiceProxy);
566 ci.setSourceModelUid("modelName");
568 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(component));
570 when(toscaOperationFacade.getToscaFullElement("modelName")).thenReturn(Either.left(new Service()));
573 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
574 assertFalse(componentCache.isEmpty());
578 void testGetInterfaceFilename() {
579 String artifactName = "artifact.name";
583 result = ToscaExportHandler.getInterfaceFilename(artifactName);
584 assertNotNull(result);
588 void testConvertNodeType() {
589 Component component = new Resource();
590 ToscaTemplate toscaNode = new ToscaTemplate("");
591 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
592 Either<ToscaTemplate, ToscaError> result;
594 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
595 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
596 .thenReturn(Either.left(Collections.emptyMap()));
598 result = Deencapsulation
599 .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
600 assertNotNull(result);
604 void testConvertInterfaceNodeType() {
605 Component component = getNewResource();
606 ToscaTemplate toscaNode = new ToscaTemplate("");
607 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
608 Either<ToscaTemplate, ToscaError> result;
609 List<InputDefinition> inputs = new ArrayList<>();
610 inputs.add(new InputDefinition());
611 component.setInputs(inputs);
613 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
614 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
615 .thenReturn(Either.left(Collections.emptyMap()));
617 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
618 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
621 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
623 assertNotNull(result);
627 void testConvertReqCapAndTypeName() {
628 Component component = new Resource();
629 ToscaTemplate toscaNode = new ToscaTemplate("");
630 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
631 ToscaNodeType toscaNodeType = new ToscaNodeType();
632 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
633 Either<ToscaTemplate, ToscaError> result;
636 capabilityRequirementConverter
637 .convertCapabilities(anyMap(), any(Resource.class), anyMap()))
638 .thenReturn(new HashMap<>());
640 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
641 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
644 result = Deencapsulation
645 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
646 toscaNodeType, dataTypes);
647 assertNotNull(result);
649 component = new Service();
651 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
652 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
654 // test when component is service
655 result = Deencapsulation
656 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
657 toscaNodeType, dataTypes);
658 assertNotNull(result);
662 void testConvertNodeTemplatesWhenComponentIsService() {
663 final Component component = getNewService();
664 final List<ComponentInstance> componentInstances = new ArrayList<>();
665 final Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
666 final Map<String, Component> componentCache = new HashMap<>();
667 final Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
668 final ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
669 final Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
670 final Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
671 final List<ComponentInstanceInput> inputs = new ArrayList<>();
672 final ComponentInstanceInput componentInstanceInput = new ComponentInstanceInput();
673 componentInstanceInput.setUniqueId("uuid");
674 inputs.add(componentInstanceInput);
675 componentInstancesInputs.put("uuid", inputs);
676 final List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
677 final RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
678 reldef.setFromNode("node");
679 resourceInstancesRelations.add(reldef);
680 component.setComponentInstancesRelations(resourceInstancesRelations);
682 final ComponentInstance instance = new ComponentInstance();
683 instance.setUniqueId("id");
684 instance.setComponentUid("uid");
685 instance.setOriginType(OriginTypeEnum.ServiceProxy);
686 final List<GroupInstance> groupInstances = new ArrayList<>();
687 final GroupInstance groupInst = new GroupInstance();
688 final List<String> artifacts = new ArrayList<>();
689 artifacts.add("artifact");
690 groupInst.setArtifacts(artifacts);
691 groupInst.setType("type");
692 groupInstances.add(groupInst);
693 instance.setGroupInstances(groupInstances);
695 final List<PropertyDefinition> properties = new ArrayList<>();
696 properties.add(new PropertyDefinition());
697 instance.setProperties(properties);
699 instance.setUniqueId("uuid");
700 instance.setDescription("desc");
701 instance.setSourceModelUid("sourceModelUid");
703 componentInstances.add(instance);
705 component.setComponentInstances(componentInstances);
707 component.setComponentInstancesInputs(componentInstancesInputs);
708 component.setInvariantUUID("uuid");
709 component.setUUID("uuid");
710 component.setDescription("desc");
711 component.setUniqueId("uid");
713 componentCache.put("uid", component);
715 final List<ComponentInstanceProperty> componentInstanceProperties = new ArrayList<>();
716 componentInstanceProperties.add(new ComponentInstanceProperty());
718 componentInstancesProperties.put("uuid", componentInstanceProperties);
719 component.setComponentInstancesProperties(componentInstancesProperties);
721 final Map<String, List<ComponentInstanceAttribute>> componentInstancesAttributes = new HashMap<>();
722 final List<ComponentInstanceAttribute> componentInstanceAttributes = new ArrayList<>();
723 final ComponentInstanceAttribute componentInstanceAttribute = new ComponentInstanceAttribute();
724 componentInstanceAttribute.setDefaultValue("def value");
725 componentInstanceAttributes.add(componentInstanceAttribute);
727 componentInstancesAttributes.put("uuid", componentInstanceAttributes);
728 component.setComponentInstancesAttributes(componentInstancesAttributes);
730 ComponentInstanceProperty cip = new ComponentInstanceProperty();
731 cip.setInstanceUniqueId("id");
733 List<ComponentInstanceProperty> list = new ArrayList<>();
736 componentInstancesProperties.put("id", list);
737 component.setComponentInstancesProperties(componentInstancesProperties);
739 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
740 when(capabilityRequirementConverter
741 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
742 .thenReturn(Either.left(new ToscaNodeTemplate()));
743 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
744 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
745 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class), any(ToscaNodeType.class)))
746 .thenReturn(Either.left(new ToscaNodeType()));
747 when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
748 when(toscaOperationFacade.getToscaFullElement("sourceModelUid")).thenReturn(Either.left(component));
749 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
750 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(getNewResource()));
752 final Map<String, String[]> substitutionMappingMap = new HashMap<>();
753 final String[] array = {"value1", "value2"};
754 substitutionMappingMap.put("key", array);
755 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
756 .thenReturn(Either.left(substitutionMappingMap));
758 when(capabilityRequirementConverter
759 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
760 .thenReturn(Either.left(Collections.emptyMap()));
763 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
764 assertNotNull(toscaRepresentationToscaErrorEither);
769 void testConvertNodeTemplatesWhenComponentIsResource() {
770 final Resource component = getNewResource();
771 component.setResourceType(VF);
772 final List<ComponentInstance> componentInstances = new ArrayList<>();
773 final Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
774 final Map<String, Component> componentCache = new HashMap<>();
775 final Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
776 final ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
777 final Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
778 final Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
779 final List<ComponentInstanceInput> inputs = new ArrayList<>();
780 final ComponentInstanceInput componentInstanceInput = new ComponentInstanceInput();
781 componentInstanceInput.setUniqueId("uuid");
782 inputs.add(componentInstanceInput);
783 componentInstancesInputs.put("uuid", inputs);
784 final List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
785 final RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
786 reldef.setFromNode("node");
787 resourceInstancesRelations.add(reldef);
788 component.setComponentInstancesRelations(resourceInstancesRelations);
790 final ComponentInstance instance = new ComponentInstance();
791 instance.setUniqueId("id");
792 instance.setComponentUid("uid");
793 instance.setOriginType(OriginTypeEnum.VFC);
794 final List<GroupInstance> groupInstances = new ArrayList<>();
795 final GroupInstance groupInst = new GroupInstance();
796 final List<String> artifacts = new ArrayList<>();
797 artifacts.add("artifact");
798 groupInst.setArtifacts(artifacts);
799 groupInst.setType("type");
800 groupInstances.add(groupInst);
801 instance.setGroupInstances(groupInstances);
803 final List<PropertyDefinition> properties = new ArrayList<>();
804 properties.add(new PropertyDefinition());
805 instance.setProperties(properties);
806 component.setProperties(properties);
808 instance.setUniqueId("uuid");
809 instance.setDescription("desc");
810 instance.setSourceModelUid("sourceModelUid");
811 final Map<String, ArtifactDefinition> artifactList = new HashMap<>();
812 final ArtifactDefinition artifact = new ArtifactDefinition();
813 artifact.setArtifactName("name.name2");
814 artifactList.put("assettoscatemplate", artifact);
815 instance.setArtifacts(artifactList);
817 Map<String, ToscaArtifactDataDefinition> toscaArtifactDataDefinitionMap = new HashMap<>();
818 toscaArtifactDataDefinitionMap.put("assettoscatemplate", new ToscaArtifactDataDefinition());
819 instance.setToscaArtifacts(toscaArtifactDataDefinitionMap);
821 componentInstances.add(instance);
823 component.setComponentInstances(componentInstances);
825 component.setComponentInstancesInputs(componentInstancesInputs);
826 component.setInvariantUUID("uuid");
827 component.setUUID("uuid");
828 component.setDescription("desc");
829 component.setUniqueId("uid");
831 componentCache.put("uid", component);
833 final List<ComponentInstanceProperty> componentInstanceProperties = new ArrayList<>();
834 componentInstanceProperties.add(new ComponentInstanceProperty());
836 componentInstancesProperties.put("uuid", componentInstanceProperties);
837 component.setComponentInstancesProperties(componentInstancesProperties);
839 final Map<String, List<ComponentInstanceAttribute>> componentInstancesAttributes = new HashMap<>();
840 final List<ComponentInstanceAttribute> componentInstanceAttributes = new ArrayList<>();
841 final ComponentInstanceAttribute componentInstanceAttribute = new ComponentInstanceAttribute();
842 componentInstanceAttribute.setDefaultValue("def value");
843 componentInstanceAttributes.add(componentInstanceAttribute);
845 componentInstancesAttributes.put("uuid", componentInstanceAttributes);
846 component.setComponentInstancesAttributes(componentInstancesAttributes);
848 component.setArtifacts(artifactList);
849 component.setToscaArtifacts(artifactList);
851 final List<AttributeDefinition> attributes = new ArrayList<>();
852 final var attribute = new AttributeDefinition();
853 attribute.setName("mock");
854 attributes.add(attribute);
855 component.setAttributes(attributes);
857 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
858 componentInstanceInputs.add(new ComponentInstanceInput());
860 componentInstancesInputs.put("id", componentInstanceInputs);
861 component.setComponentInstancesInputs(componentInstancesInputs);
863 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
864 when(capabilityRequirementConverter
865 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
866 .thenReturn(Either.left(new ToscaNodeTemplate()));
867 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
868 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
869 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class), any(ToscaNodeType.class)))
870 .thenReturn(Either.left(new ToscaNodeType()));
871 when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component));
872 when(toscaOperationFacade.getToscaFullElement("sourceModelUid")).thenReturn(Either.left(component));
873 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
875 Resource newResource = getNewResource();
876 InputDefinition input = new InputDefinition();
877 input.setName(COMPONENT_INPUT_NAME);
878 input.setType(COMPONENT_INPUT_TYPE);
879 newResource.setInputs(Collections.singletonList(input));
881 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(newResource));
883 final Map<String, String[]> substitutionMappingMap = new HashMap<>();
884 final String[] array = {"value1", "value2"};
885 substitutionMappingMap.put("key", array);
886 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
887 .thenReturn(Either.left(substitutionMappingMap));
889 when(capabilityRequirementConverter
890 .convertSubstitutionMappingRequirements(any(Component.class), anyMap()))
891 .thenReturn(Either.left(Collections.emptyMap()));
894 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(newResource);
895 assertNotNull(toscaRepresentationToscaErrorEither);
900 void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() {
901 Component component = getNewResource();
902 List<ComponentInstance> componentInstances = new ArrayList<>();
903 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
904 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
905 Map<String, Component> componentCache = new HashMap<>();
906 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
907 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
908 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
909 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
910 List<ComponentInstanceInput> inputs = new ArrayList<>();
911 inputs.add(new ComponentInstanceInput());
912 componentInstancesInputs.put("key", inputs);
913 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
914 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
915 reldef.setFromNode("node");
916 resourceInstancesRelations.add(reldef);
917 component.setComponentInstancesRelations(resourceInstancesRelations);
919 ComponentInstance instance = new ComponentInstance();
920 instance.setUniqueId("id");
921 instance.setComponentUid("uid");
922 instance.setOriginType(OriginTypeEnum.ServiceProxy);
923 componentInstances.add(instance);
924 component.setComponentInstances(componentInstances);
926 component.setComponentInstancesInputs(componentInstancesInputs);
927 component.setInvariantUUID("uuid");
928 component.setUUID("uuid");
929 component.setDescription("desc");
931 componentCache.put("uid", component);
933 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
934 when(capabilityRequirementConverter
935 .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class)))
936 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
937 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
938 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
939 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
940 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
943 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
944 assertNotNull(toscaRepresentationToscaErrorEither);
948 void testConvetNodeTemplateWhenGetOriginComponentIsRight() {
949 Component component = getNewResource();
950 List<ComponentInstance> componentInstances = new ArrayList<>();
951 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
952 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
953 Map<String, Component> componentCache = new HashMap<>();
954 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
955 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
956 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
957 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
958 List<ComponentInstanceInput> inputs = new ArrayList<>();
959 inputs.add(new ComponentInstanceInput());
960 componentInstancesInputs.put("key", inputs);
961 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
962 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
963 reldef.setFromNode("id");
964 resourceInstancesRelations.add(reldef);
965 component.setComponentInstancesRelations(resourceInstancesRelations);
967 ComponentInstance instance = new ComponentInstance();
968 instance.setUniqueId("id");
969 instance.setComponentUid("uid");
970 instance.setOriginType(OriginTypeEnum.ServiceProxy);
971 componentInstances.add(instance);
972 component.setComponentInstances(componentInstances);
974 component.setComponentInstancesInputs(componentInstancesInputs);
975 component.setInvariantUUID("uuid");
976 component.setUUID("uuid");
977 component.setDescription("desc");
979 final List<AttributeDefinition> attributes = new ArrayList<>();
980 final var attribute = new AttributeDefinition();
981 attribute.setName("mock");
982 attributes.add(attribute);
983 component.setAttributes(attributes);
985 componentCache.put("uid", component);
987 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.right(false));
988 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
989 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
990 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
991 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
994 final Either<ToscaRepresentation, ToscaError> toscaRepresentationToscaErrorEither = testSubject.exportComponent(component);
995 assertNotNull(toscaRepresentationToscaErrorEither);
999 void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
1000 Resource component = getNewResource();
1001 component.setResourceType(VF);
1002 List<ComponentInstance> componentInstances = new ArrayList<>();
1003 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
1004 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
1005 Map<String, Component> componentCache = new HashMap<>();
1006 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1007 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
1008 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
1009 List<ComponentInstanceInput> inputs = new ArrayList<>();
1010 inputs.add(new ComponentInstanceInput());
1011 componentInstancesInputs.put("key", inputs);
1012 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
1013 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1014 reldef.setFromNode("id");
1015 reldef.setToNode("node");
1016 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1017 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1018 relationship.setRelation(new RelationshipInfo());
1019 relationships.add(relationship);
1020 reldef.setRelationships(relationships);
1021 resourceInstancesRelations.add(reldef);
1022 component.setComponentInstancesRelations(resourceInstancesRelations);
1024 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
1025 ArtifactDefinition artifact = new ArtifactDefinition();
1026 artifact.setArtifactName("name.name2");
1027 artifactList.put("assettoscatemplate", artifact);
1028 component.setArtifacts(artifactList);
1029 component.setToscaArtifacts(artifactList);
1031 ComponentInstance instance = new ComponentInstance();
1032 instance.setUniqueId("id");
1033 instance.setComponentUid("id");
1034 instance.setOriginType(OriginTypeEnum.VF);
1035 componentInstances.add(instance);
1036 component.setComponentInstances(componentInstances);
1038 component.setComponentInstancesInputs(componentInstancesInputs);
1039 component.setComponentInstances(componentInstances);
1041 doReturn(Either.left(component)).when(toscaOperationFacade).getToscaFullElement("id");
1042 when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component));
1043 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
1044 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1045 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class),
1046 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1047 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1048 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1051 final Either<ToscaRepresentation, ToscaError> result = testSubject.exportComponent(component);
1052 assertNotNull(result);
1056 void testCreateNodeType() {
1058 Component component = new Resource();
1059 List<String> array = new ArrayList<>();
1061 ((Resource) component).setDerivedFrom(array);
1062 ToscaNodeType result;
1064 // test when component is resource
1065 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
1066 assertNotNull(result);
1068 component = new Service();
1069 // test when component is service
1070 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
1071 assertNotNull(result);
1075 void testCreateProxyInterfaceTypesComponentNotFound() {
1076 Component container = new Service();
1077 Either<Map<String, ToscaNodeType>, ToscaError> result;
1078 List<ComponentInstance> componentInstances = new ArrayList<>();
1079 ComponentInstance instance = new ComponentInstance();
1080 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1081 instance.setSourceModelUid("targetModelUid");
1082 instance.setToscaComponentName("toscaComponentName");
1084 componentInstances.add(instance);
1085 container.setComponentInstances(componentInstances);
1086 when(toscaOperationFacade.getToscaElement(any(String.class),
1087 any(ComponentParametersView.class)))
1088 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1089 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1090 assertTrue(result.isRight());
1094 void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
1095 Component container = new Service();
1096 Either<Map<String, ToscaNodeType>, ToscaError> result;
1097 List<ComponentInstance> componentInstances = new ArrayList<>();
1098 ComponentInstance instance = new ComponentInstance();
1099 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1100 instance.setSourceModelUid("targetModelUid");
1101 instance.setToscaComponentName("toscaComponentName");
1102 componentInstances.add(instance);
1103 container.setComponentInstances(componentInstances);
1105 when(toscaOperationFacade.getToscaElement(any(String.class),
1106 any(ComponentParametersView.class)))
1107 .thenReturn(Either.left(new Resource()));
1108 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
1109 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1110 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1111 assertTrue(result.isRight());
1115 void testCreateProxyInterfaceTypesPositive() {
1116 Component container = new Service();
1117 Either<Map<String, ToscaNodeType>, ToscaError> result;
1118 List<ComponentInstance> componentInstances = new ArrayList<>();
1119 ComponentInstance instance = new ComponentInstance();
1120 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1121 instance.setSourceModelUid("targetModelUid");
1122 instance.setToscaComponentName("toscaComponentName");
1123 componentInstances.add(instance);
1124 container.setComponentInstances(componentInstances);
1126 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap()));
1128 Component proxyResource = new Resource();
1129 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
1130 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
1131 proxyResource.setInterfaces(proxyInterfaces);
1132 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(proxyResource));
1133 when(interfacesOperationsConverter.addInterfaceTypeElement(any(Component.class), anyList()))
1134 .thenReturn(Collections.singletonMap(LOCAL_INTERFACE_TYPE, new HashMap<>()));
1136 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1137 assertNotNull(result);
1138 assertTrue(result.isLeft());
1139 assertEquals(1, result.left().value().size());
1143 void testCreateProxyNodeTypes() {
1144 Map<String, Component> componentCache = new HashMap<>();
1145 Component container = new Resource();
1146 Either<Map<String, ToscaNodeType>, ToscaError> result;
1147 List<ComponentInstance> componentInstances = new ArrayList<>();
1148 ComponentInstance instance = new ComponentInstance();
1149 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1150 instance.setSourceModelUid("targetModelUid");
1152 componentInstances.add(instance);
1153 container.setComponentInstances(componentInstances);
1155 when(toscaOperationFacade.getLatestByName("serviceProxy", null))
1156 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1158 // test when getLatestByName return is right
1159 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1160 assertNotNull(result);
1164 void testCreateServiceSubstitutionNodeTypes() {
1165 Map<String, Component> componentCache = new HashMap<>();
1167 Component referencedService = getNewService();
1168 referencedService.setInvariantUUID("uuid");
1169 referencedService.setUUID("uuid");
1170 referencedService.setUniqueId("targetModelUid");
1171 referencedService.setDescription("desc");
1172 componentCache.put("targetModelUid", referencedService);
1174 Component containerService = new Service();
1175 List<ComponentInstance> componentInstances = new ArrayList<>();
1176 ComponentInstance instance = new ComponentInstance();
1177 instance.setOriginType(OriginTypeEnum.ServiceSubstitution);
1178 instance.setSourceModelUid("targetModelUid");
1180 componentInstances.add(instance);
1181 containerService.setComponentInstances(componentInstances);
1183 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any()))
1184 .thenReturn(Either.left(Collections.emptyMap()));
1185 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1186 when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Service.class),
1187 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1189 ToscaTemplate toscaNode = new ToscaTemplate("1_1");
1191 Deencapsulation.invoke(testSubject, "createServiceSubstitutionNodeTypes", componentCache, containerService, toscaNode);
1192 assertNotNull(toscaNode.getNode_types());
1196 void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
1197 Map<String, Component> componentCache = new HashMap<>();
1198 Component container = new Resource();
1199 Either<Map<String, ToscaNodeType>, ToscaError> result;
1200 List<ComponentInstance> componentInstances = new ArrayList<>();
1201 ComponentInstance instance = new ComponentInstance();
1202 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1203 instance.setSourceModelUid("targetModelUid");
1205 componentInstances.add(instance);
1206 container.setComponentInstances(componentInstances);
1208 when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource()));
1210 ComponentParametersView parameterView = new ComponentParametersView();
1211 parameterView.disableAll();
1212 parameterView.setIgnoreCategories(false);
1214 when(toscaOperationFacade.getToscaElement(any(String.class),
1215 any(ComponentParametersView.class)))
1216 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1218 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1220 // test when getLatestByName is left
1221 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1222 assertNotNull(result);
1226 void testCreateProxyNodeType() {
1227 Map<String, Component> componentCache = new HashMap<>();
1228 Component origComponent = new Resource();
1229 Component proxyComponent = new Resource();
1230 ComponentInstance instance = new ComponentInstance();
1231 ToscaNodeType result;
1233 when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>()));
1236 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
1237 proxyComponent, instance);
1238 assertNotNull(result);
1242 void testConvertComponentInstanceRequirements() {
1243 Component component = new Resource();
1244 ComponentInstance componentInstance = new ComponentInstance();
1245 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1246 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
1247 Component originComponent = new Resource();
1248 Map<String, Component> componentCache = new HashMap<>();
1249 Either<ToscaNodeTemplate, ToscaError> result;
1252 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1253 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1254 assertNotNull(result);
1256 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1257 reldef.setFromNode("name");
1258 reldef.setToNode("name1");
1259 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1260 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1261 cap.setRelation(new RelationshipInfo());
1262 relationships.add(cap);
1263 reldef.setRelationships(relationships);
1264 relations.add(reldef);
1265 componentInstance.setUniqueId("name");
1267 List<ComponentInstance> instances = new ArrayList<>();
1268 instances.add(componentInstance);
1269 component.setComponentInstances(instances);
1271 // test when filteredRElations ins't empty
1272 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1273 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1274 assertNotNull(result);
1278 void buildRequirementFailure() {
1279 final Component fromOriginComponent = new Resource();
1280 final ComponentInstance fromInstance = new ComponentInstance();
1281 final String fromInstanceUid = "fromInstanceUid";
1282 fromInstance.setUniqueId(fromInstanceUid);
1283 fromInstance.setComponentUid("componentUid");
1284 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1285 relationshipDefinition.setToNode("wrongNodeUid");
1286 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1287 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1288 relationship.setRequirement(new RequirementDataDefinition());
1289 relationshipList.add(relationship);
1290 relationshipDefinition.setRelationships(relationshipList);
1291 final List<ComponentInstance> instancesList = new ArrayList<>();
1292 instancesList.add(fromInstance);
1293 String expectedError = String
1294 .format("Failed to find a relation from the node %s to the node %s", fromInstance.getName(),
1295 relationshipDefinition.getToNode());
1296 assertThrows(ToscaExportException.class, () ->
1297 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1298 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1301 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1302 instancesList, relationshipDefinition, new HashMap<>());
1303 } catch (Exception e) {
1304 assertTrue(e instanceof ToscaExportException);
1305 assertEquals(expectedError, e.getMessage());
1308 final RelationshipInfo relation = new RelationshipInfo();
1309 final String requirementUid = "Uid";
1310 relation.setRequirementUid(requirementUid);
1311 final String requirementName = "requirementName";
1312 relation.setRequirement(requirementName);
1313 final String capabilityName = "capabilityName";
1314 relation.setCapability(capabilityName);
1315 final String capabilityOwnerId = "capabilityOwnerId";
1316 relation.setCapabilityOwnerId(capabilityOwnerId);
1317 relationship.setRelation(relation);
1319 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1320 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1321 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1322 fromOriginComponent.setRequirements(requirementMap);
1323 relationshipDefinition.setToNode(fromInstanceUid);
1325 expectedError = String
1326 .format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s",
1327 relation.getRequirementUid(), fromOriginComponent.getUniqueId());
1329 assertThrows(ToscaExportException.class, () ->
1330 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1331 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1333 requirementDefinition.setName(requirementName);
1335 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1336 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1338 expectedError = String.format(
1339 "Failed to build substituted name for the requirement %s. "
1340 + "Failed to get an origin component with uniqueId %s",
1341 requirementName, fromInstance.getActualComponentUid());
1342 assertThrows(ToscaExportException.class, () -> Deencapsulation
1343 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1344 relationshipDefinition, new HashMap<>()), expectedError);
1346 final Component toOriginComponent = new Resource();
1347 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1348 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1350 capabilityDefinition.setName(capabilityName);
1351 capabilityDefinition.setOwnerId(capabilityOwnerId);
1352 capabilityDefinition.setType("aType");
1353 final String capabilityPreviousName = "capabilityPreviousName";
1354 capabilityDefinition.setPreviousName(capabilityPreviousName);
1355 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1356 toOriginComponent.setCapabilities(capabilityMap);
1357 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1358 .thenReturn(Either.left(toOriginComponent));
1360 requirementDefinition.setCapability(capabilityName);
1361 relation.setCapability("wrong");
1362 final String requirementPreviousName = "requirementPreviousName";
1363 requirementDefinition.setPreviousName(requirementPreviousName);
1364 requirementDefinition.setPath(new ArrayList<>());
1366 expectedError = String
1367 .format("Failed to find a capability with name %s on a component with uniqueId %s",
1368 relation.getCapability(), fromOriginComponent.getUniqueId());
1370 assertThrows(ToscaExportException.class, () -> Deencapsulation
1371 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1372 relationshipDefinition, new HashMap<>()),
1377 void testBuildRequirement() {
1378 final ComponentInstance fromInstance = new ComponentInstance();
1379 fromInstance.setUniqueId("name");
1380 fromInstance.setComponentUid("string");
1381 final List<ComponentInstance> instancesList = new ArrayList<>();
1383 final Map<String, Component> componentCache = new HashMap<>();
1384 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1385 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1386 relationship.setRequirement(new RequirementDataDefinition());
1387 final RelationshipInfo relation = new RelationshipInfo();
1388 final String requirementUid = "Uid";
1389 relation.setRequirementUid(requirementUid);
1390 final String requirementName = "requirementName";
1391 relation.setRequirement(requirementName);
1392 final String capabilityName = "capabilityName";
1393 relation.setCapability(capabilityName);
1394 final String capabilityOwnerId = "capabilityOwnerId";
1395 relation.setCapabilityOwnerId(capabilityOwnerId);
1396 relationship.setRelation(relation);
1397 relationshipList.add(relationship);
1398 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1399 relationshipDefinition.setRelationships(relationshipList);
1400 relationshipDefinition.setToNode("name");
1401 instancesList.add(fromInstance);
1402 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1403 requirementDefinition.setName(requirementName);
1404 requirementDefinition.setCapability(capabilityName);
1405 final String requirementPreviousName = "requirementPreviousName";
1406 requirementDefinition.setPreviousName(requirementPreviousName);
1407 requirementDefinition.setPath(new ArrayList<>());
1408 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1409 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1410 final Component fromOriginComponent = new Resource();
1411 fromOriginComponent.setRequirements(requirementMap);
1413 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1414 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1415 capabilityDefinition.setName(capabilityName);
1416 capabilityDefinition.setOwnerId(capabilityOwnerId);
1417 final String capabilityPreviousName = "capabilityPreviousName";
1418 capabilityDefinition.setPreviousName(capabilityPreviousName);
1419 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1420 final Component toOriginComponent = new Resource();
1421 toOriginComponent.setCapabilities(capabilityMap);
1423 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1424 .thenReturn(Either.left(toOriginComponent));
1425 final String builtCapabilityName = "builtCapabilityName";
1427 capabilityRequirementConverter
1428 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq(capabilityName), eq(
1429 capabilityPreviousName), any()))
1430 .thenReturn(Either.left(builtCapabilityName));
1432 final String builtRequirementName = "builtRequirementName";
1434 capabilityRequirementConverter
1435 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq(requirementName), eq(
1436 requirementPreviousName), any()))
1437 .thenReturn(Either.left(builtRequirementName));
1439 final Map<String, ToscaTemplateRequirement> actualRequirementMap =
1440 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1441 instancesList, relationshipDefinition, componentCache);
1442 assertNotNull(actualRequirementMap);
1443 assertFalse(actualRequirementMap.isEmpty());
1444 assertTrue(actualRequirementMap.containsKey(builtRequirementName));
1445 final ToscaTemplateRequirement actualToscaTemplateRequirement = actualRequirementMap.get(builtRequirementName);
1446 assertNotNull(actualToscaTemplateRequirement);
1447 assertEquals(builtCapabilityName, actualToscaTemplateRequirement.getCapability());
1449 //to toOriginComponent not found
1450 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1451 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1453 assertThrows(ToscaExportException.class, () -> Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1454 instancesList, relationshipDefinition, componentCache));
1458 void testAddRequirmentsWithBuildAndAddRequirements() {
1459 ComponentInstance fromInstance = new ComponentInstance();
1460 Component fromOriginComponent = new Resource();
1461 List<ComponentInstance> instancesList = new ArrayList<>();
1462 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1463 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1464 Map<String, Component> componentCache = new HashMap<>();
1466 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1467 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1468 cap.setRequirement(new RequirementDataDefinition());
1469 RelationshipInfo relation = new RelationshipInfo();
1470 relation.setRequirementUid("Uid");
1471 relation.setRequirement("requirment");
1472 relation.setCapability("cap");
1473 relation.setCapabilityOwnerId("id");
1474 cap.setRelation(relation);
1475 relationships.add(cap);
1476 rel.setRelationships(relationships);
1477 rel.setToNode("name");
1478 fromInstance.setUniqueId("name");
1479 fromInstance.setComponentUid("string");
1480 instancesList.add(fromInstance);
1481 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1483 List<RequirementDefinition> defs = new ArrayList<>();
1484 RequirementDefinition def = new RequirementDefinition();
1485 def.setName("requirment");
1486 def.setCapability("cap");
1488 requirements.put("key", defs);
1489 fromOriginComponent.setRequirements(requirements);
1491 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1492 List<CapabilityDefinition> caps = new ArrayList<>();
1493 CapabilityDefinition capdef = new CapabilityDefinition();
1494 capdef.setOwnerId("id");
1495 capdef.setName("cap");
1496 capdef.setPreviousName("before cap");
1497 capdef.setType("type");
1499 capabilities.put("cap", caps);
1500 fromOriginComponent.setCapabilities(capabilities);
1502 when(toscaOperationFacade.getToscaElement(any(String.class),
1503 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1506 capabilityRequirementConverter
1507 .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString(), any()))
1508 .thenReturn(Either.right(false));
1510 final String expectedErrorMsg =
1511 String.format("Failed to build a substituted capability name for the capability "
1512 + "with name %s on a component with uniqueId %s",
1513 cap.getRequirement(), fromOriginComponent.getUniqueId());
1515 assertThrows(ToscaExportException.class, () ->
1516 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1517 rel, componentCache), expectedErrorMsg);
1521 void testBuildAndAddRequirement() {
1522 Component fromOriginComponent = new Resource();
1523 Component toOriginComponent = new Resource();
1524 CapabilityDefinition capability = new CapabilityDefinition();
1525 RequirementDefinition requirement = new RequirementDefinition();
1526 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1527 ComponentInstance toInstance = new ComponentInstance();
1528 Map<String, Component> componentCache = new HashMap<>();
1529 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1530 capabilityRequirementRelationship.setRelation(reqAndRelationshipPair);
1531 capability.setPath(new ArrayList<>());
1532 capability.setPreviousName("before cap");
1533 reqAndRelationshipPair.setCapability("cap");
1534 requirement.setPath(new ArrayList<>());
1535 requirement.setPreviousName("before req");
1536 reqAndRelationshipPair.setRequirement("req");
1539 capabilityRequirementConverter
1540 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString(), any()))
1541 .thenReturn(Either.left("buildCapNameRes"));
1544 capabilityRequirementConverter
1545 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString(), any()))
1546 .thenReturn(Either.left("buildReqNameRes"));
1549 final Map<String, ToscaTemplateRequirement> requirementMap =
1550 Deencapsulation.invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent,
1551 capability, requirement, capabilityRequirementRelationship, toInstance, componentCache);
1552 assertNotNull(requirementMap);
1553 assertFalse(requirementMap.isEmpty());
1554 assertTrue(requirementMap.containsKey("buildReqNameRes"));
1555 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get("buildReqNameRes");
1556 assertNotNull(actualToscaTemplateRequirement);
1557 assertEquals("buildCapNameRes", actualToscaTemplateRequirement.getCapability());
1561 void testBuildRequirementBuildSubstitutedNameReturnsValueTwice() {
1562 final Component fromOriginComponent = new Resource();
1563 final Component toOriginComponent = new Resource();
1564 final CapabilityDefinition capability = new CapabilityDefinition();
1565 final RequirementDefinition requirement = new RequirementDefinition();
1566 final RelationshipInfo relationship = new RelationshipInfo();
1567 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1568 capabilityRequirementRelationship.setRelation(relationship);
1569 ComponentInstance toInstance = new ComponentInstance();
1570 Map<String, Component> componentCache = new HashMap<>();
1571 capability.setPath(new ArrayList<>());
1572 relationship.setCapability("cap");
1573 requirement.setPath(new ArrayList<>());
1574 relationship.setRequirement("req");
1576 final String builtCapabilityOrRequirementName = "builtCapabilityOrRequirementName";
1577 when(capabilityRequirementConverter.buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("cap"), any(), any()))
1578 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1579 when(capabilityRequirementConverter.buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("req"), any(), any()))
1580 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1582 final Map<String, ToscaTemplateRequirement> requirementMap = Deencapsulation
1583 .invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent, capability, requirement,
1584 capabilityRequirementRelationship, toInstance, componentCache);
1585 assertNotNull(requirementMap);
1586 assertFalse(requirementMap.isEmpty());
1587 assertTrue(requirementMap.containsKey(builtCapabilityOrRequirementName));
1588 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get(builtCapabilityOrRequirementName);
1589 assertNotNull(actualToscaTemplateRequirement);
1590 assertEquals(builtCapabilityOrRequirementName, actualToscaTemplateRequirement.getCapability());
1594 void testIsRequirementBelongToRelation() {
1596 Component originComponent = new Resource();
1597 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1598 RequirementDefinition requirement = new RequirementDefinition();
1599 String fromInstanceId = "";
1602 requirement.setName("name");
1603 reqAndRelationshipPair.setRequirement("name1");
1605 // test return false
1606 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1607 reqAndRelationshipPair, requirement, fromInstanceId);
1608 assertFalse(result);
1612 void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1614 Component originComponent = new Service();
1615 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1616 RequirementDefinition requirement = new RequirementDefinition();
1617 String fromInstanceId = "";
1620 // default test return true
1621 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1622 reqAndRelationshipPair, requirement, fromInstanceId);
1627 void testIsRequirementBelongToOwner() {
1629 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1630 RequirementDefinition requirement = new RequirementDefinition();
1631 String fromInstanceId = "";
1632 Component originComponent = new Resource();
1635 requirement.setOwnerId("owner1");
1636 reqAndRelationshipPair.setRequirementOwnerId("owner");
1639 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1640 fromInstanceId, originComponent);
1641 assertFalse(result);
1647 Component component = new Service();
1650 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1651 assertFalse(result);
1655 void testConvertCapabilities() {
1656 final Component component = new Resource();
1657 final Map<String, Component> componentCache = new HashMap<>();
1659 final Either<Map<String, String[]>, ToscaError> expectedResult = Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR);
1660 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(componentCache, component))
1661 .thenReturn(expectedResult);
1663 // default test return isRight
1664 final Either<Map<String, String[]>, ToscaError> actualResult =
1665 Deencapsulation.invoke(testSubject, "convertSubstitutionMappingCapabilities", component, componentCache);
1666 assertNotNull(actualResult);
1667 assertEquals(expectedResult, actualResult);
1671 void testConvertCapabilities_1() {
1672 Component component = new Resource();
1673 ToscaNodeType nodeType = new ToscaNodeType();
1674 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1675 Either<ToscaNodeType, ToscaError> result;
1677 Map<String, ToscaCapability> capabilities = new HashMap<>();
1678 capabilities.put("key", new ToscaCapability());
1681 result = Deencapsulation
1682 .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
1683 assertNotNull(result);
1687 void testConvertToNodeTemplateArtifacts() {
1688 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1689 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1690 art.setFile("test_file");
1691 art.setType("test_type");
1692 Map<String, ToscaTemplateArtifact> result;
1693 container.put("test_art", art);
1694 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1695 assertNotNull(result);
1696 assertTrue(MapUtils.isNotEmpty(result));
1697 assertEquals("test_file", result.get("test_art").getFile());
1698 assertEquals("test_type", result.get("test_art").getType());
1701 private Component getTestComponent() {
1702 Component component = new Service();
1703 component.setUniqueId("serviceUniqueId");
1704 component.setNormalizedName("normalizedServiceComponentName");
1705 InterfaceDefinition addedInterface = new InterfaceDefinition();
1706 addedInterface.setType("com.some.service.or.other.serviceName");
1707 final String interfaceType = "normalizedServiceComponentName-interface";
1708 component.setInterfaces(new HashMap<>());
1709 component.getInterfaces().put(interfaceType, addedInterface);
1713 private PropertyDefinition createMockProperty(String propertyName, String defaultValue) {
1714 PropertyDefinition propertyDefinition = new PropertyDefinition();
1715 propertyDefinition.setName(propertyName);
1716 propertyDefinition.setType("string");
1717 propertyDefinition.setDefaultValue(defaultValue);
1718 return propertyDefinition;
1721 private InputDefinition createMockInput(String inputName, String defaultValue) {
1722 InputDefinition inputDefinition = new InputDefinition();
1723 inputDefinition.setName(inputName);
1724 inputDefinition.setType("string");
1725 inputDefinition.setDefaultValue(defaultValue);
1726 return inputDefinition;