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.ComponentInstanceInput;
86 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
87 import org.openecomp.sdc.be.model.ComponentParametersView;
88 import org.openecomp.sdc.be.model.DataTypeDefinition;
89 import org.openecomp.sdc.be.model.GroupDefinition;
90 import org.openecomp.sdc.be.model.GroupInstance;
91 import org.openecomp.sdc.be.model.InputDefinition;
92 import org.openecomp.sdc.be.model.InterfaceDefinition;
93 import org.openecomp.sdc.be.model.PropertyDefinition;
94 import org.openecomp.sdc.be.model.RelationshipInfo;
95 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
96 import org.openecomp.sdc.be.model.RequirementDefinition;
97 import org.openecomp.sdc.be.model.Resource;
98 import org.openecomp.sdc.be.model.Service;
99 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
100 import org.openecomp.sdc.be.model.category.CategoryDefinition;
101 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
102 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
103 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
104 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
105 import org.openecomp.sdc.be.tosca.model.SubstitutionMapping;
106 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
107 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
108 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
109 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
110 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
111 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
112 import org.openecomp.sdc.be.tosca.model.ToscaTemplateArtifact;
113 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
114 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
115 import org.openecomp.sdc.be.tosca.utils.InputConverter;
117 public class ToscaExportHandlerTest extends BeConfDependentTest {
119 private static final String COMPONENT_PROPERTY_NAME = "prop1";
120 private static final String COMPONENT_PROPERTY_TYPE = "string";
121 private static final String COMPONENT_INPUT_NAME = "input1";
122 private static final String COMPONENT_INPUT_TYPE = "integer";
123 private static final String RESOURCE_NAME = "resource";
124 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
125 private static final Map<String, DataTypeDefinition> DATA_TYPES = new HashMap<>();
128 private ToscaExportHandler testSubject;
131 private ApplicationDataTypeCache dataTypeCache;
134 private ToscaOperationFacade toscaOperationFacade;
137 private CapabilityRequirementConverter capabilityRequirementConverter;
140 private InputConverter inputConverter;
143 private GroupExportParser groupExportParser;
146 private PropertyConvertor propertyConvertor;
149 private GroupExportParserImpl groupExportParserImpl;
152 private InterfaceLifecycleOperation interfaceLifecycleOperation;
155 private InterfacesOperationsConverter interfacesOperationsConverter;
158 private PolicyExportParser policyExportParser;
161 public void setUpMock() {
162 MockitoAnnotations.initMocks(this);
163 doReturn(new ToscaProperty()).when(propertyConvertor).convertProperty(any(), any(), eq(PROPERTY));
164 doReturn(new HashMap<String, Object>()).when(interfacesOperationsConverter)
165 .getInterfacesMap(any(), isNull(), anyMap(), anyMap(), anyBoolean(), anyBoolean());
168 private Resource getNewResource() {
169 Resource resource = new Resource();
170 List<CategoryDefinition> categories = new ArrayList<>();
171 CategoryDefinition category = new CategoryDefinition();
172 List<SubCategoryDefinition> subcategories = new ArrayList<>();
173 SubCategoryDefinition subcategory = new SubCategoryDefinition();
174 List<DataTypeDefinition> dataTypes = new ArrayList<>();
175 DataTypeDefinition dataType = new DataTypeDefinition();
176 dataType.setName("dataTypeName");
177 dataType.setDerivedFromName("tosca.datatypes.Root");
178 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
182 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
183 dataType.setPropertiesData(propDataList);
184 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
185 .collect(Collectors.toList());
186 dataType.setProperties(propList);
187 dataTypes.add(dataType);
189 subcategory.setName("name");
190 subcategories.add(subcategory);
191 category.setName("name");
192 category.setSubcategories(subcategories);
193 categories.add(category);
195 resource.setCategories(categories);
196 resource.setVersion("version");
197 resource.setVendorName("vendorName");
198 resource.setVendorRelease("vendorRelease");
199 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
200 resource.setDataTypes(dataTypes);
205 private Service getNewService() {
206 Service service = new Service();
207 List<CategoryDefinition> categories = new ArrayList<>();
208 CategoryDefinition category = new CategoryDefinition();
209 List<SubCategoryDefinition> subcategories = new ArrayList<>();
210 SubCategoryDefinition subcategory = new SubCategoryDefinition();
212 subcategory.setName("name");
213 subcategories.add(subcategory);
214 category.setName("name");
215 category.setSubcategories(subcategories);
216 categories.add(category);
218 service.setCategories(categories);
219 service.setComponentType(ComponentTypeEnum.SERVICE);
220 service.setServiceType("serviceType");
221 service.setServiceRole("serviceRole");
222 service.setEnvironmentContext("environmentContext");
228 public void testExportComponent() throws Exception {
229 Component component = getNewResource();
230 Either<ToscaRepresentation, ToscaError> result;
232 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
233 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
234 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
235 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
236 .thenReturn(Either.left(Collections.emptyMap()));
238 // default test when component is Resource
239 result = testSubject.exportComponent(component);
240 Assert.assertNotNull(result);
242 component = getNewService();
243 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
244 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
245 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
247 // default test when component is Service
248 result = testSubject.exportComponent(component);
249 Assert.assertNotNull(result);
253 public void testExportComponentInterface() throws Exception {
254 Component component = getNewResource();
255 Either<ToscaRepresentation, ToscaError> result;
257 ((Resource) component).setInterfaces(new HashMap<>());
259 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
260 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
261 .thenReturn(Either.left(Collections.emptyMap()));
262 // default test when convertInterfaceNodeType is right
263 result = testSubject.exportComponentInterface(component, false);
264 Assert.assertNotNull(result);
266 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
267 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
268 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
270 // default test when convertInterfaceNodeType is left
271 result = testSubject.exportComponentInterface(component, false);
272 Assert.assertNotNull(result);
276 public void testConvertInterfaceNodeTypeProperties() throws Exception {
278 Resource component = getNewResource();
280 component.setInterfaces(new HashMap<>());
281 InputDefinition input = new InputDefinition();
282 input.setName(COMPONENT_INPUT_NAME);
283 input.setType(COMPONENT_INPUT_TYPE);
284 component.setInputs(Collections.singletonList(input));
285 PropertyDefinition property = new PropertyDefinition();
286 property.setName(COMPONENT_PROPERTY_NAME);
287 property.setType(COMPONENT_PROPERTY_TYPE);
288 component.setProperties(Collections.singletonList(property));
289 component.setName(RESOURCE_NAME);
290 component.setToscaResourceName(RESOURCE_NAME);
292 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
293 .thenReturn(Either.left(Collections.emptyMap()));
294 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
295 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
296 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
297 any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
299 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
300 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
301 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
302 Assert.assertNotNull(result);
303 assertThat(result.isLeft(), is(true));
304 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
305 assertThat(nodeTypeMap.size(), is(1));
306 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
307 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
308 // Check if inputs and properties in component are merged properly
309 assertThat(propertyMap.size(), is(2));
310 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
311 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
315 public void testCreateToscaRepresentation() throws Exception {
316 ToscaTemplate toscaTemplate = new ToscaTemplate("");
317 ToscaRepresentation result;
320 result = testSubject.createToscaRepresentation(toscaTemplate);
321 Assert.assertNotNull(result);
325 public void testGetDependencies() throws Exception {
327 Component component = new Resource();
328 Either<ToscaTemplate, ToscaError> result;
331 result = testSubject.getDependencies(component);
332 Assert.assertNotNull(result);
336 public void testSetImports() throws Exception {
337 Resource resource = new Resource();
338 resource.setResourceType(ResourceTypeEnum.PNF);
340 Component component = resource;
341 component.setName("TestResourceName");
342 Map<String, ArtifactDefinition> artifactList = new HashMap<>();
343 ArtifactDefinition artifact = new ArtifactDefinition();
344 artifact.setArtifactName("name.name2");
345 artifactList.put("assettoscatemplate", artifact);
346 component.setArtifacts(artifactList);
347 component.setToscaArtifacts(artifactList);
348 ToscaTemplate toscaTemplate = new ToscaTemplate("");
351 ComponentInstance ci = new ComponentInstance();
352 ci.setComponentUid("name");
353 ci.setOriginType(OriginTypeEnum.PNF);
354 ci.setSourceModelUid("modelName");
355 List<ComponentInstance> componentInstanceList = new LinkedList<>();
356 componentInstanceList.add(ci);
357 component.setComponentInstances(componentInstanceList);
359 when(toscaOperationFacade.getToscaFullElement(eq("name"))).thenReturn(Either.left(component));
361 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
362 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
364 verify(toscaOperationFacade, times(1)).getToscaFullElement("name");
365 Assert.assertTrue(result.isLeft());
366 ToscaTemplate toscaTemplateRes = result.left().value().left;
367 Assert.assertTrue(toscaTemplateRes.getImports().size() == 8);
368 Assert.assertNotNull(toscaTemplateRes.getImports().get(6).get("resource-TestResourceName-interface"));
369 Assert.assertNotNull(toscaTemplateRes.getImports().get(7).get("resource-TestResourceName"));
370 Assert.assertTrue(toscaTemplateRes.getDependencies().size() == 1);
371 Assert.assertNotNull(toscaTemplateRes.getDependencies().get(0).getLeft().equals("name.name2"));
375 public void testConvertToscaTemplate() throws Exception {
377 Component component = getNewResource();
378 ToscaTemplate toscaNode = new ToscaTemplate("");
379 Either<ToscaTemplate, ToscaError> result;
380 List<ComponentInstance> resourceInstances = new ArrayList<>();
381 ComponentInstance instance = new ComponentInstance();
383 instance.setOriginType(OriginTypeEnum.SERVICE);
384 instance.setSourceModelUid("targetModelUid");
385 resourceInstances.add(instance);
387 component.setComponentInstances(resourceInstances);
389 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
390 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
391 any(ComponentInstance.class))).thenReturn(Either.right(false));
394 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
395 Assert.assertNotNull(result);
399 public void testConvertToscaTemplateWhenComponentContainsGroup() {
400 Component component = getNewResource();
401 ToscaTemplate toscaNode = new ToscaTemplate("");
402 Either<ToscaTemplate, ToscaError> result;
403 component.setComponentInstances(new ArrayList<>());
405 List<GroupDefinition> groups = new ArrayList<>();
406 GroupDefinition group = new GroupDefinition();
407 List<String> artifacts = new ArrayList<>();
408 artifacts.add("artifact");
409 group.setType("org.openecomp.groups.VfModule");
410 group.setArtifacts(artifacts);
412 component.setGroups(groups);
414 Map<String, String[]> substitutionMappingMap = new HashMap<>();
415 String[] array = {"value1", "value2"};
416 substitutionMappingMap.put("key", array);
418 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(any(Map.class),
419 any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
421 when(capabilityRequirementConverter.convertSubstitutionMappingRequirements(any(Map.class),
422 any(Component.class), any(SubstitutionMapping.class)))
423 .thenReturn(Either.left(new SubstitutionMapping()));
425 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
427 when(inputConverter.convertInputs(any(List.class), any(Map.class))).thenReturn(new HashMap<>());
429 when(groupExportParser.getGroups(component))
432 // test component contains group
433 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
434 Assert.assertNotNull(result);
438 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
439 Component component = getNewService();
440 ToscaTemplate toscaNode = new ToscaTemplate("");
441 Either<ToscaTemplate, ToscaError> result;
442 component.setComponentInstances(new ArrayList<>());
444 List<GroupDefinition> groups = new ArrayList<>();
445 GroupDefinition group = new GroupDefinition();
446 List<String> artifacts = new ArrayList<>();
447 artifacts.add("artifact");
448 group.setType("org.openecomp.groups.VfModule");
449 group.setArtifacts(artifacts);
451 component.setGroups(groups);
453 Map<String, String[]> substitutionMappingMap = new HashMap<>();
454 String[] array = {"value1", "value2"};
455 substitutionMappingMap.put("key", array);
457 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class)))
458 .thenReturn(Either.left(substitutionMappingMap));
460 when(capabilityRequirementConverter
461 .convertSubstitutionMappingRequirements(anyMap(), any(Component.class), any(SubstitutionMapping.class)))
462 .thenReturn(Either.left(new SubstitutionMapping()));
464 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
466 when(inputConverter.convertInputs(anyList(), anyMap())).thenReturn(new HashMap<>());
467 // test component contains group
468 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
469 Assert.assertNotNull(result);
473 public void testConvertMetadata_1() throws Exception {
475 Component component = getNewResource();
476 boolean isInstance = true;
477 ComponentInstance componentInstance = new ComponentInstance();
478 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
479 componentInstance.setSourceModelInvariant("targetModelInvariant");
482 Map<String, String> result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
483 Assert.assertNotNull(result);
487 public void testFillImports() throws Exception {
489 Component component = getNewService();
490 ToscaTemplate toscaTemplate = new ToscaTemplate("");
491 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
493 ComponentInstance instance = new ComponentInstance();
494 List<ComponentInstance> resourceInstances = new ArrayList<>();
495 instance.setComponentUid("name");
496 resourceInstances.add(instance);
497 component.setComponentInstances(resourceInstances);
498 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
499 ArtifactDefinition artifact = new ArtifactDefinition();
500 artifact.setArtifactName("name.name2");
501 toscaArtifacts.put("assettoscatemplate", artifact);
502 component.setToscaArtifacts(toscaArtifacts);
504 when(toscaOperationFacade.getToscaFullElement(any(String.class)))
505 .thenReturn(Either.left(component));
508 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
509 Assert.assertNotNull(result);
513 public void testCreateDependency() throws Exception {
515 Map<String, Component> componentCache = new HashMap<>();
516 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
517 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
518 ComponentInstance ci = new ComponentInstance();
519 Component component = getNewResource();
521 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
522 ArtifactDefinition artifact = new ArtifactDefinition();
523 artifact.setArtifactName("name.name2");
524 toscaArtifacts.put("assettoscatemplate", artifact);
525 component.setToscaArtifacts(toscaArtifacts);
526 ci.setComponentUid("name");
527 ci.setOriginType(OriginTypeEnum.ServiceProxy);
528 ci.setSourceModelUid("modelName");
530 when(toscaOperationFacade.getToscaFullElement(eq("name"))).thenReturn(Either.left(component));
532 when(toscaOperationFacade.getToscaFullElement(eq("modelName")))
533 .thenReturn(Either.left(new Service()));
536 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
540 public void testGetInterfaceFilename() throws Exception {
541 String artifactName = "artifact.name";
545 result = ToscaExportHandler.getInterfaceFilename(artifactName);
546 Assert.assertNotNull(result);
550 public void testConvertNodeType() throws Exception {
551 Component component = new Resource();
552 ToscaTemplate toscaNode = new ToscaTemplate("");
553 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
554 Either<ToscaTemplate, ToscaError> result;
556 when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
557 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
558 .thenReturn(Either.left(Collections.emptyMap()));
560 result = Deencapsulation
561 .invoke(testSubject, "convertNodeType", new HashMap<>(), component, toscaNode, nodeTypes);
562 Assert.assertNotNull(result);
566 public void testConvertInterfaceNodeType() throws Exception {
567 Component component = getNewResource();
568 ToscaTemplate toscaNode = new ToscaTemplate("");
569 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
570 Either<ToscaTemplate, ToscaError> result;
571 List<InputDefinition> inputs = new ArrayList<>();
572 inputs.add(new InputDefinition());
573 component.setInputs(inputs);
575 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
576 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
577 .thenReturn(Either.left(Collections.emptyMap()));
579 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
580 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
583 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType", new HashMap<>(), component, toscaNode
585 Assert.assertNotNull(result);
589 public void testConvertReqCapAndTypeName() throws Exception {
590 Component component = new Resource();
591 ToscaTemplate toscaNode = new ToscaTemplate("");
592 Map<String, ToscaNodeType> nodeTypes = new HashMap();
593 ToscaNodeType toscaNodeType = new ToscaNodeType();
594 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
595 Either<ToscaTemplate, ToscaError> result;
598 capabilityRequirementConverter
599 .convertCapabilities(any(Map.class), any(Resource.class), any(Map.class)))
600 .thenReturn(new HashMap<>());
602 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Resource.class),
603 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
606 result = Deencapsulation
607 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
608 toscaNodeType, dataTypes);
609 Assert.assertNotNull(result);
611 component = new Service();
613 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
614 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
616 // test when component is service
617 result = Deencapsulation
618 .invoke(testSubject, "convertReqCapAndTypeName", new HashMap<>(), component, toscaNode, nodeTypes,
619 toscaNodeType, dataTypes);
620 Assert.assertNotNull(result);
624 public void testConvertNodeTemplates() throws Exception {
625 Component component = getNewResource();
626 List<ComponentInstance> componentInstances = new ArrayList<>();
627 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
628 Map<String, Component> componentCache = new HashMap<>();
629 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
630 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
631 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
632 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
633 List<ComponentInstanceInput> inputs = new ArrayList<>();
634 inputs.add(new ComponentInstanceInput());
635 componentInstancesInputs.put("key", inputs);
636 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
637 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
638 reldef.setFromNode("node");
639 resourceInstancesRelations.add(reldef);
640 component.setComponentInstancesRelations(resourceInstancesRelations);
642 ComponentInstance instance = new ComponentInstance();
643 instance.setUniqueId("id");
644 instance.setComponentUid("uid");
645 instance.setOriginType(OriginTypeEnum.ServiceProxy);
646 List<GroupInstance> groupInstances = new ArrayList<>();
647 GroupInstance groupInst = new GroupInstance();
648 List<String> artifacts = new ArrayList<>();
649 artifacts.add("artifact");
650 groupInst.setArtifacts(artifacts);
651 groupInst.setType("type");
652 groupInstances.add(groupInst);
653 instance.setGroupInstances(groupInstances);
654 componentInstances.add(instance);
656 component.setComponentInstancesInputs(componentInstancesInputs);
657 component.setInvariantUUID("uuid");
658 component.setUUID("uuid");
659 component.setDescription("desc");
661 componentCache.put("uid", component);
663 componentInstancesProperties.put("id", new ArrayList<>());
664 componentInstancesInputs.put("id", new ArrayList<>());
666 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
667 any(ComponentInstance.class))).thenReturn(Either.left(component));
669 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
670 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
671 .thenReturn(Either.left(new ToscaNodeTemplate()));
674 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
675 componentInstancesProperties, new HashMap<>(), componentCache, dataTypes, topologyTemplate);
676 Assert.assertNotNull(result);
680 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
681 Component component = getNewService();
682 List<ComponentInstance> componentInstances = new ArrayList<>();
683 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
684 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
685 Map<String, Component> componentCache = new HashMap<>();
686 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
687 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
688 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
689 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
690 List<ComponentInstanceInput> inputs = new ArrayList<>();
691 inputs.add(new ComponentInstanceInput());
692 componentInstancesInputs.put("key", inputs);
693 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
694 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
695 reldef.setFromNode("node");
696 resourceInstancesRelations.add(reldef);
697 component.setComponentInstancesRelations(resourceInstancesRelations);
699 ComponentInstance instance = new ComponentInstance();
700 instance.setUniqueId("id");
701 instance.setComponentUid("uid");
702 instance.setOriginType(OriginTypeEnum.ServiceProxy);
703 List<GroupInstance> groupInstances = new ArrayList<>();
704 GroupInstance groupInst = new GroupInstance();
705 List<String> artifacts = new ArrayList<>();
706 artifacts.add("artifact");
707 groupInst.setArtifacts(artifacts);
708 groupInst.setType("type");
709 groupInstances.add(groupInst);
710 instance.setGroupInstances(groupInstances);
711 componentInstances.add(instance);
713 component.setComponentInstancesInputs(componentInstancesInputs);
714 component.setInvariantUUID("uuid");
715 component.setUUID("uuid");
716 component.setDescription("desc");
718 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
719 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
720 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
721 path.setPathElements(list);
722 forwardingPaths.put("key", path);
724 ((Service) component).setForwardingPaths(forwardingPaths);
726 componentCache.put("uid", component);
728 componentInstancesProperties.put("id", new ArrayList<>());
729 componentInstancesInterfaces.put("id", new ArrayList<>());
730 componentInstancesInputs.put("id", new ArrayList<>());
732 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
733 any(ComponentInstance.class))).thenReturn(Either.left(component));
735 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
736 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
737 .thenReturn(Either.left(new ToscaNodeTemplate()));
740 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
741 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
742 Assert.assertNotNull(result);
746 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
747 Component component = getNewResource();
748 List<ComponentInstance> componentInstances = new ArrayList<>();
749 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
750 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
751 Map<String, Component> componentCache = new HashMap<>();
752 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
753 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
754 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
755 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
756 List<ComponentInstanceInput> inputs = new ArrayList<>();
757 inputs.add(new ComponentInstanceInput());
758 componentInstancesInputs.put("key", inputs);
759 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
760 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
761 reldef.setFromNode("node");
762 resourceInstancesRelations.add(reldef);
763 component.setComponentInstancesRelations(resourceInstancesRelations);
765 ComponentInstance instance = new ComponentInstance();
766 instance.setUniqueId("id");
767 instance.setComponentUid("uid");
768 instance.setOriginType(OriginTypeEnum.ServiceProxy);
769 componentInstances.add(instance);
771 component.setComponentInstancesInputs(componentInstancesInputs);
772 component.setInvariantUUID("uuid");
773 component.setUUID("uuid");
774 component.setDescription("desc");
776 componentCache.put("uid", component);
778 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
779 any(ComponentInstance.class))).thenReturn(Either.left(component));
781 when(capabilityRequirementConverter.convertComponentInstanceCapabilities(
782 any(ComponentInstance.class), any(Map.class), any(ToscaNodeTemplate.class)))
783 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
786 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
787 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
788 Assert.assertNotNull(result);
792 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
793 Component component = getNewResource();
794 List<ComponentInstance> componentInstances = new ArrayList<>();
795 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
796 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
797 Map<String, Component> componentCache = new HashMap<>();
798 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
799 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
800 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
801 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
802 List<ComponentInstanceInput> inputs = new ArrayList<>();
803 inputs.add(new ComponentInstanceInput());
804 componentInstancesInputs.put("key", inputs);
805 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
806 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
807 reldef.setFromNode("id");
808 resourceInstancesRelations.add(reldef);
809 component.setComponentInstancesRelations(resourceInstancesRelations);
811 ComponentInstance instance = new ComponentInstance();
812 instance.setUniqueId("id");
813 instance.setComponentUid("uid");
814 instance.setOriginType(OriginTypeEnum.ServiceProxy);
815 componentInstances.add(instance);
817 component.setComponentInstancesInputs(componentInstancesInputs);
818 component.setInvariantUUID("uuid");
819 component.setUUID("uuid");
820 component.setDescription("desc");
822 componentCache.put("uid", component);
824 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
825 any(ComponentInstance.class))).thenReturn(Either.right(false));
828 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
829 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
830 Assert.assertNotNull(result);
834 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
835 Component component = new Resource();
836 List<ComponentInstance> componentInstances = new ArrayList<>();
837 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
838 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
839 Map<String, Component> componentCache = new HashMap<>();
840 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
841 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
842 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
843 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
844 List<ComponentInstanceInput> inputs = new ArrayList<>();
845 inputs.add(new ComponentInstanceInput());
846 componentInstancesInputs.put("key", inputs);
847 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
848 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
849 reldef.setFromNode("id");
850 reldef.setToNode("node");
851 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
852 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
853 relationship.setRelation(new RelationshipInfo());
854 relationships.add(relationship);
855 reldef.setRelationships(relationships);
856 resourceInstancesRelations.add(reldef);
857 component.setComponentInstancesRelations(resourceInstancesRelations);
859 ComponentInstance instance = new ComponentInstance();
860 instance.setUniqueId("id");
861 componentInstances.add(instance);
863 component.setComponentInstancesInputs(componentInstancesInputs);
864 component.setComponentInstances(componentInstances);
866 when(capabilityRequirementConverter.getOriginComponent(any(Map.class),
867 any(ComponentInstance.class))).thenReturn(Either.left(component));
870 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
871 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
872 Assert.assertNotNull(result);
876 public void testAddComponentInstanceInputs() throws Exception {
878 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
879 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
880 ComponentInstance componentInstance = new ComponentInstance();
881 String instanceUniqueId = "id";
882 Map<String, Object> props = new HashMap<>();
884 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
885 componentInstanceInputs.add(new ComponentInstanceInput());
887 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
890 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
891 instanceUniqueId, props);
895 public void testAddPropertiesOfComponentInstance() throws Exception {
896 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
897 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
898 ComponentInstance componentInstance = new ComponentInstance();
899 String instanceUniqueId = "id";
900 Map<String, Object> props = new HashMap<>();
902 ComponentInstanceProperty cip = new ComponentInstanceProperty();
903 cip.setInstanceUniqueId("id");
905 List<ComponentInstanceProperty> list = new ArrayList<>();
908 componentInstancesProperties.put("id", list);
911 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
912 instanceUniqueId, props);
916 public void testAddPropertiesOfParentComponent() throws Exception {
917 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
918 ComponentInstance componentInstance = new ComponentInstance();
919 Component componentOfInstance = new Resource();
920 Map<String, Object> props = new HashMap<>();
922 List<PropertyDefinition> properties = new ArrayList<>();
923 properties.add(new PropertyDefinition());
925 ((Resource) componentOfInstance).setProperties(properties);
928 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
929 componentOfInstance, props);
933 public void testCreateNodeType() throws Exception {
935 Component component = new Resource();
936 List<String> array = new ArrayList<>();
938 ((Resource) component).setDerivedFrom(array);
939 ToscaNodeType result;
941 // test when component is resource
942 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
943 Assert.assertNotNull(result);
945 component = new Service();
946 // test when component is service
947 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
948 Assert.assertNotNull(result);
952 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
953 Component container = new Service();
954 Either<Map<String, ToscaNodeType>, ToscaError> result;
955 List<ComponentInstance> componentInstances = new ArrayList<>();
956 ComponentInstance instance = new ComponentInstance();
957 instance.setOriginType(OriginTypeEnum.ServiceProxy);
958 instance.setSourceModelUid("targetModelUid");
959 instance.setToscaComponentName("toscaComponentName");
961 componentInstances.add(instance);
962 container.setComponentInstances(componentInstances);
963 when(toscaOperationFacade.getToscaElement(any(String.class),
964 any(ComponentParametersView.class)))
965 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
966 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
967 Assert.assertTrue(result.isRight());
971 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
972 Component container = new Service();
973 Either<Map<String, ToscaNodeType>, ToscaError> result;
974 List<ComponentInstance> componentInstances = new ArrayList<>();
975 ComponentInstance instance = new ComponentInstance();
976 instance.setOriginType(OriginTypeEnum.ServiceProxy);
977 instance.setSourceModelUid("targetModelUid");
978 instance.setToscaComponentName("toscaComponentName");
979 componentInstances.add(instance);
980 container.setComponentInstances(componentInstances);
982 when(toscaOperationFacade.getToscaElement(any(String.class),
983 any(ComponentParametersView.class)))
984 .thenReturn(Either.left(new Resource()));
985 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
986 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
987 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
988 Assert.assertTrue(result.isRight());
992 public void testCreateProxyInterfaceTypesPositive() {
993 Component container = new Service();
994 Either<Map<String, ToscaNodeType>, ToscaError> result;
995 List<ComponentInstance> componentInstances = new ArrayList<>();
996 ComponentInstance instance = new ComponentInstance();
997 instance.setOriginType(OriginTypeEnum.ServiceProxy);
998 instance.setSourceModelUid("targetModelUid");
999 instance.setToscaComponentName("toscaComponentName");
1000 componentInstances.add(instance);
1001 container.setComponentInstances(componentInstances);
1003 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1004 .thenReturn(Either.left(Collections.emptyMap()));
1006 Component proxyResource = new Resource();
1007 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
1008 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
1009 proxyResource.setInterfaces(proxyInterfaces);
1010 when(toscaOperationFacade.getToscaElement(any(String.class),
1011 any(ComponentParametersView.class)))
1012 .thenReturn(Either.left(proxyResource));
1014 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
1015 Assert.assertNotNull(result);
1016 Assert.assertTrue(result.isLeft());
1017 Assert.assertEquals(1, result.left().value().size());
1021 public void testCreateProxyNodeTypes() throws Exception {
1022 Map<String, Component> componentCache = new HashMap<>();
1023 Component container = new Resource();
1024 Either<Map<String, ToscaNodeType>, ToscaError> result;
1025 List<ComponentInstance> componentInstances = new ArrayList<>();
1026 ComponentInstance instance = new ComponentInstance();
1027 instance.setOriginType(OriginTypeEnum.ServiceProxy);
1028 instance.setSourceModelUid("targetModelUid");
1030 componentInstances.add(instance);
1031 container.setComponentInstances(componentInstances);
1033 when(toscaOperationFacade.getLatestByName("serviceProxy"))
1034 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1036 // test when getLatestByName return is right
1037 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1038 Assert.assertNotNull(result);
1042 public void testCreateServiceSubstitutionNodeTypes() throws Exception {
1043 Map<String, Component> componentCache = new HashMap<>();
1045 Component referencedService = getNewService();
1046 referencedService.setInvariantUUID("uuid");
1047 referencedService.setUUID("uuid");
1048 referencedService.setUniqueId("targetModelUid");
1049 referencedService.setDescription("desc");
1050 componentCache.put("targetModelUid", referencedService);
1052 Component containerService = new Service();
1053 List<ComponentInstance> componentInstances = new ArrayList<>();
1054 ComponentInstance instance = new ComponentInstance();
1055 instance.setOriginType(OriginTypeEnum.ServiceSubstitution);
1056 instance.setSourceModelUid("targetModelUid");
1058 componentInstances.add(instance);
1059 containerService.setComponentInstances(componentInstances);
1061 when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
1062 .thenReturn(Either.left(Collections.emptyMap()));
1063 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1064 when(capabilityRequirementConverter.convertRequirements(any(Map.class), any(Service.class),
1065 any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
1067 ToscaTemplate toscaNode = new ToscaTemplate("1_1");
1069 Deencapsulation.invoke(testSubject, "createServiceSubstitutionNodeTypes", componentCache, containerService, toscaNode);
1070 Assert.assertNotNull(toscaNode.getNode_types());
1074 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
1075 Map<String, Component> componentCache = new HashMap<>();
1076 Component container = new Resource();
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");
1083 componentInstances.add(instance);
1084 container.setComponentInstances(componentInstances);
1086 when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
1088 ComponentParametersView parameterView = new ComponentParametersView();
1089 parameterView.disableAll();
1090 parameterView.setIgnoreCategories(false);
1092 when(toscaOperationFacade.getToscaElement(any(String.class),
1093 any(ComponentParametersView.class)))
1094 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1096 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1098 // test when getLatestByName is left
1099 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
1100 Assert.assertNotNull(result);
1104 public void testCreateProxyNodeType() throws Exception {
1105 Map<String, Component> componentCache = new HashMap<>();
1106 Component origComponent = new Resource();
1107 Component proxyComponent = new Resource();
1108 ComponentInstance instance = new ComponentInstance();
1109 ToscaNodeType result;
1111 when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
1114 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
1115 proxyComponent, instance);
1116 Assert.assertNotNull(result);
1120 public void testConvertComponentInstanceRequirements() throws Exception {
1121 Component component = new Resource();
1122 ComponentInstance componentInstance = new ComponentInstance();
1123 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1124 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
1125 Component originComponent = new Resource();
1126 Map<String, Component> componentCache = new HashMap<>();
1127 Either<ToscaNodeTemplate, ToscaError> result;
1130 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1131 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1132 Assert.assertNotNull(result);
1134 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1135 reldef.setFromNode("name");
1136 reldef.setToNode("name1");
1137 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1138 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1139 cap.setRelation(new RelationshipInfo());
1140 relationships.add(cap);
1141 reldef.setRelationships(relationships);
1142 relations.add(reldef);
1143 componentInstance.setUniqueId("name");
1145 List<ComponentInstance> instances = new ArrayList<>();
1146 instances.add(componentInstance);
1147 component.setComponentInstances(instances);
1149 // test when filteredRElations ins't empty
1150 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1151 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1152 Assert.assertNotNull(result);
1156 public void buildRequirementFailure() {
1157 final Component fromOriginComponent = new Resource();
1158 final ComponentInstance fromInstance = new ComponentInstance();
1159 final String fromInstanceUid = "fromInstanceUid";
1160 fromInstance.setUniqueId(fromInstanceUid);
1161 fromInstance.setComponentUid("componentUid");
1162 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1163 relationshipDefinition.setToNode("wrongNodeUid");
1164 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1165 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1166 relationship.setRequirement(new RequirementDataDefinition());
1167 relationshipList.add(relationship);
1168 relationshipDefinition.setRelationships(relationshipList);
1169 final List<ComponentInstance> instancesList = new ArrayList<>();
1170 instancesList.add(fromInstance);
1171 String expectedError = String
1172 .format("Failed to find a relation from the node %s to the node %s", fromInstance.getName(),
1173 relationshipDefinition.getToNode());
1174 assertThrows(ToscaExportException.class, () ->
1175 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1176 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1179 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1180 instancesList, relationshipDefinition, new HashMap<>());
1181 } catch (Exception e) {
1182 assertTrue(e instanceof ToscaExportException);
1183 assertEquals(expectedError, e.getMessage());
1186 final RelationshipInfo relation = new RelationshipInfo();
1187 final String requirementUid = "Uid";
1188 relation.setRequirementUid(requirementUid);
1189 final String requirementName = "requirementName";
1190 relation.setRequirement(requirementName);
1191 final String capabilityName = "capabilityName";
1192 relation.setCapability(capabilityName);
1193 final String capabilityOwnerId = "capabilityOwnerId";
1194 relation.setCapabilityOwnerId(capabilityOwnerId);
1195 relationship.setRelation(relation);
1197 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1198 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1199 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1200 fromOriginComponent.setRequirements(requirementMap);
1201 relationshipDefinition.setToNode(fromInstanceUid);
1203 expectedError = String
1204 .format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s",
1205 relation.getRequirementUid(), fromOriginComponent.getUniqueId());
1208 assertThrows(ToscaExportException.class, () ->
1209 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1210 instancesList, relationshipDefinition, new HashMap<>()), expectedError);
1212 requirementDefinition.setName(requirementName);
1214 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1215 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1217 expectedError = String.format(
1218 "Failed to build substituted name for the requirement %s. "
1219 + "Failed to get an origin component with uniqueId %s",
1220 requirementName, fromInstance.getActualComponentUid());
1221 assertThrows(ToscaExportException.class, () -> Deencapsulation
1222 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1223 relationshipDefinition, new HashMap<>()), expectedError);
1225 final Component toOriginComponent = new Resource();
1226 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1227 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1229 capabilityDefinition.setName(capabilityName);
1230 capabilityDefinition.setOwnerId(capabilityOwnerId);
1231 capabilityDefinition.setType("aType");
1232 final String capabilityPreviousName = "capabilityPreviousName";
1233 capabilityDefinition.setPreviousName(capabilityPreviousName);
1234 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1235 toOriginComponent.setCapabilities(capabilityMap);
1236 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1237 .thenReturn(Either.left(toOriginComponent));
1240 requirementDefinition.setCapability(capabilityName);
1241 relation.setCapability("wrong");
1242 final String requirementPreviousName = "requirementPreviousName";
1243 requirementDefinition.setPreviousName(requirementPreviousName);
1244 requirementDefinition.setPath(new ArrayList<>());
1246 expectedError = String
1247 .format("Failed to find a capability with name %s on a component with uniqueId %s",
1248 relation.getCapability(), fromOriginComponent.getUniqueId());
1250 assertThrows(ToscaExportException.class, () -> Deencapsulation
1251 .invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1252 relationshipDefinition, new HashMap<>()),
1257 public void testBuildRequirement() {
1258 final ComponentInstance fromInstance = new ComponentInstance();
1259 fromInstance.setUniqueId("name");
1260 fromInstance.setComponentUid("string");
1261 final List<ComponentInstance> instancesList = new ArrayList<>();
1263 final Map<String, Component> componentCache = new HashMap<>();
1264 final List<CapabilityRequirementRelationship> relationshipList = new ArrayList<>();
1265 final CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
1266 relationship.setRequirement(new RequirementDataDefinition());
1267 final RelationshipInfo relation = new RelationshipInfo();
1268 final String requirementUid = "Uid";
1269 relation.setRequirementUid(requirementUid);
1270 final String requirementName = "requirementName";
1271 relation.setRequirement(requirementName);
1272 final String capabilityName = "capabilityName";
1273 relation.setCapability(capabilityName);
1274 final String capabilityOwnerId = "capabilityOwnerId";
1275 relation.setCapabilityOwnerId(capabilityOwnerId);
1276 relationship.setRelation(relation);
1277 relationshipList.add(relationship);
1278 final RequirementCapabilityRelDef relationshipDefinition = new RequirementCapabilityRelDef();
1279 relationshipDefinition.setRelationships(relationshipList);
1280 relationshipDefinition.setToNode("name");
1281 instancesList.add(fromInstance);
1282 final RequirementDefinition requirementDefinition = new RequirementDefinition();
1283 requirementDefinition.setName(requirementName);
1284 requirementDefinition.setCapability(capabilityName);
1285 final String requirementPreviousName = "requirementPreviousName";
1286 requirementDefinition.setPreviousName(requirementPreviousName);
1287 requirementDefinition.setPath(new ArrayList<>());
1288 final Map<String, List<RequirementDefinition>> requirementMap = new HashMap<>();
1289 requirementMap.put(requirementUid, Collections.singletonList(requirementDefinition));
1290 final Component fromOriginComponent = new Resource();
1291 fromOriginComponent.setRequirements(requirementMap);
1293 final Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
1294 final CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1295 capabilityDefinition.setName(capabilityName);
1296 capabilityDefinition.setOwnerId(capabilityOwnerId);
1297 final String capabilityPreviousName = "capabilityPreviousName";
1298 capabilityDefinition.setPreviousName(capabilityPreviousName);
1299 capabilityMap.put(capabilityName, Collections.singletonList(capabilityDefinition));
1300 final Component toOriginComponent = new Resource();
1301 toOriginComponent.setCapabilities(capabilityMap);
1303 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1304 .thenReturn(Either.left(toOriginComponent));
1305 final String builtCapabilityName = "builtCapabilityName";
1307 capabilityRequirementConverter
1308 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq(capabilityName), eq(
1309 capabilityPreviousName)))
1310 .thenReturn(Either.left(builtCapabilityName));
1312 final String builtRequirementName = "builtRequirementName";
1314 capabilityRequirementConverter
1315 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq(requirementName), eq(
1316 requirementPreviousName)))
1317 .thenReturn(Either.left(builtRequirementName));
1319 final Map<String, ToscaTemplateRequirement> actualRequirementMap =
1320 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1321 instancesList, relationshipDefinition, componentCache);
1322 assertNotNull(actualRequirementMap);
1323 assertFalse(actualRequirementMap.isEmpty());
1324 assertTrue(actualRequirementMap.containsKey(builtRequirementName));
1325 final ToscaTemplateRequirement actualToscaTemplateRequirement = actualRequirementMap.get(builtRequirementName);
1326 assertNotNull(actualToscaTemplateRequirement);
1327 assertEquals(builtCapabilityName, actualToscaTemplateRequirement.getCapability());
1329 //to toOriginComponent not found
1330 when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class)))
1331 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1333 assertThrows(ToscaExportException.class, () -> Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent,
1334 instancesList, relationshipDefinition, componentCache));
1338 public void testAddRequirmentsWithBuildAndAddRequirements() {
1339 ComponentInstance fromInstance = new ComponentInstance();
1340 Component fromOriginComponent = new Resource();
1341 List<ComponentInstance> instancesList = new ArrayList<>();
1342 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1343 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1344 Map<String, Component> componentCache = new HashMap<>();
1346 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1347 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1348 cap.setRequirement(new RequirementDataDefinition());
1349 RelationshipInfo relation = new RelationshipInfo();
1350 relation.setRequirementUid("Uid");
1351 relation.setRequirement("requirment");
1352 relation.setCapability("cap");
1353 relation.setCapabilityOwnerId("id");
1354 cap.setRelation(relation);
1355 relationships.add(cap);
1356 rel.setRelationships(relationships);
1357 rel.setToNode("name");
1358 fromInstance.setUniqueId("name");
1359 fromInstance.setComponentUid("string");
1360 instancesList.add(fromInstance);
1361 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1363 List<RequirementDefinition> defs = new ArrayList<>();
1364 RequirementDefinition def = new RequirementDefinition();
1365 def.setName("requirment");
1366 def.setCapability("cap");
1368 requirements.put("key", defs);
1369 fromOriginComponent.setRequirements(requirements);
1371 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1372 List<CapabilityDefinition> caps = new ArrayList<>();
1373 CapabilityDefinition capdef = new CapabilityDefinition();
1374 capdef.setOwnerId("id");
1375 capdef.setName("cap");
1376 capdef.setPreviousName("before cap");
1377 capdef.setType("type");
1379 capabilities.put("cap", caps);
1380 fromOriginComponent.setCapabilities(capabilities);
1382 when(toscaOperationFacade.getToscaElement(any(String.class),
1383 any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1386 capabilityRequirementConverter
1387 .buildSubstitutedName(anyMap(), any(Component.class), anyList(), anyString(), anyString()))
1388 .thenReturn(Either.right(false));
1390 final String expectedErrorMsg =
1391 String.format("Failed to build a substituted capability name for the capability "
1392 + "with name %s on a component with uniqueId %s",
1393 cap.getRequirement(), fromOriginComponent.getUniqueId());
1395 assertThrows(ToscaExportException.class, () ->
1396 Deencapsulation.invoke(testSubject, "buildRequirement", fromInstance, fromOriginComponent, instancesList,
1397 rel, componentCache), expectedErrorMsg);
1401 public void testBuildAndAddRequirement() {
1402 Component fromOriginComponent = new Resource();
1403 Component toOriginComponent = new Resource();
1404 CapabilityDefinition capability = new CapabilityDefinition();
1405 RequirementDefinition requirement = new RequirementDefinition();
1406 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1407 ComponentInstance toInstance = new ComponentInstance();
1408 Map<String, Component> componentCache = new HashMap<>();
1409 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1410 capabilityRequirementRelationship.setRelation(reqAndRelationshipPair);
1411 capability.setPath(new ArrayList<>());
1412 capability.setPreviousName("before cap");
1413 reqAndRelationshipPair.setCapability("cap");
1414 requirement.setPath(new ArrayList<>());
1415 requirement.setPreviousName("before req");
1416 reqAndRelationshipPair.setRequirement("req");
1419 capabilityRequirementConverter
1420 .buildSubstitutedName(anyMap(), eq(toOriginComponent), anyList(), eq("cap"), anyString()))
1421 .thenReturn(Either.left("buildCapNameRes"));
1424 capabilityRequirementConverter
1425 .buildSubstitutedName(anyMap(), eq(fromOriginComponent), anyList(), eq("req"), anyString()))
1426 .thenReturn(Either.left("buildReqNameRes"));
1429 final Map<String, ToscaTemplateRequirement> requirementMap =
1430 Deencapsulation.invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent,
1431 capability, requirement, capabilityRequirementRelationship, toInstance, componentCache);
1432 assertNotNull(requirementMap);
1433 assertFalse(requirementMap.isEmpty());
1434 assertTrue(requirementMap.containsKey("buildReqNameRes"));
1435 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get("buildReqNameRes");
1436 assertNotNull(actualToscaTemplateRequirement);
1437 assertEquals("buildCapNameRes", actualToscaTemplateRequirement.getCapability());
1441 public void testBuildRequirementBuildSubstitutedNameReturnsValueTwice() {
1442 final Component fromOriginComponent = new Resource();
1443 final Component toOriginComponent = new Resource();
1444 final CapabilityDefinition capability = new CapabilityDefinition();
1445 final RequirementDefinition requirement = new RequirementDefinition();
1446 final RelationshipInfo relationship = new RelationshipInfo();
1447 final CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
1448 capabilityRequirementRelationship.setRelation(relationship);
1449 ComponentInstance toInstance = new ComponentInstance();
1450 Map<String, Component> componentCache = new HashMap<>();
1451 capability.setPath(new ArrayList<>());
1452 relationship.setCapability("cap");
1453 requirement.setPath(new ArrayList<>());
1454 relationship.setRequirement("req");
1456 final String builtCapabilityOrRequirementName = "builtCapabilityOrRequirementName";
1457 when(capabilityRequirementConverter.buildSubstitutedName(any(), any(), any(), any(), any()))
1458 .thenReturn(Either.left(builtCapabilityOrRequirementName));
1460 final Map<String, ToscaTemplateRequirement> requirementMap = Deencapsulation
1461 .invoke(testSubject, "buildRequirement", fromOriginComponent, toOriginComponent, capability, requirement,
1462 capabilityRequirementRelationship, toInstance, componentCache);
1463 assertNotNull(requirementMap);
1464 assertFalse(requirementMap.isEmpty());
1465 assertTrue(requirementMap.containsKey(builtCapabilityOrRequirementName));
1466 final ToscaTemplateRequirement actualToscaTemplateRequirement = requirementMap.get(builtCapabilityOrRequirementName);
1467 assertNotNull(actualToscaTemplateRequirement);
1468 assertEquals(builtCapabilityOrRequirementName, actualToscaTemplateRequirement.getCapability());
1472 public void testIsRequirementBelongToRelation() throws Exception {
1474 Component originComponent = new Resource();
1475 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1476 RequirementDefinition requirement = new RequirementDefinition();
1477 String fromInstanceId = "";
1480 requirement.setName("name");
1481 reqAndRelationshipPair.setRequirement("name1");
1483 // test return false
1484 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1485 reqAndRelationshipPair, requirement, fromInstanceId);
1486 Assert.assertNotNull(result);
1490 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1492 Component originComponent = new Service();
1493 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1494 RequirementDefinition requirement = new RequirementDefinition();
1495 String fromInstanceId = "";
1498 // default test return true
1499 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1500 reqAndRelationshipPair, requirement, fromInstanceId);
1501 Assert.assertNotNull(result);
1505 public void testIsRequirementBelongToOwner() throws Exception {
1507 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1508 RequirementDefinition requirement = new RequirementDefinition();
1509 String fromInstanceId = "";
1510 Component originComponent = new Resource();
1513 requirement.setOwnerId("owner1");
1514 reqAndRelationshipPair.setRequirementOwnerId("owner");
1517 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1518 fromInstanceId, originComponent);
1519 Assert.assertNotNull(result);
1523 public void testIsCvfc() throws Exception {
1525 Component component = new Resource();
1528 component = new Service();
1530 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1531 Assert.assertNotNull(result);
1535 public void testConvertCapabilities() throws Exception {
1536 Component component = new Resource();
1537 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1538 Map<String, Component> componentCache = new HashMap<>();
1539 Either<SubstitutionMapping, ToscaError> result;
1541 when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(componentCache, component))
1542 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1544 // default test return isRight
1545 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1547 Assert.assertNotNull(result);
1551 public void testConvertCapabilities_1() throws Exception {
1552 Component component = new Resource();
1553 ToscaNodeType nodeType = new ToscaNodeType();
1554 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1555 Either<ToscaNodeType, ToscaError> result;
1557 Map<String, ToscaCapability> capabilities = new HashMap<>();
1558 capabilities.put("key", new ToscaCapability());
1561 result = Deencapsulation
1562 .invoke(testSubject, "convertCapabilities", new HashMap<>(), component, nodeType, dataTypes);
1563 Assert.assertNotNull(result);
1567 public void testConvertToNodeTemplateArtifacts() throws Exception {
1568 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1569 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1570 art.setFile("test_file");
1571 art.setType("test_type");
1572 Map<String, ToscaTemplateArtifact> result;
1573 container.put("test_art", art);
1574 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1575 Assert.assertNotNull(result);
1576 Assert.assertTrue(MapUtils.isNotEmpty(result));
1577 Assert.assertTrue(result.get("test_art").getFile().equals("test_file"));
1578 Assert.assertTrue(result.get("test_art").getType().equals("test_type"));
1582 public void testGetProxyNodeTypeInterfacesNoInterfaces() {
1583 Component service = new Service();
1584 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1585 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1586 Assert.assertFalse(proxyNodeTypeInterfaces.isPresent());
1590 public void testGetProxyNodeTypeInterfaces() {
1591 Component service = getTestComponent();
1592 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1593 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1594 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1595 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1596 Assert.assertNotNull(componentInterfaces);
1601 public void testGetProxyNodeTypePropertiesComponentNull() {
1602 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1603 testSubject.getProxyNodeTypeProperties(null, DATA_TYPES);
1604 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1608 public void testGetProxyNodeTypePropertiesNoProperties() {
1609 Component service = new Service();
1610 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1611 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1612 Assert.assertFalse(proxyNodeTypeProperties.isPresent());
1616 public void testGetProxyNodeTypeProperties() {
1617 Component service = getTestComponent();
1618 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1619 createMockProperty("componentPropInt", null)));
1620 Optional<Map<String, ToscaProperty>> proxyNodeTypeProperties =
1621 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1622 Assert.assertTrue(proxyNodeTypeProperties.isPresent());
1623 Map<String, ToscaProperty> componentProperties = proxyNodeTypeProperties.get();
1624 Assert.assertNotNull(componentProperties);
1625 Assert.assertEquals(2, componentProperties.size());
1629 public void testAddInputsToPropertiesNoInputs() {
1630 Component service = getTestComponent();
1631 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1632 createMockProperty("componentPropInt", null)));
1633 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1634 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1636 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1637 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1638 testSubject.addInputsToProperties(DATA_TYPES, null, proxyNodeTypeProperties);
1639 Assert.assertNotNull(proxyNodeTypeProperties);
1640 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1641 testSubject.addInputsToProperties(DATA_TYPES, new ArrayList<>(), proxyNodeTypeProperties);
1642 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1646 public void testAddInputsToPropertiesWithInputs() {
1647 Component service = getTestComponent();
1648 service.setProperties(Arrays.asList(createMockProperty("componentPropStr", "Default String Prop"),
1649 createMockProperty("componentPropInt", null)));
1650 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1651 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1652 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1653 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1655 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1656 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1657 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1658 Assert.assertNotNull(proxyNodeTypeProperties);
1659 Assert.assertEquals(4, proxyNodeTypeProperties.size());
1663 public void testAddInputsToPropertiesOnlyInputs() {
1664 Component service = getTestComponent();
1665 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1666 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1667 Optional<Map<String, ToscaProperty>> proxyNodeTypePropertiesResult =
1668 testSubject.getProxyNodeTypeProperties(service, DATA_TYPES);
1670 Assert.assertTrue(proxyNodeTypePropertiesResult.isPresent());
1671 Map<String, ToscaProperty> proxyNodeTypeProperties = proxyNodeTypePropertiesResult.get();
1672 testSubject.addInputsToProperties(DATA_TYPES, service.getInputs(), proxyNodeTypeProperties);
1673 Assert.assertNotNull(proxyNodeTypeProperties);
1674 Assert.assertEquals(2, proxyNodeTypeProperties.size());
1678 public void testOperationImplementationInProxyNodeTypeNotPresent() {
1679 Component service = getTestComponent();
1680 InterfaceDefinition interfaceDefinition =
1681 service.getInterfaces().get("normalizedServiceComponentName-interface");
1682 interfaceDefinition.setOperations(new HashMap<>());
1683 final OperationDataDefinition operation = new OperationDataDefinition();
1684 operation.setName("start");
1685 operation.setDescription("op description");
1686 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
1687 implementation.setArtifactName("createBPMN.bpmn");
1688 operation.setImplementation(implementation);
1689 interfaceDefinition.getOperations().put(operation.getName(), operation);
1690 service.getInterfaces().put("normalizedServiceComponentName-interface", interfaceDefinition);
1691 service.setInputs(Arrays.asList(createMockInput("componentInputStr1",
1692 "Default String Input1"), createMockInput("componentInputStr2", "Default String Input2")));
1693 Optional<Map<String, Object>> proxyNodeTypeInterfaces =
1694 testSubject.getProxyNodeTypeInterfaces(service, DATA_TYPES);
1695 Assert.assertTrue(proxyNodeTypeInterfaces.isPresent());
1696 Map<String, Object> componentInterfaces = proxyNodeTypeInterfaces.get();
1697 Assert.assertNotNull(componentInterfaces);
1700 private Component getTestComponent() {
1701 Component component = new Service();
1702 component.setNormalizedName("normalizedServiceComponentName");
1703 InterfaceDefinition addedInterface = new InterfaceDefinition();
1704 addedInterface.setType("com.some.service.or.other.serviceName");
1705 final String interfaceType = "normalizedServiceComponentName-interface";
1706 component.setInterfaces(new HashMap<>());
1707 component.getInterfaces().put(interfaceType, addedInterface);
1711 private PropertyDefinition createMockProperty(String propertyName, String defaultValue){
1712 PropertyDefinition propertyDefinition = new PropertyDefinition();
1713 propertyDefinition.setName(propertyName);
1714 propertyDefinition.setType("string");
1715 propertyDefinition.setDefaultValue(defaultValue);
1716 return propertyDefinition;
1719 private InputDefinition createMockInput(String inputName, String defaultValue){
1720 InputDefinition inputDefinition = new InputDefinition();
1721 inputDefinition.setName(inputName);
1722 inputDefinition.setType("string");
1723 inputDefinition.setDefaultValue(defaultValue);
1724 return inputDefinition;