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.hamcrest.CoreMatchers.is;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertThat;
29 import static org.junit.Assert.assertTrue;
30 import static org.junit.jupiter.api.Assertions.assertNotNull;
31 import static org.junit.jupiter.api.Assertions.assertThrows;
32 import static org.mockito.ArgumentMatchers.any;
33 import static org.mockito.ArgumentMatchers.anyBoolean;
34 import static org.mockito.ArgumentMatchers.anyList;
35 import static org.mockito.ArgumentMatchers.anyMap;
36 import static org.mockito.ArgumentMatchers.anyString;
37 import static org.mockito.ArgumentMatchers.eq;
38 import static org.mockito.ArgumentMatchers.isNull;
39 import static org.mockito.Mockito.doReturn;
40 import static org.mockito.Mockito.times;
41 import static org.mockito.Mockito.verify;
42 import static org.mockito.Mockito.when;
43 import static org.openecomp.sdc.be.tosca.PropertyConvertor.PropertyType.PROPERTY;
45 import fj.data.Either;
46 import java.util.ArrayList;
47 import java.util.Arrays;
48 import java.util.Collections;
49 import java.util.HashMap;
50 import java.util.List;
51 import java.util.LinkedList;
53 import java.util.Optional;
54 import java.util.stream.Collectors;
55 import mockit.Deencapsulation;
56 import org.apache.commons.collections.MapUtils;
57 import org.apache.commons.lang3.tuple.ImmutablePair;
58 import org.apache.commons.lang3.tuple.Triple;
59 import org.junit.Assert;
60 import org.junit.Before;
61 import org.junit.Test;
62 import org.mockito.InjectMocks;
63 import org.mockito.Mock;
64 import org.mockito.MockitoAnnotations;
65 import org.openecomp.sdc.be.components.BeConfDependentTest;
66 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
67 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
68 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
69 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
70 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
71 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
72 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
73 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
74 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
75 import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition;
76 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
77 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
78 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
79 import org.openecomp.sdc.be.exception.ToscaExportException;
80 import org.openecomp.sdc.be.model.ArtifactDefinition;
81 import org.openecomp.sdc.be.model.CapabilityDefinition;
82 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
83 import org.openecomp.sdc.be.model.Component;
84 import org.openecomp.sdc.be.model.ComponentInstance;
85 import org.openecomp.sdc.be.model.ComponentInstanceAttribOutput;
86 import org.openecomp.sdc.be.model.ComponentInstanceAttribute;
87 import org.openecomp.sdc.be.model.ComponentInstanceInput;
88 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
89 import org.openecomp.sdc.be.model.ComponentParametersView;
90 import org.openecomp.sdc.be.model.DataTypeDefinition;
91 import org.openecomp.sdc.be.model.GroupDefinition;
92 import org.openecomp.sdc.be.model.GroupInstance;
93 import org.openecomp.sdc.be.model.InputDefinition;
94 import org.openecomp.sdc.be.model.InterfaceDefinition;
95 import org.openecomp.sdc.be.model.OutputDefinition;
96 import org.openecomp.sdc.be.model.PropertyDefinition;
97 import org.openecomp.sdc.be.model.RelationshipInfo;
98 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
99 import org.openecomp.sdc.be.model.RequirementDefinition;
100 import org.openecomp.sdc.be.model.Resource;
101 import org.openecomp.sdc.be.model.Service;
102 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
103 import org.openecomp.sdc.be.model.category.CategoryDefinition;
104 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
105 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
106 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
107 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
108 import org.openecomp.sdc.be.tosca.exception.ToscaConversionException;
109 import org.openecomp.sdc.be.tosca.model.SubstitutionMapping;
110 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
111 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
112 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
113 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
114 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
115 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
116 import org.openecomp.sdc.be.tosca.model.ToscaTemplateArtifact;
117 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
118 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
119 import org.openecomp.sdc.be.tosca.utils.InputConverter;
120 import org.openecomp.sdc.be.tosca.utils.OutputConverter;
122 public class ToscaExportHandlerTest extends BeConfDependentTest {
124 private static final String COMPONENT_PROPERTY_NAME = "prop1";
125 private static final String COMPONENT_PROPERTY_TYPE = "string";
126 private static final String COMPONENT_INPUT_NAME = "input1";
127 private static final String COMPONENT_INPUT_TYPE = "integer";
128 private static final String RESOURCE_NAME = "resource";
129 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
130 private static final Map<String, DataTypeDefinition> DATA_TYPES = new HashMap<>();
133 private ToscaExportHandler testSubject;
136 private ApplicationDataTypeCache dataTypeCache;
139 private ToscaOperationFacade toscaOperationFacade;
142 private CapabilityRequirementConverter capabilityRequirementConverter;
145 private InputConverter inputConverter;
148 private OutputConverter outputConverter;
151 private GroupExportParser groupExportParser;
154 private PropertyConvertor propertyConvertor;
157 private GroupExportParserImpl groupExportParserImpl;
160 private InterfaceLifecycleOperation interfaceLifecycleOperation;
163 private InterfacesOperationsConverter interfacesOperationsConverter;
166 private PolicyExportParser policyExportParser;
169 public void setUpMock() {
170 MockitoAnnotations.initMocks(this);
171 doReturn(new ToscaProperty()).when(propertyConvertor).convertProperty(any(), any(), eq(PROPERTY));
172 doReturn(new HashMap<String, Object>()).when(interfacesOperationsConverter)
173 .getInterfacesMap(any(), isNull(), anyMap(), anyMap(), anyBoolean(), anyBoolean());
176 private Resource getNewResource() {
177 Resource resource = new Resource();
178 List<CategoryDefinition> categories = new ArrayList<>();
179 CategoryDefinition category = new CategoryDefinition();
180 List<SubCategoryDefinition> subcategories = new ArrayList<>();
181 SubCategoryDefinition subcategory = new SubCategoryDefinition();
182 List<DataTypeDefinition> dataTypes = new ArrayList<>();
183 DataTypeDefinition dataType = new DataTypeDefinition();
184 dataType.setName("dataTypeName");
185 dataType.setDerivedFromName("tosca.datatypes.Root");
186 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
190 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
191 dataType.setPropertiesData(propDataList);
192 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
193 .collect(Collectors.toList());
194 dataType.setProperties(propList);
195 dataTypes.add(dataType);
197 subcategory.setName("name");
198 subcategories.add(subcategory);
199 category.setName("name");
200 category.setSubcategories(subcategories);
201 categories.add(category);
203 resource.setCategories(categories);
204 resource.setVersion("version");
205 resource.setVendorName("vendorName");
206 resource.setVendorRelease("vendorRelease");
207 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
208 resource.setDataTypes(dataTypes);
213 private Service getNewService() {
214 Service service = new Service();
215 List<CategoryDefinition> categories = new ArrayList<>();
216 CategoryDefinition category = new CategoryDefinition();
217 List<SubCategoryDefinition> subcategories = new ArrayList<>();
218 SubCategoryDefinition subcategory = new SubCategoryDefinition();
220 subcategory.setName("name");
221 subcategories.add(subcategory);
222 category.setName("name");
223 category.setSubcategories(subcategories);
224 categories.add(category);
226 service.setCategories(categories);
227 service.setComponentType(ComponentTypeEnum.SERVICE);
228 service.setServiceType("serviceType");
229 service.setServiceRole("serviceRole");
230 service.setEnvironmentContext("environmentContext");
236 public void testExportComponent() throws Exception {
237 Component component = getNewResource();
238 Either<ToscaRepresentation, ToscaError> result;
240 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
241 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
242 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
243 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
244 .thenReturn(Either.left(Collections.emptyMap()));
246 // default test when component is Resource
247 result = testSubject.exportComponent(component);
248 Assert.assertNotNull(result);
250 component = getNewService();
251 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
252 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
253 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
255 // default test when component is Service
256 result = testSubject.exportComponent(component);
257 Assert.assertNotNull(result);
261 public void testExportComponentInterface() throws Exception {
262 Component component = getNewResource();
263 Either<ToscaRepresentation, ToscaError> result;
265 ((Resource) component).setInterfaces(new HashMap<>());
267 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
268 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
269 .thenReturn(Either.left(Collections.emptyMap()));
270 // default test when convertInterfaceNodeType is right
271 result = testSubject.exportComponentInterface(component, false);
272 Assert.assertNotNull(result);
274 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
275 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
276 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
278 // default test when convertInterfaceNodeType is left
279 result = testSubject.exportComponentInterface(component, false);
280 Assert.assertNotNull(result);
284 public void testConvertInterfaceNodeTypeProperties() throws Exception {
286 Resource component = getNewResource();
288 component.setInterfaces(new HashMap<>());
289 InputDefinition input = new InputDefinition();
290 input.setName(COMPONENT_INPUT_NAME);
291 input.setType(COMPONENT_INPUT_TYPE);
292 component.setInputs(Collections.singletonList(input));
293 PropertyDefinition property = new PropertyDefinition();
294 property.setName(COMPONENT_PROPERTY_NAME);
295 property.setType(COMPONENT_PROPERTY_TYPE);
296 component.setProperties(Collections.singletonList(property));
297 component.setName(RESOURCE_NAME);
298 component.setToscaResourceName(RESOURCE_NAME);
300 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
301 .thenReturn(Either.left(Collections.emptyMap()));
302 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
303 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
304 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
305 any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
307 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
308 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
309 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
310 Assert.assertNotNull(result);
311 assertThat(result.isLeft(), is(true));
312 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
313 assertThat(nodeTypeMap.size(), is(1));
314 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
315 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
316 // Check if inputs and properties in component are merged properly
317 assertThat(propertyMap.size(), is(2));
318 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
319 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
323 public void testCreateToscaRepresentation() throws Exception {
324 ToscaTemplate toscaTemplate = new ToscaTemplate("");
325 ToscaRepresentation result;
328 result = testSubject.createToscaRepresentation(toscaTemplate);
329 Assert.assertNotNull(result);
333 public void testGetDependencies() throws Exception {
335 Component component = new Resource();
336 Either<ToscaTemplate, ToscaError> result;
339 result = testSubject.getDependencies(component);
340 Assert.assertNotNull(result);
344 public void testSetImports() throws Exception {
345 Resource resource = new Resource();
346 resource.setResourceType(ResourceTypeEnum.PNF);
348 Component component = resource;
349 component.setName("TestResourceName");
350 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
351 ArtifactDefinition artifact = new ArtifactDefinition();
352 artifact.setArtifactName("name.name2");
353 artifactList.put("assettoscatemplate", artifact);
354 component.setArtifacts(artifactList);
355 component.setToscaArtifacts(artifactList);
356 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 component.setComponentInstances(componentInstanceList);
367 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(component));
369 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
370 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
372 verify(toscaOperationFacade, times(1)).getToscaFullElement("name");
373 Assert.assertTrue(result.isLeft());
374 ToscaTemplate toscaTemplateRes = result.left().value().left;
375 Assert.assertEquals(8 , toscaTemplateRes.getImports().size());
376 Assert.assertNotNull(toscaTemplateRes.getImports().get(6).get("resource-TestResourceName-interface"));
377 Assert.assertNotNull(toscaTemplateRes.getImports().get(7).get("resource-TestResourceName"));
378 Assert.assertEquals(1 , toscaTemplateRes.getDependencies().size());
379 Assert.assertEquals("name.name2",toscaTemplateRes.getDependencies().get(0).getLeft());
383 public 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(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
398 when(capabilityRequirementConverter.getOriginComponent(any(Map.class), 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 Assert.assertNotNull(result);
410 public void testConvertToscaTemplateWhenComponentContainsGroup() throws ToscaConversionException {
411 Component component = getNewResource();
412 ToscaTemplate toscaNode = new ToscaTemplate("");
413 Either<ToscaTemplate, ToscaError> result;
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 Map<String, String[]> substitutionMappingMap = new HashMap<>();
426 String[] array = {"value1", "value2"};
427 substitutionMappingMap.put("key", array);
429 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(any(Map.class),
430 any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
432 when(capabilityRequirementConverter.convertSubstitutionMappingRequirements(any(Map.class),
433 any(Component.class), any(SubstitutionMapping.class)))
434 .thenReturn(Either.left(new SubstitutionMapping()));
436 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
438 when(inputConverter.convertInputs(any(List.class), any(Map.class))).thenReturn(new HashMap<>());
440 when(groupExportParser.getGroups(component)).thenReturn(null);
442 final Map<String, ToscaProperty> map = new HashMap<>();
443 map.put("mock", new ToscaProperty());
444 doReturn(map).when(outputConverter).convert(any(), any());
446 // test component contains group
447 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
448 Assert.assertNotNull(result);
452 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
453 Component component = getNewService();
454 ToscaTemplate toscaNode = new ToscaTemplate("");
455 Either<ToscaTemplate, ToscaError> result;
456 component.setComponentInstances(new ArrayList<>());
458 List<GroupDefinition> groups = new ArrayList<>();
459 GroupDefinition group = new GroupDefinition();
460 List<String> artifacts = new ArrayList<>();
461 artifacts.add("artifact");
462 group.setType("org.openecomp.groups.VfModule");
463 group.setArtifacts(artifacts);
465 component.setGroups(groups);
467 Map<String, String[]> substitutionMappingMap = new HashMap<>();
468 String[] array = {"value1", "value2"};
469 substitutionMappingMap.put("key", array);
471 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
472 .thenReturn(Either.left(substitutionMappingMap));
474 when(capabilityRequirementConverter
475 .convertSubstitutionMappingRequirements(anyMap(), any(Component.class), any(SubstitutionMapping.class)))
476 .thenReturn(Either.left(new SubstitutionMapping()));
478 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
480 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
481 final Map<String, ToscaProperty> map = new HashMap<>();
482 map.put("mock", new ToscaProperty());
483 doReturn(map).when(outputConverter).convert(any(), any());
485 // test component contains group
486 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
487 Assert.assertNotNull(result);
491 public void testConvertMetadata_1() throws Exception {
493 Component component = getNewResource();
494 boolean isInstance = true;
495 ComponentInstance componentInstance = new ComponentInstance();
496 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
497 componentInstance.setSourceModelInvariant("targetModelInvariant");
500 Map<String, String> result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
501 Assert.assertNotNull(result);
505 public void testFillImports() throws Exception {
507 Component component = getNewService();
508 ToscaTemplate toscaTemplate = new ToscaTemplate("");
509 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
511 ComponentInstance instance = new ComponentInstance();
512 List<ComponentInstance> resourceInstances = new ArrayList<>();
513 instance.setComponentUid("name");
514 resourceInstances.add(instance);
515 component.setComponentInstances(resourceInstances);
516 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
517 ArtifactDefinition artifact = new ArtifactDefinition();
518 artifact.setArtifactName("name.name2");
519 toscaArtifacts.put("assettoscatemplate", artifact);
520 component.setToscaArtifacts(toscaArtifacts);
522 when(toscaOperationFacade.getToscaFullElement(any(String.class)))
523 .thenReturn(Either.left(component));
525 Resource baseType = getNewResource();
526 Map<String, ArtifactDefinition> baseTypeToscaArtifacts = new HashMap<>();
527 ArtifactDefinition baseTypeArtifact = new ArtifactDefinition();
528 baseTypeArtifact.setArtifactName("typeA");
529 baseTypeToscaArtifacts.put("assettoscatemplate", baseTypeArtifact);
530 baseType.setToscaArtifacts(baseTypeToscaArtifacts);
532 component.setDerivedFromGenericType("org.typeA");
533 component.setDerivedFromGenericVersion("1.0");
534 when(toscaOperationFacade.getByToscaResourceNameAndVersion("org.typeA", "1.0")).thenReturn(Either.left(baseType));
537 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
538 Assert.assertNotNull(result);
542 public void testCreateDependency() throws Exception {
544 Map<String, Component> componentCache = new HashMap<>();
545 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
546 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
547 ComponentInstance ci = new ComponentInstance();
548 Component component = getNewResource();
550 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
551 ArtifactDefinition artifact = new ArtifactDefinition();
552 artifact.setArtifactName("name.name2");
553 toscaArtifacts.put("assettoscatemplate", artifact);
554 component.setToscaArtifacts(toscaArtifacts);
555 ci.setComponentUid("name");
556 ci.setOriginType(OriginTypeEnum.ServiceProxy);
557 ci.setSourceModelUid("modelName");
559 when(toscaOperationFacade.getToscaFullElement("name")).thenReturn(Either.left(component));
561 when(toscaOperationFacade.getToscaFullElement("modelName")).thenReturn(Either.left(new Service()));
564 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
565 Assert.assertFalse(componentCache.isEmpty());
569 public void testGetInterfaceFilename() throws Exception {
570 String artifactName = "artifact.name";
574 result = ToscaExportHandler.getInterfaceFilename(artifactName);
575 Assert.assertNotNull(result);
579 public void testConvertNodeType() throws Exception {
580 Component component = new Resource();
581 ToscaTemplate toscaNode = new ToscaTemplate("");
582 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
583 Either<ToscaTemplate, ToscaError> result;
585 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
586 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
587 .thenReturn(Either.left(Collections.emptyMap()));
589 result = Deencapsulation
590 .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
591 Assert.assertNotNull(result);
595 public void testConvertInterfaceNodeType() throws Exception {
596 Component component = getNewResource();
597 ToscaTemplate toscaNode = new ToscaTemplate("");
598 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
599 Either<ToscaTemplate, ToscaError> result;
600 List<InputDefinition> inputs = new ArrayList<>();
601 inputs.add(new InputDefinition());
602 component.setInputs(inputs);
604 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
605 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
606 .thenReturn(Either.left(Collections.emptyMap()));
608 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
609 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
612 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
614 Assert.assertNotNull(result);
618 public void testConvertReqCapAndTypeName() throws Exception {
619 Component component = new Resource();
620 ToscaTemplate toscaNode = new ToscaTemplate("");
621 Map<String, ToscaNodeType> nodeTypes = new HashMap();
622 ToscaNodeType toscaNodeType = new ToscaNodeType();
623 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
624 Either<ToscaTemplate, ToscaError> result;
627 capabilityRequirementConverter
628 .convertCapabilities(any(Map.class), any(Resource.class), any(Map.class)))
629 .thenReturn(new HashMap<>());
631 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
632 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
635 result = Deencapsulation
636 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
637 toscaNodeType, dataTypes);
638 Assert.assertNotNull(result);
640 component = new Service();
642 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
643 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
645 // test when component is service
646 result = Deencapsulation
647 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
648 toscaNodeType, dataTypes);
649 Assert.assertNotNull(result);
653 public void testConvertNodeTemplates() throws Exception {
654 Component component = getNewResource();
655 List<ComponentInstance> componentInstances = new ArrayList<>();
656 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
657 Map<String, Component> componentCache = new HashMap<>();
658 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
659 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
660 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
661 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
662 List<ComponentInstanceInput> inputs = new ArrayList<>();
663 inputs.add(new ComponentInstanceInput());
664 componentInstancesInputs.put("key", inputs);
665 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
666 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
667 reldef.setFromNode("node");
668 resourceInstancesRelations.add(reldef);
669 component.setComponentInstancesRelations(resourceInstancesRelations);
671 ComponentInstance instance = new ComponentInstance();
672 instance.setUniqueId("id");
673 instance.setComponentUid("uid");
674 instance.setOriginType(OriginTypeEnum.ServiceProxy);
675 List<GroupInstance> groupInstances = new ArrayList<>();
676 GroupInstance groupInst = new GroupInstance();
677 List<String> artifacts = new ArrayList<>();
678 artifacts.add("artifact");
679 groupInst.setArtifacts(artifacts);
680 groupInst.setType("type");
681 groupInstances.add(groupInst);
682 instance.setGroupInstances(groupInstances);
683 componentInstances.add(instance);
685 component.setComponentInstancesInputs(componentInstancesInputs);
686 component.setInvariantUUID("uuid");
687 component.setUUID("uuid");
688 component.setDescription("desc");
690 componentCache.put("uid", component);
692 componentInstancesProperties.put("id", new ArrayList<>());
693 componentInstancesInputs.put("id", new ArrayList<>());
695 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
696 any(ComponentInstance.class))).thenReturn(Either.left(component));
698 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
699 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
700 .thenReturn(Either.left(new ToscaNodeTemplate()));
703 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
704 componentInstancesProperties, new HashMap<>(), componentCache, dataTypes, topologyTemplate);
705 Assert.assertNotNull(result);
709 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
710 Component component = getNewService();
711 List<ComponentInstance> componentInstances = new ArrayList<>();
712 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
713 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
714 Map<String, Component> componentCache = new HashMap<>();
715 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
716 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
717 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
718 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
719 List<ComponentInstanceInput> inputs = new ArrayList<>();
720 inputs.add(new ComponentInstanceInput());
721 componentInstancesInputs.put("key", inputs);
722 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
723 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
724 reldef.setFromNode("node");
725 resourceInstancesRelations.add(reldef);
726 component.setComponentInstancesRelations(resourceInstancesRelations);
728 ComponentInstance instance = new ComponentInstance();
729 instance.setUniqueId("id");
730 instance.setComponentUid("uid");
731 instance.setOriginType(OriginTypeEnum.ServiceProxy);
732 List<GroupInstance> groupInstances = new ArrayList<>();
733 GroupInstance groupInst = new GroupInstance();
734 List<String> artifacts = new ArrayList<>();
735 artifacts.add("artifact");
736 groupInst.setArtifacts(artifacts);
737 groupInst.setType("type");
738 groupInstances.add(groupInst);
739 instance.setGroupInstances(groupInstances);
740 componentInstances.add(instance);
742 component.setComponentInstancesInputs(componentInstancesInputs);
743 component.setInvariantUUID("uuid");
744 component.setUUID("uuid");
745 component.setDescription("desc");
747 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
748 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
749 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
750 path.setPathElements(list);
751 forwardingPaths.put("key", path);
753 ((Service) component).setForwardingPaths(forwardingPaths);
755 componentCache.put("uid", component);
757 componentInstancesProperties.put("id", new ArrayList<>());
758 componentInstancesInterfaces.put("id", new ArrayList<>());
759 componentInstancesInputs.put("id", new ArrayList<>());
761 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
762 any(ComponentInstance.class))).thenReturn(Either.left(component));
764 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
765 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
766 .thenReturn(Either.left(new ToscaNodeTemplate()));
769 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
770 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
771 Assert.assertNotNull(result);
775 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
776 Component component = getNewResource();
777 List<ComponentInstance> componentInstances = new ArrayList<>();
778 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
779 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
780 Map<String, Component> componentCache = new HashMap<>();
781 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
782 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
783 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
784 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
785 List<ComponentInstanceInput> inputs = new ArrayList<>();
786 inputs.add(new ComponentInstanceInput());
787 componentInstancesInputs.put("key", inputs);
788 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
789 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
790 reldef.setFromNode("node");
791 resourceInstancesRelations.add(reldef);
792 component.setComponentInstancesRelations(resourceInstancesRelations);
794 ComponentInstance instance = new ComponentInstance();
795 instance.setUniqueId("id");
796 instance.setComponentUid("uid");
797 instance.setOriginType(OriginTypeEnum.ServiceProxy);
798 componentInstances.add(instance);
800 component.setComponentInstancesInputs(componentInstancesInputs);
801 component.setInvariantUUID("uuid");
802 component.setUUID("uuid");
803 component.setDescription("desc");
805 componentCache.put("uid", component);
807 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
808 any(ComponentInstance.class))).thenReturn(Either.left(component));
810 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
811 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
812 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
815 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
816 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
817 Assert.assertNotNull(result);
821 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
822 Component component = getNewResource();
823 List<ComponentInstance> componentInstances = new ArrayList<>();
824 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
825 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
826 Map<String, Component> componentCache = new HashMap<>();
827 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
828 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
829 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
830 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
831 List<ComponentInstanceInput> inputs = new ArrayList<>();
832 inputs.add(new ComponentInstanceInput());
833 componentInstancesInputs.put("key", inputs);
834 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
835 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
836 reldef.setFromNode("id");
837 resourceInstancesRelations.add(reldef);
838 component.setComponentInstancesRelations(resourceInstancesRelations);
840 ComponentInstance instance = new ComponentInstance();
841 instance.setUniqueId("id");
842 instance.setComponentUid("uid");
843 instance.setOriginType(OriginTypeEnum.ServiceProxy);
844 componentInstances.add(instance);
846 component.setComponentInstancesInputs(componentInstancesInputs);
847 component.setInvariantUUID("uuid");
848 component.setUUID("uuid");
849 component.setDescription("desc");
851 componentCache.put("uid", component);
853 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
854 any(ComponentInstance.class))).thenReturn(Either.right(false));
857 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
858 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
859 Assert.assertNotNull(result);
863 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
864 Component component = new Resource();
865 List<ComponentInstance> componentInstances = new ArrayList<>();
866 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
867 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
868 Map<String, Component> componentCache = new HashMap<>();
869 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
870 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
871 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
872 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
873 List<ComponentInstanceInput> inputs = new ArrayList<>();
874 inputs.add(new ComponentInstanceInput());
875 componentInstancesInputs.put("key", inputs);
876 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
877 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
878 reldef.setFromNode("id");
879 reldef.setToNode("node");
880 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
881 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
882 relationship.setRelation(new RelationshipInfo());
883 relationships.add(relationship);
884 reldef.setRelationships(relationships);
885 resourceInstancesRelations.add(reldef);
886 component.setComponentInstancesRelations(resourceInstancesRelations);
888 ComponentInstance instance = new ComponentInstance();
889 instance.setUniqueId("id");
890 componentInstances.add(instance);
892 component.setComponentInstancesInputs(componentInstancesInputs);
893 component.setComponentInstances(componentInstances);
895 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
896 any(ComponentInstance.class))).thenReturn(Either.left(component));
899 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
900 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
901 Assert.assertNotNull(result);
905 public void testAddComponentInstanceInputs() throws Exception {
907 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
908 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
909 ComponentInstance componentInstance = new ComponentInstance();
910 String instanceUniqueId = "id";
911 Map<String, Object> props = new HashMap<>();
913 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
914 componentInstanceInputs.add(new ComponentInstanceInput());
916 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
919 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
920 instanceUniqueId, props);
924 public void testAddPropertiesOfComponentInstance() throws Exception {
925 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
926 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
927 ComponentInstance componentInstance = new ComponentInstance();
928 String instanceUniqueId = "id";
929 Map<String, Object> props = new HashMap<>();
931 ComponentInstanceProperty cip = new ComponentInstanceProperty();
932 cip.setInstanceUniqueId("id");
934 List<ComponentInstanceProperty> list = new ArrayList<>();
937 componentInstancesProperties.put("id", list);
940 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
941 instanceUniqueId, props);
945 public void testAddPropertiesOfParentComponent() throws Exception {
946 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
947 ComponentInstance componentInstance = new ComponentInstance();
948 Component componentOfInstance = new Resource();
949 Map<String, Object> props = new HashMap<>();
951 List<PropertyDefinition> properties = new ArrayList<>();
952 properties.add(new PropertyDefinition());
954 ((Resource) componentOfInstance).setProperties(properties);
957 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
958 componentOfInstance, props);
962 public void testCreateNodeType() throws Exception {
964 Component component = new Resource();
965 List<String> array = new ArrayList<>();
967 ((Resource) component).setDerivedFrom(array);
968 ToscaNodeType result;
970 // test when component is resource
971 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
972 Assert.assertNotNull(result);
974 component = new Service();
975 // test when component is service
976 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
977 Assert.assertNotNull(result);
981 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
982 Component container = new Service();
983 Either<Map<String, ToscaNodeType>, ToscaError> result;
984 List<ComponentInstance> componentInstances = new ArrayList<>();
985 ComponentInstance instance = new ComponentInstance();
986 instance.setOriginType(OriginTypeEnum.ServiceProxy);
987 instance.setSourceModelUid("targetModelUid");
988 instance.setToscaComponentName("toscaComponentName");
990 componentInstances.add(instance);
991 container.setComponentInstances(componentInstances);
992 when(toscaOperationFacade.getToscaElement(any(String.class),
993 any(ComponentParametersView.class)))
994 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
995 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
996 Assert.assertTrue(result.isRight());
1000 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
1001 Component container = new Service();
1002 Either<Map<String, ToscaNodeType>, ToscaError> result;
1003 List<ComponentInstance> componentInstances = new ArrayList<>();
1004 ComponentInstance instance = new ComponentInstance();
1005 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1006 instance.setSourceModelUid("targetModelUid");
1007 instance.setToscaComponentName("toscaComponentName");
1008 componentInstances.add(instance);
1009 container.setComponentInstances(componentInstances);
1011 when(toscaOperationFacade.getToscaElement(any(String.class),
1012 any(ComponentParametersView.class)))
1013 .thenReturn(Either.left(new Resource()));
1014 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1015 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1016 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1017 Assert.assertTrue(result.isRight());
1021 public void testCreateProxyInterfaceTypesPositive() {
1022 Component container = new Service();
1023 Either<Map<String, ToscaNodeType>, ToscaError> result;
1024 List<ComponentInstance> componentInstances = new ArrayList<>();
1025 ComponentInstance instance = new ComponentInstance();
1026 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1027 instance.setSourceModelUid("targetModelUid");
1028 instance.setToscaComponentName("toscaComponentName");
1029 componentInstances.add(instance);
1030 container.setComponentInstances(componentInstances);
1032 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1033 .thenReturn(Either.left(Collections.emptyMap()));
1035 Component proxyResource = new Resource();
1036 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
1037 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
1038 proxyResource.setInterfaces(proxyInterfaces);
1039 when(toscaOperationFacade.getToscaElement(any(String.class),
1040 any(ComponentParametersView.class)))
1041 .thenReturn(Either.left(proxyResource));
1043 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1044 Assert.assertNotNull(result);
1045 Assert.assertTrue(result.isLeft());
1046 Assert.assertEquals(1, result.left().value().size());
1050 public void testCreateProxyNodeTypes() throws Exception {
1051 Map<String, Component> componentCache = new HashMap<>();
1052 Component container = new Resource();
1053 Either<Map<String, ToscaNodeType>, ToscaError> result;
1054 List<ComponentInstance> componentInstances = new ArrayList<>();
1055 ComponentInstance instance = new ComponentInstance();
1056 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1057 instance.setSourceModelUid("targetModelUid");
1059 componentInstances.add(instance);
1060 container.setComponentInstances(componentInstances);
1062 when(toscaOperationFacade.getLatestByName("serviceProxy"))
1063 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1065 // test when getLatestByName return is right
1066 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1067 Assert.assertNotNull(result);
1071 public void testCreateServiceSubstitutionNodeTypes() throws Exception {
1072 Map<String, Component> componentCache = new HashMap<>();
1074 Component referencedService = getNewService();
1075 referencedService.setInvariantUUID("uuid");
1076 referencedService.setUUID("uuid");
1077 referencedService.setUniqueId("targetModelUid");
1078 referencedService.setDescription("desc");
1079 componentCache.put("targetModelUid", referencedService);
1081 Component containerService = new Service();
1082 List<ComponentInstance> componentInstances = new ArrayList<>();
1083 ComponentInstance instance = new ComponentInstance();
1084 instance.setOriginType(OriginTypeEnum.ServiceSubstitution);
1085 instance.setSourceModelUid("targetModelUid");
1087 componentInstances.add(instance);
1088 containerService.setComponentInstances(componentInstances);
1090 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1091 .thenReturn(Either.left(Collections.emptyMap()));
1092 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1093 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
1094 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1096 ToscaTemplate toscaNode = new ToscaTemplate("1_1");
1098 Deencapsulation.invoke(testSubject, "createServiceSubstitutionNodeTypes", componentCache, containerService, toscaNode);
1099 Assert.assertNotNull(toscaNode.getNode_types());
1103 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
1104 Map<String, Component> componentCache = new HashMap<>();
1105 Component container = new Resource();
1106 Either<Map<String, ToscaNodeType>, ToscaError> result;
1107 List<ComponentInstance> componentInstances = new ArrayList<>();
1108 ComponentInstance instance = new ComponentInstance();
1109 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1110 instance.setSourceModelUid("targetModelUid");
1112 componentInstances.add(instance);
1113 container.setComponentInstances(componentInstances);
1115 when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
1117 ComponentParametersView parameterView = new ComponentParametersView();
1118 parameterView.disableAll();
1119 parameterView.setIgnoreCategories(false);
1121 when(toscaOperationFacade.getToscaElement(any(String.class),
1122 any(ComponentParametersView.class)))
1123 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1125 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1127 // test when getLatestByName is left
1128 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1129 Assert.assertNotNull(result);
1133 public void testCreateProxyNodeType() throws Exception {
1134 Map<String, Component> componentCache = new HashMap<>();
1135 Component origComponent = new Resource();
1136 Component proxyComponent = new Resource();
1137 ComponentInstance instance = new ComponentInstance();
1138 ToscaNodeType result;
1140 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1143 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
1144 proxyComponent, instance);
1145 Assert.assertNotNull(result);
1149 public void testConvertComponentInstanceRequirements() throws Exception {
1150 Component component = new Resource();
1151 ComponentInstance componentInstance = new ComponentInstance();
1152 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1153 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
1154 Component originComponent = new Resource();
1155 Map<String, Component> componentCache = new HashMap<>();
1156 Either<ToscaNodeTemplate, ToscaError> result;
1159 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1160 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1161 Assert.assertNotNull(result);
1163 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1164 reldef.setFromNode("name");
1165 reldef.setToNode("name1");
1166 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1167 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1168 cap.setRelation(new RelationshipInfo());
1169 relationships.add(cap);
1170 reldef.setRelationships(relationships);
1171 relations.add(reldef);
1172 componentInstance.setUniqueId("name");
1174 List<ComponentInstance> instances = new ArrayList<>();
1175 instances.add(componentInstance);
1176 component.setComponentInstances(instances);
1178 // test when filteredRElations ins't empty
1179 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1180 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1181 Assert.assertNotNull(result);
1185 public void buildRequirementFailure() {
1186 final Component fromOriginComponent = new Resource();
1187 final ComponentInstance fromInstance = new ComponentInstance();
1188 final String fromInstanceUid = "fromInstanceUid";
1189 fromInstance.setUniqueId(fromInstanceUid);
1190 fromInstance.setComponentUid("componentUid");
1191 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1192 relationshipDefinition.setToNode("wrongNodeUid");
1193 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1194 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1195 relationship.setRequirement(new RequirementDataDefinition());
1196 relationshipList.add(relationship);
1197 relationshipDefinition.setRelationships(relationshipList);
1198 final List<ComponentInstance> instancesList = new ArrayList<>();
1199 instancesList.add(fromInstance);
1200 String expectedError = String
1201 .format("Failed to find a relation from the node %s to the node %s", fromInstance.getName(),
1202 relationshipDefinition.getToNode());
1203 assertThrows(ToscaExportException.class, () ->
1204 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1205 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1208 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1209 instancesList, relationshipDefinition, new HashMap<>());
1210 } catch (Exception e) {
1211 assertTrue(e instanceof ToscaExportException);
1212 assertEquals(expectedError, e.getMessage());
1215 final RelationshipInfo relation = new RelationshipInfo();
1216 final String requirementUid = "Uid";
1217 relation.setRequirementUid(requirementUid);
1218 final String requirementName = "requirementName";
1219 relation.setRequirement(requirementName);
1220 final String capabilityName = "capabilityName";
1221 relation.setCapability(capabilityName);
1222 final String capabilityOwnerId = "capabilityOwnerId";
1223 relation.setCapabilityOwnerId(capabilityOwnerId);
1224 relationship.setRelation(relation);
1226 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1227 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1228 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1229 fromOriginComponent.setRequirements(requirementMap);
1230 relationshipDefinition.setToNode(fromInstanceUid);
1232 expectedError = String
1233 .format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s",
1234 relation.getRequirementUid(), fromOriginComponent.getUniqueId());
1237 assertThrows(ToscaExportException.class, () ->
1238 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1239 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1241 requirementDefinition.setName(requirementName);
1243 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1244 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1246 expectedError = String.format(
1247 "Failed to build substituted name for the requirement %s. "
1248 + "Failed to get an origin component with uniqueId %s",
1249 requirementName, fromInstance.getActualComponentUid());
1250 assertThrows(ToscaExportException.class, () -> Deencapsulation
1251 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1252 relationshipDefinition, new HashMap<>()), expectedError);
1254 final Component toOriginComponent = new Resource();
1255 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1256 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1258 capabilityDefinition.setName(capabilityName);
1259 capabilityDefinition.setOwnerId(capabilityOwnerId);
1260 capabilityDefinition.setType("aType");
1261 final String capabilityPreviousName = "capabilityPreviousName";
1262 capabilityDefinition.setPreviousName(capabilityPreviousName);
1263 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1264 toOriginComponent.setCapabilities(capabilityMap);
1265 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1266 .thenReturn(Either.left(toOriginComponent));
1269 requirementDefinition.setCapability(capabilityName);
1270 relation.setCapability("wrong");
1271 final String requirementPreviousName = "requirementPreviousName";
1272 requirementDefinition.setPreviousName(requirementPreviousName);
1273 requirementDefinition.setPath(new ArrayList<>());
1275 expectedError = String
1276 .format("Failed to find a capability with name %s on a component with uniqueId %s",
1277 relation.getCapability(), fromOriginComponent.getUniqueId());
1279 assertThrows(ToscaExportException.class, () -> Deencapsulation
1280 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1281 relationshipDefinition, new HashMap<>()),
1286 public void testBuildRequirement() {
1287 final ComponentInstance fromInstance = new ComponentInstance();
1288 fromInstance.setUniqueId("name");
1289 fromInstance.setComponentUid("string");
1290 final List<ComponentInstance> instancesList = new ArrayList<>();
1292 final Map<String, Component> componentCache = new HashMap<>();
1293 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1294 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1295 relationship.setRequirement(new RequirementDataDefinition());
1296 final RelationshipInfo relation = new RelationshipInfo();
1297 final String requirementUid = "Uid";
1298 relation.setRequirementUid(requirementUid);
1299 final String requirementName = "requirementName";
1300 relation.setRequirement(requirementName);
1301 final String capabilityName = "capabilityName";
1302 relation.setCapability(capabilityName);
1303 final String capabilityOwnerId = "capabilityOwnerId";
1304 relation.setCapabilityOwnerId(capabilityOwnerId);
1305 relationship.setRelation(relation);
1306 relationshipList.add(relationship);
1307 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1308 relationshipDefinition.setRelationships(relationshipList);
1309 relationshipDefinition.setToNode("name");
1310 instancesList.add(fromInstance);
1311 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1312 requirementDefinition.setName(requirementName);
1313 requirementDefinition.setCapability(capabilityName);
1314 final String requirementPreviousName = "requirementPreviousName";
1315 requirementDefinition.setPreviousName(requirementPreviousName);
1316 requirementDefinition.setPath(new ArrayList<>());
1317 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1318 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1319 final Component fromOriginComponent = new Resource();
1320 fromOriginComponent.setRequirements(requirementMap);
1322 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1323 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1324 capabilityDefinition.setName(capabilityName);
1325 capabilityDefinition.setOwnerId(capabilityOwnerId);
1326 final String capabilityPreviousName = "capabilityPreviousName";
1327 capabilityDefinition.setPreviousName(capabilityPreviousName);
1328 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1329 final Component toOriginComponent = new Resource();
1330 toOriginComponent.setCapabilities(capabilityMap);
1332 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1333 .thenReturn(Either.left(toOriginComponent));
1334 final String builtCapabilityName = "builtCapabilityName";
1336 capabilityRequirementConverter
1337 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq(capabilityName), eq(
1338 capabilityPreviousName)))
1339 .thenReturn(Either.left(builtCapabilityName));
1341 final String builtRequirementName = "builtRequirementName";
1343 capabilityRequirementConverter
1344 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq(requirementName), eq(
1345 requirementPreviousName)))
1346 .thenReturn(Either.left(builtRequirementName));
1348 final Map<String, ToscaTemplateRequirement> actualRequirementMap =
1349 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1350 instancesList, relationshipDefinition, componentCache);
1351 assertNotNull(actualRequirementMap);
1352 assertFalse(actualRequirementMap.isEmpty());
1353 assertTrue(actualRequirementMap.containsKey(builtRequirementName));
1354 final ToscaTemplateRequirement actualToscaTemplateRequirement = actualRequirementMap.get(builtRequirementName);
1355 assertNotNull(actualToscaTemplateRequirement);
1356 assertEquals(builtCapabilityName, actualToscaTemplateRequirement.getCapability());
1358 //to toOriginComponent not found
1359 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1360 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1362 assertThrows(ToscaExportException.class, () -> Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1363 instancesList, relationshipDefinition, componentCache));
1367 public void testAddRequirmentsWithBuildAndAddRequirements() {
1368 ComponentInstance fromInstance = new ComponentInstance();
1369 Component fromOriginComponent = new Resource();
1370 List<ComponentInstance> instancesList = new ArrayList<>();
1371 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1372 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1373 Map<String, Component> componentCache = new HashMap<>();
1375 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1376 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1377 cap.setRequirement(new RequirementDataDefinition());
1378 RelationshipInfo relation = new RelationshipInfo();
1379 relation.setRequirementUid("Uid");
1380 relation.setRequirement("requirment");
1381 relation.setCapability("cap");
1382 relation.setCapabilityOwnerId("id");
1383 cap.setRelation(relation);
1384 relationships.add(cap);
1385 rel.setRelationships(relationships);
1386 rel.setToNode("name");
1387 fromInstance.setUniqueId("name");
1388 fromInstance.setComponentUid("string");
1389 instancesList.add(fromInstance);
1390 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1392 List<RequirementDefinition> defs = new ArrayList<>();
1393 RequirementDefinition def = new RequirementDefinition();
1394 def.setName("requirment");
1395 def.setCapability("cap");
1397 requirements.put("key", defs);
1398 fromOriginComponent.setRequirements(requirements);
1400 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1401 List<CapabilityDefinition> caps = new ArrayList<>();
1402 CapabilityDefinition capdef = new CapabilityDefinition();
1403 capdef.setOwnerId("id");
1404 capdef.setName("cap");
1405 capdef.setPreviousName("before cap");
1406 capdef.setType("type");
1408 capabilities.put("cap", caps);
1409 fromOriginComponent.setCapabilities(capabilities);
1411 when(toscaOperationFacade.getToscaElement(any(String.class),
1412 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1415 capabilityRequirementConverter
1416 .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString()))
1417 .thenReturn(Either.right(false));
1419 final String expectedErrorMsg =
1420 String.format("Failed to build a substituted capability name for the capability "
1421 + "with name %s on a component with uniqueId %s",
1422 cap.getRequirement(), fromOriginComponent.getUniqueId());
1424 assertThrows(ToscaExportException.class, () ->
1425 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1426 rel, componentCache), expectedErrorMsg);
1430 public void testBuildAndAddRequirement() {
1431 Component fromOriginComponent = new Resource();
1432 Component toOriginComponent = new Resource();
1433 CapabilityDefinition capability = new CapabilityDefinition();
1434 RequirementDefinition requirement = new RequirementDefinition();
1435 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1436 ComponentInstance toInstance = new ComponentInstance();
1437 Map<String, Component> componentCache = new HashMap<>();
1438 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1439 capabilityRequirementRelationship.setRelation(reqAndRelationshipPair);
1440 capability.setPath(new ArrayList<>());
1441 capability.setPreviousName("before cap");
1442 reqAndRelationshipPair.setCapability("cap");
1443 requirement.setPath(new ArrayList<>());
1444 requirement.setPreviousName("before req");
1445 reqAndRelationshipPair.setRequirement("req");
1448 capabilityRequirementConverter
1449 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString()))
1450 .thenReturn(Either.left("buildCapNameRes"));
1453 capabilityRequirementConverter
1454 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString()))
1455 .thenReturn(Either.left("buildReqNameRes"));
1458 final Map<String, ToscaTemplateRequirement> requirementMap =
1459 Deencapsulation.invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent,
1460 capability, requirement, capabilityRequirementRelationship, toInstance, componentCache);
1461 assertNotNull(requirementMap);
1462 assertFalse(requirementMap.isEmpty());
1463 assertTrue(requirementMap.containsKey("buildReqNameRes"));
1464 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get("buildReqNameRes");
1465 assertNotNull(actualToscaTemplateRequirement);
1466 assertEquals("buildCapNameRes", actualToscaTemplateRequirement.getCapability());
1470 public void testBuildRequirementBuildSubstitutedNameReturnsValueTwice() {
1471 final Component fromOriginComponent = new Resource();
1472 final Component toOriginComponent = new Resource();
1473 final CapabilityDefinition capability = new CapabilityDefinition();
1474 final RequirementDefinition requirement = new RequirementDefinition();
1475 final RelationshipInfo relationship = new RelationshipInfo();
1476 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1477 capabilityRequirementRelationship.setRelation(relationship);
1478 ComponentInstance toInstance = new ComponentInstance();
1479 Map<String, Component> componentCache = new HashMap<>();
1480 capability.setPath(new ArrayList<>());
1481 relationship.setCapability("cap");
1482 requirement.setPath(new ArrayList<>());
1483 relationship.setRequirement("req");
1485 final String builtCapabilityOrRequirementName = "builtCapabilityOrRequirementName";
1486 when(capabilityRequirementConverter.buildSubstitutedName(any(), any(), any(), any(), any()))
1487 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1489 final Map<String, ToscaTemplateRequirement> requirementMap = Deencapsulation
1490 .invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent, capability, requirement,
1491 capabilityRequirementRelationship, toInstance, componentCache);
1492 assertNotNull(requirementMap);
1493 assertFalse(requirementMap.isEmpty());
1494 assertTrue(requirementMap.containsKey(builtCapabilityOrRequirementName));
1495 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get(builtCapabilityOrRequirementName);
1496 assertNotNull(actualToscaTemplateRequirement);
1497 assertEquals(builtCapabilityOrRequirementName, actualToscaTemplateRequirement.getCapability());
1501 public void testIsRequirementBelongToRelation() throws Exception {
1503 Component originComponent = new Resource();
1504 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1505 RequirementDefinition requirement = new RequirementDefinition();
1506 String fromInstanceId = "";
1509 requirement.setName("name");
1510 reqAndRelationshipPair.setRequirement("name1");
1512 // test return false
1513 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1514 reqAndRelationshipPair, requirement, fromInstanceId);
1515 Assert.assertFalse(result);
1519 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1521 Component originComponent = new Service();
1522 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1523 RequirementDefinition requirement = new RequirementDefinition();
1524 String fromInstanceId = "";
1527 // default test return true
1528 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1529 reqAndRelationshipPair, requirement, fromInstanceId);
1530 Assert.assertTrue(result);
1534 public void testIsRequirementBelongToOwner() throws Exception {
1536 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1537 RequirementDefinition requirement = new RequirementDefinition();
1538 String fromInstanceId = "";
1539 Component originComponent = new Resource();
1542 requirement.setOwnerId("owner1");
1543 reqAndRelationshipPair.setRequirementOwnerId("owner");
1546 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1547 fromInstanceId, originComponent);
1548 Assert.assertFalse(result);
1552 public void testIsCvfc() throws Exception {
1554 Component component = new Service();
1557 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1558 Assert.assertFalse(result);
1562 public void testConvertCapabilities() throws Exception {
1563 Component component = new Resource();
1564 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1565 Map<String, Component> componentCache = new HashMap<>();
1566 Either<SubstitutionMapping, ToscaError> result;
1568 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(componentCache, component))
1569 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1571 // default test return isRight
1572 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1574 Assert.assertNotNull(result);
1578 public void testConvertCapabilities_1() throws Exception {
1579 Component component = new Resource();
1580 ToscaNodeType nodeType = new ToscaNodeType();
1581 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1582 Either<ToscaNodeType, ToscaError> result;
1584 Map<String, ToscaCapability> capabilities = new HashMap<>();
1585 capabilities.put("key", new ToscaCapability());
1588 result = Deencapsulation
1589 .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
1590 Assert.assertNotNull(result);
1594 public void testConvertToNodeTemplateArtifacts() throws Exception {
1595 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1596 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1597 art.setFile("test_file");
1598 art.setType("test_type");
1599 Map<String, ToscaTemplateArtifact> result;
1600 container.put("test_art", art);
1601 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1602 Assert.assertNotNull(result);
1603 Assert.assertTrue(MapUtils.isNotEmpty(result));
1604 Assert.assertEquals("test_file", result.get("test_art").getFile());
1605 Assert.assertEquals("test_type", result.get("test_art").getType());
1609 public void testGetProxyNodeTypeInterfacesNoInterfaces() {
1610 Component service = new Service();
1611 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1612 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1613 Assert.assertFalse(proxyNodeTypeInterfaces.isPresent());
1617 public void testGetProxyNodeTypeInterfaces() {
1618 Component service = getTestComponent();
1619 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1620 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1621 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1622 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1623 Assert.assertNotNull(componentInterfaces);
1628 public void testGetProxyNodeTypePropertiesComponentNull() {
1629 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1630 testSubject.getProxyNodeTypeProperties(null, DATA_TYPES);
1631 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1635 public void testGetProxyNodeTypePropertiesNoProperties() {
1636 Component service = new Service();
1637 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1638 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1639 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1643 public void testGetProxyNodeTypeProperties() {
1644 Component service = getTestComponent();
1645 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1646 createMockProperty("componentPropInt", null)));
1647 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1648 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1649 Assert.assertTrue(proxyNodeTypeProperties.isPresent());
1650 Map<String, ToscaProperty> componentProperties = proxyNodeTypeProperties.get();
1651 Assert.assertNotNull(componentProperties);
1652 Assert.assertEquals(2, componentProperties.size());
1656 public void testAddInputsToPropertiesNoInputs() {
1657 Component service = getTestComponent();
1658 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1659 createMockProperty("componentPropInt", null)));
1660 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1661 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1663 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1664 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1665 testSubject.addInputsToProperties(DATA_TYPES, null, proxyNodeTypeProperties);
1666 Assert.assertNotNull(proxyNodeTypeProperties);
1667 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1668 testSubject.addInputsToProperties(DATA_TYPES, new ArrayList<>(), proxyNodeTypeProperties);
1669 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1673 public void testAddInputsToPropertiesWithInputs() {
1674 Component service = getTestComponent();
1675 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1676 createMockProperty("componentPropInt", null)));
1677 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1678 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1679 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1680 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1682 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1683 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1684 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1685 Assert.assertNotNull(proxyNodeTypeProperties);
1686 Assert.assertEquals(4, proxyNodeTypeProperties.size());
1690 public void testAddInputsToPropertiesOnlyInputs() {
1691 Component service = getTestComponent();
1692 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1693 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1694 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1695 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1697 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1698 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1699 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1700 Assert.assertNotNull(proxyNodeTypeProperties);
1701 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1705 public void testOperationImplementationInProxyNodeTypeNotPresent() {
1706 Component service = getTestComponent();
1707 InterfaceDefinition interfaceDefinition =
1708 service.getInterfaces().get("normalizedServiceComponentName-interface");
1709 interfaceDefinition.setOperations(new HashMap<>());
1710 final OperationDataDefinition operation = new OperationDataDefinition();
1711 operation.setName("start");
1712 operation.setDescription("op description");
1713 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
1714 implementation.setArtifactName("createBPMN.bpmn");
1715 operation.setImplementation(implementation);
1716 interfaceDefinition.getOperations().put(operation.getName(), operation);
1717 service.getInterfaces().put("normalizedServiceComponentName-interface", interfaceDefinition);
1718 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1719 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1720 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1721 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1722 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1723 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1724 Assert.assertNotNull(componentInterfaces);
1727 private Component getTestComponent() {
1728 Component component = new Service();
1729 component.setNormalizedName("normalizedServiceComponentName");
1730 InterfaceDefinition addedInterface = new InterfaceDefinition();
1731 addedInterface.setType("com.some.service.or.other.serviceName");
1732 final String interfaceType = "normalizedServiceComponentName-interface";
1733 component.setInterfaces(new HashMap<>());
1734 component.getInterfaces().put(interfaceType, addedInterface);
1738 private PropertyDefinition createMockProperty(String propertyName, String defaultValue){
1739 PropertyDefinition propertyDefinition = new PropertyDefinition();
1740 propertyDefinition.setName(propertyName);
1741 propertyDefinition.setType("string");
1742 propertyDefinition.setDefaultValue(defaultValue);
1743 return propertyDefinition;
1746 private InputDefinition createMockInput(String inputName, String defaultValue){
1747 InputDefinition inputDefinition = new InputDefinition();
1748 inputDefinition.setName(inputName);
1749 inputDefinition.setType("string");
1750 inputDefinition.setDefaultValue(defaultValue);
1751 return inputDefinition;