2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.tosca;
23 import fj.data.Either;
24 import java.util.ArrayList;
25 import java.util.Arrays;
26 import java.util.Collections;
27 import java.util.HashMap;
28 import java.util.List;
30 import java.util.stream.Collectors;
31 import mockit.Deencapsulation;
32 import org.apache.commons.collections.MapUtils;
33 import org.apache.commons.lang3.tuple.ImmutablePair;
34 import org.apache.commons.lang3.tuple.Triple;
35 import org.junit.Assert;
36 import org.junit.Before;
37 import org.junit.Ignore;
38 import org.junit.Test;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mock;
41 import org.mockito.Mockito;
42 import org.mockito.MockitoAnnotations;
43 import org.openecomp.sdc.be.components.BeConfDependentTest;
44 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
45 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
46 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
47 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
48 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
49 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
50 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
51 import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition;
52 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
53 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
54 import org.openecomp.sdc.be.model.ArtifactDefinition;
55 import org.openecomp.sdc.be.model.CapabilityDefinition;
56 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
57 import org.openecomp.sdc.be.model.Component;
58 import org.openecomp.sdc.be.model.ComponentInstance;
59 import org.openecomp.sdc.be.model.ComponentInstanceInput;
60 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
61 import org.openecomp.sdc.be.model.ComponentParametersView;
62 import org.openecomp.sdc.be.model.DataTypeDefinition;
63 import org.openecomp.sdc.be.model.GroupDefinition;
64 import org.openecomp.sdc.be.model.GroupInstance;
65 import org.openecomp.sdc.be.model.InputDefinition;
66 import org.openecomp.sdc.be.model.InterfaceDefinition;
67 import org.openecomp.sdc.be.model.PropertyDefinition;
68 import org.openecomp.sdc.be.model.RelationshipInfo;
69 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
70 import org.openecomp.sdc.be.model.RequirementDefinition;
71 import org.openecomp.sdc.be.model.Resource;
72 import org.openecomp.sdc.be.model.Service;
73 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
74 import org.openecomp.sdc.be.model.category.CategoryDefinition;
75 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
76 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
77 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
78 import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
79 import org.openecomp.sdc.be.tosca.model.SubstitutionMapping;
80 import org.openecomp.sdc.be.tosca.model.ToscaCapability;
81 import org.openecomp.sdc.be.tosca.model.ToscaMetadata;
82 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
83 import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
84 import org.openecomp.sdc.be.tosca.model.ToscaProperty;
85 import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
86 import org.openecomp.sdc.be.tosca.model.ToscaTemplateArtifact;
87 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
88 import org.openecomp.sdc.be.tosca.model.ToscaTopolgyTemplate;
89 import org.openecomp.sdc.be.tosca.utils.InputConverter;
91 import static org.junit.Assert.assertThat;
92 import static org.hamcrest.CoreMatchers.is;
94 public class ToscaExportHandlerTest extends BeConfDependentTest {
95 private static final String COMPONENT_PROPERTY_NAME = "prop1";
96 private static final String COMPONENT_PROPERTY_TYPE = "string";
97 private static final String COMPONENT_INPUT_NAME = "input1";
98 private static final String COMPONENT_INPUT_TYPE = "integer";
99 private static final String RESOURCE_NAME = "resource";
100 private static final String TOSCA_VERSION = "tosca_simple_yaml_1_1";
103 ToscaExportHandler testSubject;
106 ApplicationDataTypeCache dataTypeCache;
109 ToscaOperationFacade toscaOperationFacade;
112 CapabilityRequirementConverter capabiltyRequirementConvertor;
115 InputConverter inputConverter;
118 GroupExportParser groupExportParser;
121 GroupExportParserImpl groupExportParserImpl;
124 InterfaceLifecycleOperation interfaceLifecycleOperation;
127 public void setUpMock() throws Exception {
128 MockitoAnnotations.initMocks(this);
131 private Resource getNewResource() {
132 Resource resource = new Resource();
133 List<CategoryDefinition> categories = new ArrayList<>();
134 CategoryDefinition category = new CategoryDefinition();
135 List<SubCategoryDefinition> subcategories = new ArrayList<>();
136 SubCategoryDefinition subcategory = new SubCategoryDefinition();
137 List<DataTypeDefinition> dataTypes = new ArrayList<>();
138 DataTypeDefinition dataType = new DataTypeDefinition();
139 dataType.setName("dataTypeName");
140 dataType.setDerivedFromName("tosca.datatypes.Root");
141 PropertyDataDefinition propData = new PropertyDataDefinitionBuilder()
145 List<PropertyDataDefinition> propDataList = Arrays.asList(propData);
146 dataType.setPropertiesData(propDataList);
147 List<PropertyDefinition> propList = propDataList.stream().map(PropertyDefinition::new)
148 .collect(Collectors.toList());
149 dataType.setProperties(propList);
150 dataTypes.add(dataType);
152 subcategory.setName("name");
153 subcategories.add(subcategory);
154 category.setName("name");
155 category.setSubcategories(subcategories);
156 categories.add(category);
158 resource.setCategories(categories);
159 resource.setVersion("version");
160 resource.setVendorName("vendorName");
161 resource.setVendorRelease("vendorRelease");
162 resource.setResourceVendorModelNumber("resourceVendorModelNumber");
163 resource.setDataTypes(dataTypes);
168 private Service getNewService() {
169 Service service = new Service();
170 List<CategoryDefinition> categories = new ArrayList<>();
171 CategoryDefinition category = new CategoryDefinition();
172 List<SubCategoryDefinition> subcategories = new ArrayList<>();
173 SubCategoryDefinition subcategory = new SubCategoryDefinition();
175 subcategory.setName("name");
176 subcategories.add(subcategory);
177 category.setName("name");
178 category.setSubcategories(subcategories);
179 categories.add(category);
181 service.setCategories(categories);
182 service.setComponentType(ComponentTypeEnum.SERVICE);
183 service.setServiceType("serviceType");
184 service.setServiceRole("serviceRole");
185 service.setEnvironmentContext("environmentContext");
191 public void testExportComponent() throws Exception {
192 Component component = getNewResource();
193 Either<ToscaRepresentation, ToscaError> result;
195 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
196 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
197 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
198 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
199 .thenReturn(Either.left(Collections.emptyMap()));
201 // default test when component is Resource
202 result = testSubject.exportComponent(component);
204 component = getNewService();
205 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
206 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
207 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
209 // default test when component is Service
210 result = testSubject.exportComponent(component);
214 public void testExportComponentInterface() throws Exception {
215 Component component = getNewResource();
216 Either<ToscaRepresentation, ToscaError> result;
218 ((Resource) component).setInterfaces(new HashMap<>());
220 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
221 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
222 // default test when convertInterfaceNodeType is right
223 result = testSubject.exportComponentInterface(component, false);
225 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
226 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
227 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
229 // default test when convertInterfaceNodeType is left
230 result = testSubject.exportComponentInterface(component, false);
235 public void testConvertInterfaceNodeTypeProperties() throws Exception {
237 Resource component = getNewResource();
239 component.setInterfaces(new HashMap<>());
240 InputDefinition input = new InputDefinition();
241 input.setName(COMPONENT_INPUT_NAME);
242 input.setType(COMPONENT_INPUT_TYPE);
243 component.setInputs(Collections.singletonList(input));
244 PropertyDefinition property = new PropertyDefinition();
245 property.setName(COMPONENT_PROPERTY_NAME);
246 property.setType(COMPONENT_PROPERTY_TYPE);
247 component.setProperties(Collections.singletonList(property));
248 component.setName(RESOURCE_NAME);
249 component.setToscaResourceName(RESOURCE_NAME);
251 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
252 .thenReturn(Either.left(Collections.emptyMap()));
253 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
254 // when convertRequirements is called, make it return the same value as 3rd (index=2) argument.
256 .when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
257 Mockito.any(ToscaNodeType.class))).thenAnswer(i -> Either.left(i.getArgument(2)));
259 Either<ToscaTemplate, ToscaError> result = (Either<ToscaTemplate, ToscaError>) Deencapsulation
260 .invoke(testSubject, "convertInterfaceNodeType", new HashMap<String, Component>(), component,
261 new ToscaTemplate(TOSCA_VERSION), new HashMap<String, ToscaNodeType>(), false);
262 assertThat(result.isLeft(), is(true));
263 Map<String, ToscaNodeType> nodeTypeMap = result.left().value().getNode_types();
264 assertThat(nodeTypeMap.size(), is(1));
265 ToscaNodeType toscaNodeType = nodeTypeMap.values().iterator().next();
266 Map<String, ToscaProperty> propertyMap = toscaNodeType.getProperties();
267 // Check if inputs and properties in component are merged properly
268 assertThat(propertyMap.size(), is(2));
269 assertThat(propertyMap.containsKey(COMPONENT_INPUT_NAME), is(true));
270 assertThat(propertyMap.containsKey(COMPONENT_PROPERTY_NAME), is(true));
274 public void testCreateToscaRepresentation() throws Exception {
275 ToscaTemplate toscaTemplate = new ToscaTemplate("");
276 ToscaRepresentation result;
279 result = testSubject.createToscaRepresentation(toscaTemplate);
283 public void testGetDependencies() throws Exception {
285 Component component = new Resource();
286 Either<ToscaTemplate, ToscaError> result;
289 result = testSubject.getDependencies(component);
293 public void testConvertToscaTemplate() throws Exception {
295 Component component = getNewResource();
296 ToscaTemplate toscaNode = new ToscaTemplate("");
297 Either<ToscaTemplate, ToscaError> result;
298 List<ComponentInstance> resourceInstances = new ArrayList<>();
299 ComponentInstance instance = new ComponentInstance();
301 instance.setOriginType(OriginTypeEnum.SERVICE);
302 instance.setSourceModelUid("targetModelUid");
303 resourceInstances.add(instance);
305 component.setComponentInstances(resourceInstances);
307 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
308 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
309 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
312 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
315 @Ignore("need to solve problem with groupExportParser injection")
317 public void testConvertToscaTemplateWhenComponentContainsGroup() {
318 Component component = getNewResource();
319 ToscaTemplate toscaNode = new ToscaTemplate("");
320 Either<ToscaTemplate, ToscaError> result;
321 component.setComponentInstances(new ArrayList<>());
323 List<GroupDefinition> groups = new ArrayList<>();
324 GroupDefinition group = new GroupDefinition();
325 List<String> artifacts = new ArrayList<>();
326 artifacts.add("artifact");
327 group.setType("org.openecomp.groups.VfModule");
328 group.setArtifacts(artifacts);
330 component.setGroups(groups);
332 Map<String, String[]> substitutionMappingMap = new HashMap<>();
333 String[] array = { "value1", "value2" };
334 substitutionMappingMap.put("key", array);
336 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
337 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
339 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
340 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
341 .thenReturn(Either.left(new SubstitutionMapping()));
343 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
345 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
346 .thenReturn(new HashMap<>());
348 Mockito.when(groupExportParser.getGroups(component))
351 // test component contains group
352 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
355 @Ignore("need to solve problem with groupExportParser injection")
357 public void testConvertToscaTemplateWhenComponentIsService() throws Exception {
358 Component component = getNewService();
359 ToscaTemplate toscaNode = new ToscaTemplate("");
360 Either<ToscaTemplate, ToscaError> result;
361 component.setComponentInstances(new ArrayList<>());
363 List<GroupDefinition> groups = new ArrayList<>();
364 GroupDefinition group = new GroupDefinition();
365 List<String> artifacts = new ArrayList<>();
366 artifacts.add("artifact");
367 group.setType("org.openecomp.groups.VfModule");
368 group.setArtifacts(artifacts);
370 component.setGroups(groups);
372 Map<String, String[]> substitutionMappingMap = new HashMap<>();
373 String[] array = { "value1", "value2" };
374 substitutionMappingMap.put("key", array);
376 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(Mockito.any(Map.class),
377 Mockito.any(Component.class))).thenReturn(Either.left(substitutionMappingMap));
379 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingRequirements(Mockito.any(Map.class),
380 Mockito.any(Component.class), Mockito.any(SubstitutionMapping.class)))
381 .thenReturn(Either.left(new SubstitutionMapping()));
383 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
385 Mockito.when(inputConverter.convertInputs(Mockito.any(List.class),Mockito.any(Map.class)))
386 .thenReturn(new HashMap<>());
387 // test component contains group
388 result = Deencapsulation.invoke(testSubject, "convertToscaTemplate", component, toscaNode);
392 public void testConvertMetadata_1() throws Exception {
394 Component component = getNewResource();
395 boolean isInstance = true;
396 ComponentInstance componentInstance = new ComponentInstance();
397 componentInstance.setOriginType(OriginTypeEnum.ServiceProxy);
398 componentInstance.setSourceModelInvariant("targetModelInvariant");
400 ToscaMetadata result;
404 result = Deencapsulation.invoke(testSubject, "convertMetadata", component, isInstance, componentInstance);
408 public void testFillImports() throws Exception {
410 Component component = getNewService();
411 ToscaTemplate toscaTemplate = new ToscaTemplate("");
412 Either<ImmutablePair<ToscaTemplate, Map<String, Component>>, ToscaError> result;
414 ComponentInstance instance = new ComponentInstance();
415 List<ComponentInstance> resourceInstances = new ArrayList<>();
416 instance.setComponentUid("name");
417 resourceInstances.add(instance);
418 component.setComponentInstances(resourceInstances);
419 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
420 ArtifactDefinition artifact = new ArtifactDefinition();
421 artifact.setArtifactName("name.name2");
422 toscaArtifacts.put("assettoscatemplate", artifact);
423 component.setToscaArtifacts(toscaArtifacts);
425 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.any(String.class)))
426 .thenReturn(Either.left(component));
429 result = Deencapsulation.invoke(testSubject, "fillImports", component, toscaTemplate);
433 public void testCreateDependency() throws Exception {
435 Map<String, Component> componentCache = new HashMap<>();
436 List<Map<String, Map<String, String>>> imports = new ArrayList<>();
437 List<Triple<String, String, Component>> dependecies = new ArrayList<>();
438 ComponentInstance ci = new ComponentInstance();
439 Component component = getNewResource();
441 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
442 ArtifactDefinition artifact = new ArtifactDefinition();
443 artifact.setArtifactName("name.name2");
444 toscaArtifacts.put("assettoscatemplate", artifact);
445 component.setToscaArtifacts(toscaArtifacts);
446 ci.setComponentUid("name");
447 ci.setOriginType(OriginTypeEnum.ServiceProxy);
448 ci.setSourceModelUid("modelName");
450 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("name"))).thenReturn(Either.left(component));
452 Mockito.when(toscaOperationFacade.getToscaFullElement(Mockito.eq("modelName")))
453 .thenReturn(Either.left(new Service()));
456 Deencapsulation.invoke(testSubject, "createDependency", componentCache, imports, dependecies, ci);
460 public void testGetInterfaceFilename() throws Exception {
461 String artifactName = "artifact.name";
465 result = ToscaExportHandler.getInterfaceFilename(artifactName);
469 public void testConvertNodeType() throws Exception {
470 Component component = new Resource();
471 ToscaTemplate toscaNode = new ToscaTemplate("");
472 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
473 Either<ToscaTemplate, ToscaError> result;
475 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.right(JanusGraphOperationStatus.ALREADY_EXIST));
476 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
477 .thenReturn(Either.left(Collections.emptyMap()));
479 result = Deencapsulation.invoke(testSubject, "convertNodeType",new HashMap<>(), component, toscaNode, nodeTypes);
483 public void testConvertInterfaceNodeType() throws Exception {
484 Component component = getNewResource();
485 ToscaTemplate toscaNode = new ToscaTemplate("");
486 Map<String, ToscaNodeType> nodeTypes = new HashMap<>();
487 Either<ToscaTemplate, ToscaError> result;
488 List<InputDefinition> inputs = new ArrayList<>();
489 inputs.add(new InputDefinition());
490 component.setInputs(inputs);
492 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
493 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes()).thenReturn(Either.left(Collections.emptyMap()));
495 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class), Mockito.any(Resource.class),
496 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
499 result = Deencapsulation.invoke(testSubject, "convertInterfaceNodeType",new HashMap<>(), component, toscaNode
502 @Ignore("need to fix change in injected class.")
504 public void testConvertReqCapAndTypeName() throws Exception {
505 Component component = new Resource();
506 ToscaTemplate toscaNode = new ToscaTemplate("");
507 Map<String, ToscaNodeType> nodeTypes = new HashMap();
508 ToscaNodeType toscaNodeType = new ToscaNodeType();
509 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
510 Either<ToscaTemplate, ToscaError> result;
513 capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class),Mockito.any(Resource.class), Mockito.any(Map.class)))
514 .thenReturn(new HashMap<>());
516 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Resource.class),
517 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
520 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName",new HashMap<>(), component, toscaNode, nodeTypes,
521 toscaNodeType, dataTypes);
523 component = new Service();
525 Mockito.when(capabiltyRequirementConvertor.convertRequirements(Mockito.any(Map.class),Mockito.any(Service.class),
526 Mockito.any(ToscaNodeType.class))).thenReturn(Either.left(new ToscaNodeType()));
528 // test when component is service
529 result = Deencapsulation.invoke(testSubject, "convertReqCapAndTypeName", component, toscaNode, nodeTypes,
530 toscaNodeType, dataTypes);
535 public void testConvertNodeTemplates() throws Exception {
536 Component component = getNewResource();
537 List<ComponentInstance> componentInstances = new ArrayList<>();
538 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
539 Map<String, Component> componentCache = new HashMap<>();
540 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
541 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
542 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
543 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
544 List<ComponentInstanceInput> inputs = new ArrayList<>();
545 inputs.add(new ComponentInstanceInput());
546 componentInstancesInputs.put("key", inputs);
547 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
548 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
549 reldef.setFromNode("node");
550 resourceInstancesRelations.add(reldef);
551 component.setComponentInstancesRelations(resourceInstancesRelations);
553 ComponentInstance instance = new ComponentInstance();
554 instance.setUniqueId("id");
555 instance.setComponentUid("uid");
556 instance.setOriginType(OriginTypeEnum.ServiceProxy);
557 List<GroupInstance> groupInstances = new ArrayList<>();
558 GroupInstance groupInst = new GroupInstance();
559 List<String> artifacts = new ArrayList<>();
560 artifacts.add("artifact");
561 groupInst.setArtifacts(artifacts);
562 groupInst.setType("type");
563 groupInstances.add(groupInst);
564 instance.setGroupInstances(groupInstances);
565 componentInstances.add(instance);
567 component.setComponentInstancesInputs(componentInstancesInputs);
568 component.setInvariantUUID("uuid");
569 component.setUUID("uuid");
570 component.setDescription("desc");
572 componentCache.put("uid", component);
574 componentInstancesProperties.put("id", new ArrayList<>());
575 componentInstancesInputs.put("id", new ArrayList<>());
577 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
578 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
580 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
581 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
582 .thenReturn(Either.left(new ToscaNodeTemplate()));
585 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
586 componentInstancesProperties, componentCache, dataTypes, topologyTemplate);
590 public void testConvertNodeTemplatesWhenComponentIsService() throws Exception {
591 Component component = getNewService();
592 List<ComponentInstance> componentInstances = new ArrayList<>();
593 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
594 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
595 Map<String, Component> componentCache = new HashMap<>();
596 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
597 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
598 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
599 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
600 List<ComponentInstanceInput> inputs = new ArrayList<>();
601 inputs.add(new ComponentInstanceInput());
602 componentInstancesInputs.put("key", inputs);
603 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
604 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
605 reldef.setFromNode("node");
606 resourceInstancesRelations.add(reldef);
607 component.setComponentInstancesRelations(resourceInstancesRelations);
609 ComponentInstance instance = new ComponentInstance();
610 instance.setUniqueId("id");
611 instance.setComponentUid("uid");
612 instance.setOriginType(OriginTypeEnum.ServiceProxy);
613 List<GroupInstance> groupInstances = new ArrayList<>();
614 GroupInstance groupInst = new GroupInstance();
615 List<String> artifacts = new ArrayList<>();
616 artifacts.add("artifact");
617 groupInst.setArtifacts(artifacts);
618 groupInst.setType("type");
619 groupInstances.add(groupInst);
620 instance.setGroupInstances(groupInstances);
621 componentInstances.add(instance);
623 component.setComponentInstancesInputs(componentInstancesInputs);
624 component.setInvariantUUID("uuid");
625 component.setUUID("uuid");
626 component.setDescription("desc");
628 Map<String, ForwardingPathDataDefinition> forwardingPaths = new HashMap<>();
629 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
630 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
631 path.setPathElements(list);
632 forwardingPaths.put("key", path);
634 ((Service) component).setForwardingPaths(forwardingPaths);
636 componentCache.put("uid", component);
638 componentInstancesProperties.put("id", new ArrayList<>());
639 componentInstancesInterfaces.put("id", new ArrayList<>());
640 componentInstancesInputs.put("id", new ArrayList<>());
642 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
643 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
645 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
646 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
647 .thenReturn(Either.left(new ToscaNodeTemplate()));
650 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
651 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
655 public void testConvertNodeTemplatesWhenConvertComponentInstanceCapabilitiesIsRight() throws Exception {
656 Component component = getNewResource();
657 List<ComponentInstance> componentInstances = new ArrayList<>();
658 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
659 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
660 Map<String, Component> componentCache = new HashMap<>();
661 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
662 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
663 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
664 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
665 List<ComponentInstanceInput> inputs = new ArrayList<>();
666 inputs.add(new ComponentInstanceInput());
667 componentInstancesInputs.put("key", inputs);
668 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
669 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
670 reldef.setFromNode("node");
671 resourceInstancesRelations.add(reldef);
672 component.setComponentInstancesRelations(resourceInstancesRelations);
674 ComponentInstance instance = new ComponentInstance();
675 instance.setUniqueId("id");
676 instance.setComponentUid("uid");
677 instance.setOriginType(OriginTypeEnum.ServiceProxy);
678 componentInstances.add(instance);
680 component.setComponentInstancesInputs(componentInstancesInputs);
681 component.setInvariantUUID("uuid");
682 component.setUUID("uuid");
683 component.setDescription("desc");
685 componentCache.put("uid", component);
687 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
688 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
690 Mockito.when(capabiltyRequirementConvertor.convertComponentInstanceCapabilities(
691 Mockito.any(ComponentInstance.class), Mockito.any(Map.class), Mockito.any(ToscaNodeTemplate.class)))
692 .thenReturn(Either.right(ToscaError.GENERAL_ERROR));
695 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
696 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
700 public void testConvetNodeTemplateWhenGetOriginComponentIsRight() throws Exception {
701 Component component = getNewResource();
702 List<ComponentInstance> componentInstances = new ArrayList<>();
703 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
704 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
705 Map<String, Component> componentCache = new HashMap<>();
706 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
707 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
708 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
709 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
710 List<ComponentInstanceInput> inputs = new ArrayList<>();
711 inputs.add(new ComponentInstanceInput());
712 componentInstancesInputs.put("key", inputs);
713 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
714 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
715 reldef.setFromNode("id");
716 resourceInstancesRelations.add(reldef);
717 component.setComponentInstancesRelations(resourceInstancesRelations);
719 ComponentInstance instance = new ComponentInstance();
720 instance.setUniqueId("id");
721 instance.setComponentUid("uid");
722 instance.setOriginType(OriginTypeEnum.ServiceProxy);
723 componentInstances.add(instance);
725 component.setComponentInstancesInputs(componentInstancesInputs);
726 component.setInvariantUUID("uuid");
727 component.setUUID("uuid");
728 component.setDescription("desc");
730 componentCache.put("uid", component);
732 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
733 Mockito.any(ComponentInstance.class))).thenReturn(Either.right(false));
736 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
737 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
741 public void testConvertNodeTemplatesWhenConvertComponentInstanceRequirmentsIsRight() {
742 Component component = new Resource();
743 List<ComponentInstance> componentInstances = new ArrayList<>();
744 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
745 Map<String, List<ComponentInstanceProperty>> componentInstancesInterfaces = new HashMap<>();
746 Map<String, Component> componentCache = new HashMap<>();
747 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
748 ToscaTopolgyTemplate topologyTemplate = new ToscaTopolgyTemplate();
749 Either<Map<String, ToscaNodeTemplate>, ToscaError> result;
750 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
751 List<ComponentInstanceInput> inputs = new ArrayList<>();
752 inputs.add(new ComponentInstanceInput());
753 componentInstancesInputs.put("key", inputs);
754 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
755 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
756 reldef.setFromNode("id");
757 reldef.setToNode("node");
758 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
759 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
760 relationship.setRelation(new RelationshipInfo());
761 relationships.add(relationship);
762 reldef.setRelationships(relationships);
763 resourceInstancesRelations.add(reldef);
764 component.setComponentInstancesRelations(resourceInstancesRelations);
766 ComponentInstance instance = new ComponentInstance();
767 instance.setUniqueId("id");
768 componentInstances.add(instance);
770 component.setComponentInstancesInputs(componentInstancesInputs);
771 component.setComponentInstances(componentInstances);
773 Mockito.when(capabiltyRequirementConvertor.getOriginComponent(Mockito.any(Map.class),
774 Mockito.any(ComponentInstance.class))).thenReturn(Either.left(component));
777 result = Deencapsulation.invoke(testSubject, "convertNodeTemplates", component, componentInstances,
778 componentInstancesProperties, componentInstancesInterfaces, componentCache, dataTypes, topologyTemplate);
782 public void testAddComponentInstanceInputs() throws Exception {
784 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
785 Map<String, List<ComponentInstanceInput>> componentInstancesInputs = new HashMap<>();
786 ComponentInstance componentInstance = new ComponentInstance();
787 String instanceUniqueId = "id";
788 Map<String, Object> props = new HashMap<>();
790 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
791 componentInstanceInputs.add(new ComponentInstanceInput());
793 componentInstancesInputs.put(instanceUniqueId, componentInstanceInputs);
796 Deencapsulation.invoke(testSubject, "addComponentInstanceInputs", dataTypes, componentInstancesInputs,
797 instanceUniqueId, props);
801 public void testAddPropertiesOfComponentInstance() throws Exception {
802 Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = new HashMap<>();
803 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
804 ComponentInstance componentInstance = new ComponentInstance();
805 String instanceUniqueId = "id";
806 Map<String, Object> props = new HashMap<>();
808 ComponentInstanceProperty cip = new ComponentInstanceProperty();
809 cip.setInstanceUniqueId("id");
811 List<ComponentInstanceProperty> list = new ArrayList<>();
814 componentInstancesProperties.put("id", list);
817 Deencapsulation.invoke(testSubject, "addPropertiesOfComponentInstance", componentInstancesProperties, dataTypes,
818 instanceUniqueId, props);
822 public void testAddPropertiesOfParentComponent() throws Exception {
823 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
824 ComponentInstance componentInstance = new ComponentInstance();
825 Component componentOfInstance = new Resource();
826 Map<String, Object> props = new HashMap<>();
828 List<PropertyDefinition> properties = new ArrayList<>();
829 properties.add(new PropertyDefinition());
831 ((Resource) componentOfInstance).setProperties(properties);
834 Deencapsulation.invoke(testSubject, "addPropertiesOfParentComponent", dataTypes,
835 componentOfInstance, props);
840 public void testCreateNodeType() throws Exception {
842 Component component = new Resource();
843 List<String> array = new ArrayList<>();
845 ((Resource) component).setDerivedFrom(array);
846 ToscaNodeType result;
848 // test when component is resource
849 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
851 component = new Service();
852 // test when component is service
853 result = Deencapsulation.invoke(testSubject, "createNodeType", component);
857 public void testCreateProxyInterfaceTypesComponentNotFound() throws Exception {
858 Component container = new Service();
859 Either<Map<String, ToscaNodeType>, ToscaError> result;
860 List<ComponentInstance> componentInstances = new ArrayList<>();
861 ComponentInstance instance = new ComponentInstance();
862 instance.setOriginType(OriginTypeEnum.ServiceProxy);
863 instance.setSourceModelUid("targetModelUid");
864 instance.setToscaComponentName("toscaComponentName");
866 componentInstances.add(instance);
867 container.setComponentInstances(componentInstances);
868 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
869 Mockito.any(ComponentParametersView.class)))
870 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
871 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
872 Assert.assertTrue(result.isRight());
877 public void testCreateProxyInterfaceTypesWhenInterfaceLifecycleFetchFailed() {
878 Component container = new Service();
879 Either<Map<String, ToscaNodeType>, ToscaError> result;
880 List<ComponentInstance> componentInstances = new ArrayList<>();
881 ComponentInstance instance = new ComponentInstance();
882 instance.setOriginType(OriginTypeEnum.ServiceProxy);
883 instance.setSourceModelUid("targetModelUid");
884 instance.setToscaComponentName("toscaComponentName");
885 componentInstances.add(instance);
886 container.setComponentInstances(componentInstances);
888 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
889 Mockito.any(ComponentParametersView.class)))
890 .thenReturn(Either.left(new Resource()));
891 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
892 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
893 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
894 Assert.assertTrue(result.isRight());
898 public void testCreateProxyInterfaceTypesPositive() {
899 Component container = new Service();
900 Either<Map<String, ToscaNodeType>, ToscaError> result;
901 List<ComponentInstance> componentInstances = new ArrayList<>();
902 ComponentInstance instance = new ComponentInstance();
903 instance.setOriginType(OriginTypeEnum.ServiceProxy);
904 instance.setSourceModelUid("targetModelUid");
905 instance.setToscaComponentName("toscaComponentName");
906 componentInstances.add(instance);
907 container.setComponentInstances(componentInstances);
909 Mockito.when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes())
910 .thenReturn(Either.left(Collections.emptyMap()));
912 Component proxyResource = new Resource();
913 Map<String, InterfaceDefinition> proxyInterfaces = new HashMap<>();
914 proxyInterfaces.put("Local", new InterfaceDefinition("Local", "desc", new HashMap<>()));
915 proxyResource.setInterfaces(proxyInterfaces);
916 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
917 Mockito.any(ComponentParametersView.class)))
918 .thenReturn(Either.left(proxyResource));
920 result = Deencapsulation.invoke(testSubject, "createProxyInterfaceTypes", container);
921 Assert.assertTrue(result.isLeft());
922 Assert.assertEquals(1, result.left().value().size());
926 public void testCreateProxyNodeTypes() throws Exception {
927 Map<String, Component> componentCache = new HashMap<>();
928 Component container = new Resource();
929 Either<Map<String, ToscaNodeType>, ToscaError> result;
930 List<ComponentInstance> componentInstances = new ArrayList<>();
931 ComponentInstance instance = new ComponentInstance();
932 instance.setOriginType(OriginTypeEnum.ServiceProxy);
933 instance.setSourceModelUid("targetModelUid");
935 componentInstances.add(instance);
936 container.setComponentInstances(componentInstances);
938 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy"))
939 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
941 // test when getLatestByName return is right
942 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
947 public void testCreateProxyNodeTypesWhenGetLatestByNameReturnValue() {
948 Map<String, Component> componentCache = new HashMap<>();
949 Component container = new Resource();
950 Either<Map<String, ToscaNodeType>, ToscaError> result;
951 List<ComponentInstance> componentInstances = new ArrayList<>();
952 ComponentInstance instance = new ComponentInstance();
953 instance.setOriginType(OriginTypeEnum.ServiceProxy);
954 instance.setSourceModelUid("targetModelUid");
956 componentInstances.add(instance);
957 container.setComponentInstances(componentInstances);
959 Mockito.when(toscaOperationFacade.getLatestByName("serviceProxy")).thenReturn(Either.left(new Resource()));
961 ComponentParametersView parameterView = new ComponentParametersView();
962 parameterView.disableAll();
963 parameterView.setIgnoreCategories(false);
965 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
966 Mockito.any(ComponentParametersView.class)))
967 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
969 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
971 // test when getLatestByName is left
972 result = Deencapsulation.invoke(testSubject, "createProxyNodeTypes", componentCache, container);
976 public void testCreateProxyNodeType() throws Exception {
977 Map<String, Component> componentCache = new HashMap<>();
978 Component origComponent = new Resource();
979 Component proxyComponent = new Resource();
980 ComponentInstance instance = new ComponentInstance();
981 ToscaNodeType result;
983 Mockito.when(dataTypeCache.getAll()).thenReturn(Either.left(new HashMap<>()));
986 result = Deencapsulation.invoke(testSubject, "createProxyNodeType", componentCache, origComponent,
987 proxyComponent, instance);
991 public void testConvertComponentInstanceRequirements() throws Exception {
992 Component component = new Resource();
993 ComponentInstance componentInstance = new ComponentInstance();
994 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
995 ToscaNodeTemplate nodeTypeTemplate = new ToscaNodeTemplate();
996 Component originComponent = new Resource();
997 Map<String, Component> componentCache = new HashMap<>();
998 Either<ToscaNodeTemplate, ToscaError> result;
1001 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1002 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1004 RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef();
1005 reldef.setFromNode("name");
1006 reldef.setToNode("name1");
1007 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1008 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1009 cap.setRelation(new RelationshipInfo());
1010 relationships.add(cap);
1011 reldef.setRelationships(relationships);
1012 relations.add(reldef);
1013 componentInstance.setUniqueId("name");
1015 List<ComponentInstance> instances = new ArrayList<>();
1016 instances.add(componentInstance);
1017 component.setComponentInstances(instances);
1019 // test when filteredRElations ins't empty
1020 result = Deencapsulation.invoke(testSubject, "convertComponentInstanceRequirements", component,
1021 componentInstance, relations, nodeTypeTemplate, originComponent, componentCache);
1025 public void testAddRequirement() throws Exception {
1026 ComponentInstance fromInstance = new ComponentInstance();
1027 Component fromOriginComponent = new Resource();
1028 List<ComponentInstance> instancesList = new ArrayList<>();
1029 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1030 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1031 Map<String, Component> componentCache = new HashMap<>();
1034 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1035 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1036 cap.setRequirement(new RequirementDataDefinition());
1037 RelationshipInfo relation = new RelationshipInfo();
1038 relation.setRequirementUid("Uid");
1039 relation.setRequirement("requirment");
1040 relation.setCapability("cap");
1041 relation.setCapabilityOwnerId("id1");
1042 cap.setRelation(relation);
1043 relationships.add(cap);
1044 rel.setRelationships(relationships);
1045 rel.setToNode("name");
1046 fromInstance.setUniqueId("name");
1047 fromInstance.setComponentUid("string");
1048 instancesList.add(fromInstance);
1049 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1050 fromOriginComponent.setRequirements(requirements);
1053 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1054 rel, toscaRequirements, componentCache);
1059 public void testAddRequirmentsWhenFindRequirmentsReturnsValue() {
1061 ComponentInstance fromInstance = new ComponentInstance();
1062 Component fromOriginComponent = new Resource();
1063 List<ComponentInstance> instancesList = new ArrayList<>();
1064 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1065 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1066 Map<String, Component> componentCache = new HashMap<>();
1069 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1070 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1071 cap.setRequirement(new RequirementDataDefinition());
1072 RelationshipInfo relation = new RelationshipInfo();
1073 relation.setRequirementUid("Uid");
1074 relation.setRequirement("requirment");
1075 relation.setCapability("cap");
1076 relation.setCapabilityOwnerId("id1");
1077 cap.setRelation(relation);
1078 relationships.add(cap);
1079 rel.setRelationships(relationships);
1080 rel.setToNode("name");
1081 fromInstance.setUniqueId("name");
1082 fromInstance.setComponentUid("string");
1083 instancesList.add(fromInstance);
1084 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1086 List<RequirementDefinition> defs = new ArrayList<>();
1087 RequirementDefinition def = new RequirementDefinition();
1088 def.setName("requirment");
1089 def.setCapability("cap");
1091 requirements.put("key", defs);
1092 fromOriginComponent.setRequirements(requirements);
1094 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1095 Mockito.any(ComponentParametersView.class)))
1096 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1099 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1100 rel, toscaRequirements, componentCache);
1104 public void testAddRequirmentsWhenCapabilityBelongsToRelation() {
1105 ComponentInstance fromInstance = new ComponentInstance();
1106 Component fromOriginComponent = new Resource();
1107 List<ComponentInstance> instancesList = new ArrayList<>();
1108 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1109 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1110 Map<String, Component> componentCache = new HashMap<>();
1113 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1114 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1115 cap.setRequirement(new RequirementDataDefinition());
1116 RelationshipInfo relation = new RelationshipInfo();
1117 relation.setRequirementUid("Uid");
1118 relation.setRequirement("requirment");
1119 relation.setCapability("cap");
1120 relation.setCapabilityOwnerId("id1");
1121 cap.setRelation(relation);
1122 relationships.add(cap);
1123 rel.setRelationships(relationships);
1124 rel.setToNode("name");
1125 fromInstance.setUniqueId("name");
1126 fromInstance.setComponentUid("string");
1127 instancesList.add(fromInstance);
1128 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1130 List<RequirementDefinition> defs = new ArrayList<>();
1131 RequirementDefinition def = new RequirementDefinition();
1132 def.setName("requirment");
1133 def.setCapability("cap");
1135 requirements.put("key", defs);
1136 fromOriginComponent.setRequirements(requirements);
1138 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1139 List<CapabilityDefinition> caps = new ArrayList<>();
1140 CapabilityDefinition capdef = new CapabilityDefinition();
1141 capdef.setOwnerId("id");
1142 capdef.setName("name");
1143 capdef.setType("type");
1145 capabilities.put("cap", caps);
1147 fromOriginComponent.setCapabilities(capabilities);
1149 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1150 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1153 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1154 rel, toscaRequirements, componentCache);
1156 @Ignore("need to fix change in injected class.")
1158 public void testAddRequirmentsWithBuildAndAddRequirements() {
1159 ComponentInstance fromInstance = new ComponentInstance();
1160 Component fromOriginComponent = new Resource();
1161 List<ComponentInstance> instancesList = new ArrayList<>();
1162 RequirementCapabilityRelDef rel = new RequirementCapabilityRelDef();
1163 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1164 Map<String, Component> componentCache = new HashMap<>();
1167 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
1168 CapabilityRequirementRelationship cap = new CapabilityRequirementRelationship();
1169 cap.setRequirement(new RequirementDataDefinition());
1170 RelationshipInfo relation = new RelationshipInfo();
1171 relation.setRequirementUid("Uid");
1172 relation.setRequirement("requirment");
1173 relation.setCapability("cap");
1174 relation.setCapabilityOwnerId("id");
1175 cap.setRelation(relation);
1176 relationships.add(cap);
1177 rel.setRelationships(relationships);
1178 rel.setToNode("name");
1179 fromInstance.setUniqueId("name");
1180 fromInstance.setComponentUid("string");
1181 instancesList.add(fromInstance);
1182 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1184 List<RequirementDefinition> defs = new ArrayList<>();
1185 RequirementDefinition def = new RequirementDefinition();
1186 def.setName("requirment");
1187 def.setCapability("cap");
1189 requirements.put("key", defs);
1190 fromOriginComponent.setRequirements(requirements);
1192 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1193 List<CapabilityDefinition> caps = new ArrayList<>();
1194 CapabilityDefinition capdef = new CapabilityDefinition();
1195 capdef.setOwnerId("id");
1196 capdef.setName("cap");
1197 capdef.setType("type");
1199 capabilities.put("cap", caps);
1200 fromOriginComponent.setCapabilities(capabilities);
1202 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.any(String.class),
1203 Mockito.any(ComponentParametersView.class))).thenReturn(Either.left(fromOriginComponent));
1205 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.any(Map.class),
1206 Mockito.any(Component.class), Mockito.any(List.class), Mockito.anyString(),Mockito.anyString()))
1207 .thenReturn(Either.right(false));
1210 result = Deencapsulation.invoke(testSubject, "addRequirement", fromInstance, fromOriginComponent, instancesList,
1211 rel, toscaRequirements, componentCache);
1213 @Ignore("need to fix change in injected class.")
1215 public void testBuildAndAddRequirement() throws Exception {
1216 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1217 Component fromOriginComponent = new Resource();
1218 Component toOriginComponent = new Resource();
1219 CapabilityDefinition capability = new CapabilityDefinition();
1220 RequirementDefinition requirement = new RequirementDefinition();
1221 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1222 ComponentInstance toInstance = new ComponentInstance();
1223 Map<String, Component> componentCache = new HashMap<>();
1225 capability.setPath(new ArrayList<>());
1226 reqAndRelationshipPair.setCapability("cap");
1227 requirement.setPath(new ArrayList<>());
1228 reqAndRelationshipPair.setRequirement("req");
1230 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), toOriginComponent,
1231 new ArrayList<>(),Mockito.anyString(), "cap")).thenReturn(Either.left("buildCapNameRes"));
1233 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(new HashMap<>(), fromOriginComponent,
1234 new ArrayList<>(),Mockito.anyString(), "req")).thenReturn(Either.right(false));
1237 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1238 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1241 @Ignore("need to fix change in injected class.")
1243 public void testBuildAndAddRequirementBuildSubtitutedNameReturnsValueTwice() {
1244 List<Map<String, ToscaTemplateRequirement>> toscaRequirements = new ArrayList<>();
1245 Component fromOriginComponent = new Resource();
1246 Component toOriginComponent = new Resource();
1247 CapabilityDefinition capability = new CapabilityDefinition();
1248 RequirementDefinition requirement = new RequirementDefinition();
1249 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1250 ComponentInstance toInstance = new ComponentInstance();
1251 Map<String, Component> componentCache = new HashMap<>();
1253 capability.setPath(new ArrayList<>());
1254 reqAndRelationshipPair.setCapability("cap");
1255 requirement.setPath(new ArrayList<>());
1256 reqAndRelationshipPair.setRequirement("req");
1258 Mockito.when(capabiltyRequirementConvertor.buildSubstitutedName(Mockito.anyMap(), Mockito.any(Resource.class),
1259 Mockito.anyList(), Mockito.anyString(),Mockito.anyString())).thenReturn(Either.left("buildCapNameRes"));
1262 result = Deencapsulation.invoke(testSubject, "buildAndAddRequirement", toscaRequirements, fromOriginComponent,
1263 toOriginComponent, capability, requirement, reqAndRelationshipPair, toInstance, componentCache);
1267 public void testIsRequirementBelongToRelation() throws Exception {
1269 Component originComponent = new Resource();
1270 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1271 RequirementDefinition requirement = new RequirementDefinition();
1272 String fromInstanceId = "";
1275 requirement.setName("name");
1276 reqAndRelationshipPair.setRequirement("name1");
1278 // test return false
1279 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1280 reqAndRelationshipPair, requirement, fromInstanceId);
1284 public void testIsRequirementBelongToRelationWithNonAtomicComponent() {
1286 Component originComponent = new Service();
1287 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1288 RequirementDefinition requirement = new RequirementDefinition();
1289 String fromInstanceId = "";
1292 // default test return true
1293 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToRelation", originComponent,
1294 reqAndRelationshipPair, requirement, fromInstanceId);
1298 public void testIsRequirementBelongToOwner() throws Exception {
1300 RelationshipInfo reqAndRelationshipPair = new RelationshipInfo();
1301 RequirementDefinition requirement = new RequirementDefinition();
1302 String fromInstanceId = "";
1303 Component originComponent = new Resource();
1306 requirement.setOwnerId("owner1");
1307 reqAndRelationshipPair.setRequirementOwnerId("owner");
1310 result = Deencapsulation.invoke(testSubject, "isRequirementBelongToOwner", reqAndRelationshipPair, requirement,
1311 fromInstanceId, originComponent);
1315 public void testIsCvfc() throws Exception {
1317 Component component = new Resource();
1320 component = new Service();
1322 result = Deencapsulation.invoke(testSubject, "isCvfc", component);
1326 public void testConvertCapabilities() throws Exception {
1327 Component component = new Resource();
1328 SubstitutionMapping substitutionMappings = new SubstitutionMapping();
1329 Map<String, Component> componentCache = new HashMap<>();
1330 Either<SubstitutionMapping, ToscaError> result;
1332 Mockito.when(capabiltyRequirementConvertor.convertSubstitutionMappingCapabilities(componentCache, component))
1333 .thenReturn(Either.right(ToscaError.NODE_TYPE_CAPABILITY_ERROR));
1335 // default test return isRight
1336 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, substitutionMappings,
1339 @Ignore("need to fix change in injected class.")
1341 public void testConvertCapabilities_1() throws Exception {
1342 Component component = new Resource();
1343 ToscaNodeType nodeType = new ToscaNodeType();
1344 Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
1345 Either<ToscaNodeType, ToscaError> result;
1347 Map<String, ToscaCapability> capabilities = new HashMap<>();
1348 capabilities.put("key", new ToscaCapability());
1350 Mockito.when(capabiltyRequirementConvertor.convertCapabilities(Mockito.any(Map.class), component, dataTypes)).thenReturn(capabilities);
1353 result = Deencapsulation.invoke(testSubject, "convertCapabilities", component, nodeType, dataTypes);
1357 public void testConvertToNodeTemplateArtifacts() throws Exception {
1358 Map<String, ToscaArtifactDataDefinition> container = new HashMap<>();
1359 ToscaArtifactDataDefinition art = new ToscaArtifactDataDefinition();
1360 art.setFile("test_file");
1361 art.setType("test_type");
1362 Map<String, ToscaTemplateArtifact> result;
1363 container.put("test_art", art);
1364 result = Deencapsulation.invoke(testSubject, "convertToNodeTemplateArtifacts", container);
1365 Assert.assertTrue(MapUtils.isNotEmpty(result));
1366 Assert.assertTrue(result.get("test_art").getFile().equals("test_file"));
1367 Assert.assertTrue(result.get("test_art").getType().equals("test_type"));