2 * Copyright (C) 2020 CMCC, Inc. and others. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.be.components.impl;
19 import static org.assertj.core.api.Java6Assertions.assertThat;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertNotNull;
22 import static org.junit.jupiter.api.Assertions.fail;
23 import static org.mockito.ArgumentMatchers.anyString;
24 import static org.mockito.Mockito.any;
25 import static org.mockito.Mockito.anyBoolean;
26 import static org.mockito.Mockito.anyList;
27 import static org.mockito.Mockito.anyMap;
28 import static org.mockito.Mockito.contains;
29 import static org.mockito.Mockito.doNothing;
30 import static org.mockito.Mockito.eq;
31 import static org.mockito.Mockito.isNull;
32 import static org.mockito.Mockito.matches;
33 import static org.mockito.Mockito.mock;
34 import static org.mockito.Mockito.verify;
35 import static org.mockito.Mockito.when;
36 import static org.openecomp.sdc.be.components.impl.ServiceImportBusinessLogic.CREATE_RESOURCE;
38 import fj.data.Either;
40 import java.io.IOException;
41 import java.lang.reflect.InvocationTargetException;
42 import java.lang.reflect.Method;
43 import java.net.URISyntaxException;
44 import java.nio.file.FileSystems;
45 import java.nio.file.Files;
46 import java.nio.file.Path;
47 import java.nio.file.Paths;
48 import java.util.ArrayList;
49 import java.util.Collections;
50 import java.util.EnumMap;
51 import java.util.HashMap;
52 import java.util.List;
54 import java.util.Optional;
56 import org.apache.commons.codec.binary.Base64;
57 import org.apache.commons.collections.map.HashedMap;
58 import org.apache.commons.lang3.tuple.ImmutablePair;
59 import org.json.simple.JSONObject;
60 import org.junit.jupiter.api.Assertions;
61 import org.junit.jupiter.api.BeforeEach;
62 import org.junit.jupiter.api.Test;
63 import org.mockito.ArgumentCaptor;
64 import org.mockito.InjectMocks;
65 import org.mockito.MockitoAnnotations;
66 import org.openecomp.sdc.be.components.csar.CsarInfo;
67 import org.openecomp.sdc.be.components.csar.ServiceCsarInfo;
68 import org.openecomp.sdc.be.components.impl.artifact.ArtifactOperationInfo;
69 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
70 import org.openecomp.sdc.be.components.impl.utils.CreateServiceFromYamlParameter;
71 import org.openecomp.sdc.be.dao.api.ActionStatus;
72 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
73 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
74 import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition;
75 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
76 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
77 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
78 import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType;
79 import org.openecomp.sdc.be.externalapi.servlet.ArtifactExternalServlet;
80 import org.openecomp.sdc.be.impl.ServletUtils;
81 import org.openecomp.sdc.be.info.NodeTypeInfoToUpdateArtifacts;
82 import org.openecomp.sdc.be.model.ArtifactDefinition;
83 import org.openecomp.sdc.be.model.AttributeDefinition;
84 import org.openecomp.sdc.be.model.CapabilityDefinition;
85 import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
86 import org.openecomp.sdc.be.model.Component;
87 import org.openecomp.sdc.be.model.ComponentInstance;
88 import org.openecomp.sdc.be.model.ComponentInstanceInput;
89 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
90 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
91 import org.openecomp.sdc.be.model.ComponentParametersView;
92 import org.openecomp.sdc.be.model.DataTypeDefinition;
93 import org.openecomp.sdc.be.model.GroupDefinition;
94 import org.openecomp.sdc.be.model.GroupTypeDefinition;
95 import org.openecomp.sdc.be.model.IPropertyInputCommon;
96 import org.openecomp.sdc.be.model.InputDefinition;
97 import org.openecomp.sdc.be.model.InterfaceDefinition;
98 import org.openecomp.sdc.be.model.LifecycleStateEnum;
99 import org.openecomp.sdc.be.model.NodeTypeInfo;
100 import org.openecomp.sdc.be.model.Operation;
101 import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
102 import org.openecomp.sdc.be.model.PolicyDefinition;
103 import org.openecomp.sdc.be.model.PropertyDefinition;
104 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
105 import org.openecomp.sdc.be.model.RequirementDefinition;
106 import org.openecomp.sdc.be.model.Resource;
107 import org.openecomp.sdc.be.model.Service;
108 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
109 import org.openecomp.sdc.be.model.UploadNodeFilterInfo;
110 import org.openecomp.sdc.be.model.UploadPropInfo;
111 import org.openecomp.sdc.be.model.UploadReqInfo;
112 import org.openecomp.sdc.be.model.UploadResourceInfo;
113 import org.openecomp.sdc.be.model.User;
114 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
115 import org.openecomp.sdc.be.model.operations.api.ICapabilityTypeOperation;
116 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
117 import org.openecomp.sdc.be.model.operations.impl.ArtifactTypeOperation;
118 import org.openecomp.sdc.be.model.operations.impl.CapabilityTypeOperation;
119 import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation;
120 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
121 import org.openecomp.sdc.be.servlets.AbstractValidationsServlet;
122 import org.openecomp.sdc.be.tosca.CsarUtils;
123 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
124 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
125 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
126 import org.openecomp.sdc.common.api.Constants;
127 import org.openecomp.sdc.common.zip.ZipUtils;
128 import org.openecomp.sdc.common.zip.exception.ZipException;
129 import org.openecomp.sdc.exception.ResponseFormat;
130 import org.yaml.snakeyaml.Yaml;
132 class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTestSetup {
134 private final ArtifactDefinition artifactDefinition = mock(ArtifactDefinition.class);
135 private final ResourceImportManager resourceImportManager = mock(ResourceImportManager.class);
136 private final ServletUtils servletUtils = mock(ServletUtils.class);
137 private final AbstractValidationsServlet servlet = new ArtifactExternalServlet(userBusinessLogic,
138 componentInstanceBusinessLogic, componentsUtils, servletUtils, resourceImportManager, artifactsBusinessLogic);
139 private final ApplicationDataTypeCache applicationDataTypeCache = mock(ApplicationDataTypeCache.class);
140 private final ArtifactTypeOperation artifactTypeOperation = mock(ArtifactTypeOperation.class);
141 private final DataTypeBusinessLogic dataTypeBusinessLogic = mock(DataTypeBusinessLogic.class);
142 private final ArtifactTypeImportManager artifactTypeImportManager = mock(ArtifactTypeImportManager.class);
143 private final GroupTypeOperation groupTypeOperation = mock(GroupTypeOperation.class);
144 private final CapabilityTypeOperation capabilityTypeOperation = mock(CapabilityTypeOperation.class);
145 private final CapabilityTypeImportManager capabilityTypeImportManager = mock(CapabilityTypeImportManager.class);
146 private final InterfaceLifecycleTypeImportManager interfaceLifecycleTypeImportManager = mock(InterfaceLifecycleTypeImportManager.class);
149 private ServiceImportBusinessLogic sIBL;
151 public static String loadFileNameToJsonString(String fileName) throws IOException {
152 String sourceDir = "src/test/resources/normativeTypes";
153 return loadFileNameToJsonString(sourceDir, fileName);
156 private static String loadFileNameToJsonString(String sourceDir, String fileName) throws IOException {
157 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir, fileName);
158 byte[] fileContent = Files.readAllBytes(filePath);
159 return new String(fileContent);
164 MockitoAnnotations.openMocks(this);
165 when(artifactDefinition.getMandatory()).thenReturn(true);
166 when(artifactDefinition.getArtifactName()).thenReturn("creatorFullName");
167 when(artifactDefinition.getArtifactType()).thenReturn("TOSCA_CSAR");
171 void testCreateService_OK() {
172 Service oldService = createServiceObject(true);
173 oldService.setComponentInstances(creatComponentInstances());
174 oldService.setComponentInstancesProperties(
175 Collections.singletonMap(COMPONENT_ID, Collections.singletonList(new ComponentInstanceProperty())));
176 String payloadName = "valid_vf";
177 Map<String, byte[]> payload = crateCsarFromPayload();
178 Service newService = createServiceObject(true);
179 newService.setComponentInstances(creatComponentInstances());
180 ComponentInstanceProperty componentInstanceProperty = new ComponentInstanceProperty();
181 componentInstanceProperty.setName("propertiesName");
182 final JSONObject jsonObject = new JSONObject();
183 jsonObject.put(ToscaGetFunctionType.GET_INPUT.getFunctionName(), "zxjTestImportServiceAb_propertiesName");
184 componentInstanceProperty.setValue(jsonObject.toJSONString());
186 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
187 ArtifactDefinition artifactDef = new ArtifactDefinition();
188 String artifactUniqueId = "test_extcp_resource.assettoscatemplate";
189 artifactDef.setUniqueId(artifactUniqueId);
190 toscaArtifacts.put(ToscaExportHandler.ASSET_TOSCA_TEMPLATE, artifactDef);
191 Resource resource = new Resource();
192 String resourceUniqueId = "extcp_resource";
193 resource.setUniqueId(resourceUniqueId);
194 resource.setToscaArtifacts(toscaArtifacts);
195 ImmutablePair<String, byte[]> resourceTemplate = getNodeType();
196 String updatedNodeType = "org.openecomp.resource.cp.extCP";
198 newService.setComponentInstancesProperties(
199 Collections.singletonMap(COMPONENT_ID + "." + "zxjTestImportServiceAb", Collections.singletonList(componentInstanceProperty)));
200 newService.setProperties(getProperties());
202 when(serviceBusinessLogic.validateServiceBeforeCreate(eq(newService), any(User.class), any(AuditingActionEnum.class)))
203 .thenReturn(Either.left(newService));
204 when(toscaOperationFacade.validateCsarUuidUniqueness(anyString())).thenReturn(StorageOperationStatus.OK);
205 ServiceCsarInfo csarInfo = getCsarInfo();
206 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class), any(Map.class), anyString())).thenReturn(csarInfo);
207 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class), any(Service.class)))
208 .thenReturn(Either.left(new HashMap<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>>()));
209 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(), any(CsarInfo.class), any(), any(Service.class)))
210 .thenReturn(getParsedToscaYamlInfo());
211 when(serviceBusinessLogic.lockComponentByName(newService.getSystemName(), oldService, CREATE_RESOURCE)).thenReturn(Either.left(true));
212 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(createOldResource()));
213 when(serviceImportParseLogic.createServiceTransaction(oldService, csarInfo.getModifier(), false)).thenReturn(newService);
214 when(serviceImportParseLogic.createInputsOnService(eq(oldService), anyMap())).thenReturn(newService);
215 Assertions.assertDoesNotThrow(() -> {
216 when(serviceImportParseLogic.createSubstitutionFilterOnService(eq(oldService), any())).thenReturn(newService);
218 when(serviceImportParseLogic.getNodeTypesFromTemplate(anyMap())).thenReturn(getNodeTypes());
219 when(serviceImportParseLogic.createNodeTypeResourceFromYaml(anyString(), any(Map.Entry.class), any(User.class), anyMap(), any(Service.class),
220 anyBoolean(), any(), anyList(), anyBoolean(), any(CsarInfo.class), anyBoolean())).thenReturn(
221 new ImmutablePair<>(new Resource(), ActionStatus.OK));
222 when(serviceImportParseLogic.getComponentWithInstancesFilter()).thenReturn(new ComponentParametersView());
223 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(newService));
224 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(new ComponentParametersView());
225 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(newService));
226 when(serviceImportParseLogic.findAvailableRequirement(anyString(), anyString(), any(UploadComponentInstanceInfo.class),
227 any(ComponentInstance.class), anyString())).thenReturn(Either.left(new RequirementDefinition()));
228 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class), any(ComponentInstance.class),
229 any(UploadReqInfo.class))).thenReturn(new CapabilityDefinition());
230 when(componentsUtils.getResponseFormat(eq(ActionStatus.OK), anyString())).thenReturn(new ResponseFormat(200));
231 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(newService));
232 doNothing().when(compositionBusinessLogic).setPositionsForComponentInstances(any(Service.class), anyString());
233 when(groupBusinessLogic.validateUpdateVfGroupNames(anyMap(), anyString())).thenReturn(Either.left(new HashMap<>()));
234 when(csarArtifactsAndGroupsBusinessLogic.deleteVFModules(any(Service.class), any(CsarInfo.class), anyBoolean(), anyBoolean()))
235 .thenReturn(Either.left(newService));
236 when(serviceImportParseLogic.getServiceWithGroups(anyString())).thenReturn(newService);
237 when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
238 when(graphLockOperation.unlockComponentByName(anyString(), anyString(), any(NodeTypeEnum.class))).thenReturn(StorageOperationStatus.OK);
239 when(serviceImportParseLogic.createOutputsOnService(any(Service.class), any(), anyString())).thenReturn(newService);
240 when(toscaOperationFacade.updateInputsToComponent(anyList(), eq(newService.getUniqueId()))).thenReturn(Either.left(new ArrayList<>()));
242 when(applicationDataTypeCache.get(any(), contains("tosca.datatypes.test_"))).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
243 DataTypeDefinition typeToBeUpdated = new DataTypeDefinition();
244 List<PropertyDefinition> properties = new ArrayList<>();
245 PropertyDefinition nameProperty = new PropertyDefinition();
246 nameProperty.setName("name");
247 nameProperty.setType("string");
248 properties.add(nameProperty);
249 PropertyDefinition versionProperty = new PropertyDefinition();
250 versionProperty.setName("version");
251 versionProperty.setType("string");
252 properties.add(versionProperty);
253 typeToBeUpdated.setProperties(properties);
254 when(applicationDataTypeCache.get(any(), eq("onap.datatypes.ToscaConceptIdentifier.datatype"))).thenReturn(Either.left(typeToBeUpdated));
255 when(applicationDataTypeCache.get(any(), matches("^((?!(tosca.datatypes.test_|onap.datatypes.ToscaConceptIdentifier)).)*$"))).thenReturn(Either.left(new DataTypeDefinition()));
257 when(artifactTypeOperation.getArtifactTypeByUid(contains("tosca.testartifacts.Name"))).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
258 when(artifactTypeOperation.getArtifactTypeByUid(contains("tosca.artifacts"))).thenReturn(Either.left(null));
260 when(interfaceLifecycleTypeOperation.getInterface(contains("tosca.interfaces"))).thenReturn(Either.left(new InterfaceDefinition()));
261 when(interfaceLifecycleTypeOperation.getInterface(contains("tosca.interfaces.test"))).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
264 when(capabilityTypeOperation.getCapabilityType(anyString()))
265 .thenReturn(Either.left(new CapabilityTypeDefinition()));
266 when(capabilityTypeOperation.getCapabilityType(contains("tosca.testcapabilitytypes.Name")))
267 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
269 when(toscaOperationFacade.getLatestByToscaResourceName(contains("org.openecomp.resource"), isNull()))
270 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
271 when(toscaOperationFacade.getLatestByToscaResourceName(contains("tosca.nodes."), isNull()))
272 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
273 when(toscaOperationFacade.getLatestByToscaResourceName(contains(updatedNodeType), isNull())).thenReturn(Either.left(resource));
274 when(artifactsBusinessLogic.handleDownloadRequestById(resourceUniqueId, artifactUniqueId, user.getUserId(), ComponentTypeEnum.RESOURCE, null, null))
275 .thenReturn(resourceTemplate);
276 when(toscaOperationFacade.updatePropertyOfComponent(eq(oldService), any(PropertyDefinition.class))).thenReturn(Either.left(null));
277 when(toscaOperationFacade.updateComponentInstancePropsToComponent(anyMap(), anyString())).thenReturn(Either.left(null));
278 when(groupTypeOperation.getGroupTypeByUid(anyString())).thenReturn(Either.left(new GroupTypeDefinition()));
280 Service result = sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName);
281 assertNotNull(result);
282 assertNotNull(result.getComponentInstances());
283 assertEquals(1, result.getComponentInstances().size());
284 assertNotNull(result.getComponentInstances().get(0));
285 assertNotNull(result.getComponentInstances().get(0).getCapabilities());
286 assertEquals(1, result.getComponentInstances().get(0).getCapabilities().size());
287 assertNotNull(result.getComponentInstances().get(0).getRequirements());
288 assertEquals(1, result.getComponentInstances().get(0).getRequirements().size());
289 assertNotNull(result.getCategories());
290 assertEquals(1, result.getCategories().size());
292 ArgumentCaptor<String> yaml = ArgumentCaptor.forClass(String.class);
293 verify(dataTypeBusinessLogic).createDataTypeFromYaml(yaml.capture(), isNull(), anyBoolean());
294 Map<String, Object> yamlMap = new Yaml().load(yaml.getValue());
295 assertEquals(3, yamlMap.size());
296 assertNotNull(yamlMap.get("tosca.datatypes.test_a"));
297 assertNotNull(yamlMap.get("tosca.datatypes.test_b"));
298 assertNotNull(yamlMap.get("onap.datatypes.ToscaConceptIdentifier"));
300 ArgumentCaptor<String> artifactTypes = ArgumentCaptor.forClass(String.class);
301 verify(artifactTypeImportManager).createArtifactTypes(artifactTypes.capture(),isNull(), anyBoolean());
302 Map<String, Object> artifactTypesMap = new Yaml().load(artifactTypes.getValue());
303 assertEquals(1, artifactTypesMap.size());
304 assertNotNull(artifactTypesMap.get("tosca.testartifacts.Name"));
306 ArgumentCaptor<String> capabilityTypes = ArgumentCaptor.forClass(String.class);
307 verify(capabilityTypeImportManager).createCapabilityTypes(
308 capabilityTypes.capture(),
311 Map<String, Object> capabilityTypesMap = new Yaml().load(capabilityTypes.getValue());
312 assertEquals(1, capabilityTypesMap.size());
313 assertNotNull(capabilityTypesMap.get("tosca.testcapabilitytypes.Name"));
315 ArgumentCaptor<Map<String, Object>> nodeTypes = ArgumentCaptor.forClass(Map.class);
316 verify(resourceImportManager).importAllNormativeResource(nodeTypes.capture(), any(), any(), any(),
317 anyBoolean(), anyBoolean());
318 Map<String, Object> nodeTypesMap = nodeTypes.getValue();
319 Map<String, Object> newUpdatedNodeType = (Map<String, Object>) nodeTypesMap.get(updatedNodeType);
320 assertEquals(8, ((Map<String, Object>) newUpdatedNodeType.get("properties")).size());
322 ArgumentCaptor<String> interfaceTypes = ArgumentCaptor.forClass(String.class);
323 verify(interfaceLifecycleTypeImportManager).createLifecycleTypes(interfaceTypes.capture(), any(), anyBoolean());
324 Map<String, Object> yamlInterfaceMap = new Yaml().load(interfaceTypes.getValue());
325 assertEquals(3, yamlInterfaceMap.size());
326 assertNotNull(yamlInterfaceMap.get("tosca.interfaces.test.node.lifecycle.Attach"));
327 assertNotNull(yamlInterfaceMap.get("tosca.interfaces.test.node.lifecycle.Detach"));
328 assertNotNull(yamlInterfaceMap.get("tosca.interfaces.test.node.lifecycle.Reconfigure"));
333 void testCreateService_Fail_NotFoundNodeTypesArtifacts() {
334 Service oldService = createServiceObject(true);
335 String payloadName = "valid_vf";
336 Map<String, byte[]> payload = crateCsarFromPayload();
337 Service newService = createServiceObject(true);
339 when(serviceBusinessLogic.validateServiceBeforeCreate(any(Service.class), any(User.class), any(AuditingActionEnum.class)))
340 .thenReturn(Either.left(newService));
341 when(toscaOperationFacade.validateCsarUuidUniqueness(anyString())).thenReturn(StorageOperationStatus.OK);
342 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class), any(Map.class), anyString())).thenReturn(getCsarInfo());
343 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class), any(Service.class)))
344 .thenReturn(Either.right(ActionStatus.GENERAL_ERROR));
345 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(), any(CsarInfo.class), anyString(),
346 any(Service.class))).thenReturn(getParsedToscaYamlInfo());
348 Assertions.assertThrows(ComponentException.class,
349 () -> sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName));
353 void testCreateServiceFromCsar() {
354 Service oldService = createServiceObject(true);
355 String csarUUID = "valid_vf";
356 Map<String, byte[]> payload = crateCsarFromPayload();
357 ServiceCsarInfo csarInfo = getCsarInfo();
358 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> map =
361 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class),
362 any(Map.class), anyString())).thenReturn(csarInfo);
363 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class),
364 any(Service.class))).thenReturn(Either.left(map));
365 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromCsar(oldService,
366 user, payload, csarUUID));
370 void testCreateServiceFromYaml() {
371 Service oldService = createServiceObject(true);
372 Resource resource = createOldResource();
373 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
374 String yamlName = "group.yml";
375 ServiceCsarInfo csarInfo = getCsarInfo();
376 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
377 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
379 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
380 Map<String, Object> map = new HashMap<>();
381 map.put("tosca_definitions_version", "123");
382 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
383 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
384 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
385 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(Map.class),
386 eq(csarInfo), anyString(), any(Component.class))).thenReturn(parsedToscaYamlInfo);
387 when(serviceBusinessLogic.lockComponentByName(anyString(), any(Service.class), anyString()))
388 .thenReturn(Either.left(true));
390 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromYaml(oldService,
391 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
392 nodeTypesArtifactsToCreate, false, true, nodeName, user.getUserId()));
396 void testCreateServiceAndRIsFromYaml() {
397 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
398 Service oldService = createServiceObject(true);
399 Resource resource = createOldResource();
400 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
401 CreateServiceFromYamlParameter csfyp = getCsfyp();
402 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
403 Map<String, Object> map = new HashMap<>();
404 map.put("tosca_definitions_version", "123");
405 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
406 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
407 csfyp.setNodeTypesInfo(nodeTypesInfo);
408 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
409 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
410 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
411 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
415 void testCreateServiceAndRIsFromYamlShoudLook() {
416 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
417 Service oldService = createServiceObject(true);
418 Resource resource = createOldResource();
419 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
420 CreateServiceFromYamlParameter csfyp = getCsfyp();
421 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
422 Map<String, Object> map = new HashMap<>();
423 map.put("tosca_definitions_version", "123");
424 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
425 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
426 csfyp.setNodeTypesInfo(nodeTypesInfo);
427 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
428 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
429 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
430 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
434 void testCreateOrUpdateArtifacts() {
435 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
436 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
437 String yamlFileName = "group.yml";
438 CsarInfo csarInfo = getCsarInfo();
439 Resource preparedResource = createParseResourceObject(false);
440 preparedResource.setResourceType(ResourceTypeEnum.VF);
441 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
442 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
443 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
444 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
445 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
446 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
447 artifactDefinition.setArtifactName("artifactName");
448 artifactDefinitions.add(artifactDefinition);
449 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
450 artifactDefinitions);
451 nodeTypesArtifactsToHandle.put(nodeName, enumListEnumMap);
452 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
453 nodeTypeInfoToUpdateArtifacts.setNodeName(nodeName);
454 nodeTypeInfoToUpdateArtifacts.setNodeTypesArtifactsToHandle(nodeTypesArtifactsToHandle);
456 Assertions.assertNotNull(
457 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
458 preparedResource, nodeTypeInfoToUpdateArtifacts, true, true)
463 void testHandleVfCsarArtifacts() {
464 Resource resource = createParseResourceObject(true);
465 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
466 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
467 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
468 artifactDefinition.setUniqueId("uniqueId");
469 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
470 resource.setDeploymentArtifacts(deploymentArtifacts);
471 CsarInfo csarInfo = getCsarInfo();
472 Map<String, byte[]> csar = new HashMap<>();
473 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
474 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
475 csar.put(csarKey, artifactsMetaBytes);
476 csarInfo.setCsar(csar);
477 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
478 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
479 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
480 when(csarArtifactsAndGroupsBusinessLogic
481 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
482 anyList())).thenReturn(Either.left(resource));
483 Assertions.assertNotNull(
484 sIBL.handleVfCsarArtifacts(resource,
485 csarInfo, createdArtifacts, artifactOperation, true, true));
489 void testHandleVfCsarArtifactsGetToscaElement() {
490 Resource resource = createParseResourceObject(true);
491 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
492 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
493 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
494 artifactDefinition.setUniqueId("uniqueId");
495 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
496 resource.setDeploymentArtifacts(deploymentArtifacts);
497 CsarInfo csarInfo = getCsarInfo();
498 Map<String, byte[]> csar = new HashMap<>();
499 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
500 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
501 csar.put(csarKey, artifactsMetaBytes);
502 csarInfo.setCsar(csar);
503 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
504 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
505 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
506 when(csarArtifactsAndGroupsBusinessLogic
507 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
508 anyList())).thenReturn(Either.left(resource));
509 Assertions.assertNotNull(
510 sIBL.handleVfCsarArtifacts(resource,
511 csarInfo, createdArtifacts, artifactOperation, true, true));
515 void testCreateOrUpdateSingleNonMetaArtifactToComstants() {
516 Resource resource = createParseResourceObject(false);
517 CsarInfo csarInfo = getCsarInfo();
518 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
519 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
520 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
521 artifactDefinition.setArtifactName("artifactDefinition");
522 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
523 resource.setDeploymentArtifacts(deploymentArtifacts);
524 Assertions.assertNotNull(resource);
525 Assertions.assertNotNull(csarInfo);
526 sIBL.createOrUpdateSingleNonMetaArtifactToComstants(resource, csarInfo, artifactOperation, true, true);
531 void testCreateOrUpdateNonMetaArtifacts() {
532 CsarInfo csarInfo = getCsarInfo();
533 Resource resource = createParseResourceObject(false);
534 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
535 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
537 Either<Resource, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo, resource,
538 createdArtifacts, true, true, artifactOperation);
539 assertEquals(result.left().value(), resource);
543 void testFindVfCsarArtifactsToHandle() {
544 Resource resource = createParseResourceObject(false);
545 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
546 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
547 artifactDefinition.setArtifactName("artifactDefinition");
548 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
549 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
550 artifacts.put("artifacts", artifactDefinition);
551 List<GroupDefinition> groups = new ArrayList<>();
552 GroupDefinition groupDefinition = new GroupDefinition();
553 groupDefinition.setUniqueId("groupDefinitionUniqueId");
554 groupDefinition.setName("groupDefinition");
555 groups.add(groupDefinition);
556 resource.setDeploymentArtifacts(deploymentArtifacts);
557 resource.setArtifacts(artifacts);
558 resource.setGroups(groups);
559 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
561 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
562 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(resource, artifactPathAndNameList, user);
563 assertNotNull(result.left().value());
567 void testOrganizeVfCsarArtifactsByArtifactOperation() {
568 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
569 artifactPathAndNameList.add(getNonMetaArtifactInfo());
570 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
571 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
572 artifactDefinition.setArtifactName("artifactName");
573 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
574 artifactDefinition.setArtifactChecksum("artifactChecksum");
575 existingArtifactsToHandle.add(artifactDefinition);
576 Resource resource = createParseResourceObject(false);
578 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
579 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
580 existingArtifactsToHandle,
582 assertNotNull(enumMapResponseFormatEither.left().value());
586 void testOrganizeVfCsarArtifactsByArtifactOperationElse() {
587 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
588 artifactPathAndNameList.add(getNonMetaArtifactInfo());
589 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
590 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
591 artifactDefinition.setArtifactName("artifactName");
592 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
593 artifactDefinition.setArtifactChecksum("artifactChecksum");
594 existingArtifactsToHandle.add(artifactDefinition);
595 Resource resource = createParseResourceObject(false);
596 Assertions.assertNotNull(
597 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, resource,
602 void testProcessCsarArtifacts() {
603 CsarInfo csarInfo = getCsarInfo();
604 Resource resource = createParseResourceObject(false);
605 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
606 Either<Resource, ResponseFormat> resStatus = Either.left(resource);
607 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
608 artifactPathAndNameList.add(getNonMetaArtifactInfo());
609 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
610 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
611 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, artifactPathAndNameList);
612 Assertions.assertNotNull(
613 sIBL.processCsarArtifacts(csarInfo,
614 resource, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
618 void testCreateOrUpdateSingleNonMetaArtifact() {
619 Resource resource = createParseResourceObject(false);
620 CsarInfo csarInfo = getCsarInfo();
621 Map<String, byte[]> csar = csarInfo.getCsar();
622 String rootPath = System.getProperty("user.dir");
624 byte[] data = new byte[0];
625 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
627 data = Files.readAllBytes(path);
628 } catch (IOException e) {
631 csar.put("valid_vf.csar", data);
632 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
633 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
634 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
635 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
636 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
637 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
638 artifactDefinition.setArtifactName("artifactName");
639 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
640 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Resource.class), any(User.class),
641 any(Map.class), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
642 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
643 .thenReturn(Either.left(artifactDefinition));
644 Assertions.assertNotNull(
645 sIBL.createOrUpdateSingleNonMetaArtifact(resource, csarInfo, artifactPath,
646 artifactFileName, artifactType, artifactGroupType, artifactLabel,
647 artifactDisplayName, artifactDescription, artifactId, artifactOperation,
648 createdArtifacts, true, true, true));
652 void testCreateOrUpdateServiceArtifacts() throws IOException {
653 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
654 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
655 String yamlFileName = "group.yml";
656 CsarInfo csarInfo = getCsarInfo();
657 Map<String, byte[]> csar = new HashMap<>();
658 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
659 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
660 csar.put(csarKey, artifactsMetaBytes);
661 csarInfo.setCsar(csar);
662 Service preparedService = createServiceObject(true);
663 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
664 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
665 artifactDefinition.setArtifactName("artifactDefinition");
666 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
667 preparedService.setDeploymentArtifacts(deploymentArtifacts);
668 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
669 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
670 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
672 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(createServiceObject(true)));
673 when(csarArtifactsAndGroupsBusinessLogic.updateResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
674 anyString(), anyString(), anyList(), anyBoolean(), anyBoolean())).thenReturn(Either.left(preparedService));
675 Assertions.assertNotNull(
676 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
677 preparedService, nodeTypeInfoToUpdateArtifacts, true, true));
681 void testHandleVfCsarServiceArtifacts() {
682 Service service = createServiceObject(true);
683 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
684 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
685 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
686 artifactDefinition.setUniqueId("uniqueId");
687 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
688 service.setDeploymentArtifacts(deploymentArtifacts);
689 CsarInfo csarInfo = getCsarInfo();
690 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
691 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
692 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
693 when(csarArtifactsAndGroupsBusinessLogic.deleteVFModules(any(Service.class), any(CsarInfo.class), anyBoolean(), anyBoolean())).thenReturn(
694 Either.left(service));
695 Assertions.assertNotNull(
696 sIBL.handleVfCsarArtifacts(service, csarInfo, createdArtifacts, artifactOperation, true, true));
700 void testHandleVfCsarServiceArtifactsGetToscaElement() throws IOException {
701 Service service = createServiceObject(true);
702 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
703 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
704 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
705 artifactDefinition.setUniqueId("uniqueId");
706 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
707 service.setDeploymentArtifacts(deploymentArtifacts);
708 CsarInfo csarInfo = getCsarInfo();
709 Map<String, byte[]> csar = new HashMap<>();
710 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
711 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
712 csar.put(csarKey, artifactsMetaBytes);
713 csarInfo.setCsar(csar);
714 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
715 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
716 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
717 when(csarArtifactsAndGroupsBusinessLogic.createResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
718 anyString(), anyString(), anyList())).thenReturn(Either.left(service));
719 Assertions.assertNotNull(
720 sIBL.handleVfCsarArtifacts(service,
721 csarInfo, createdArtifacts, artifactOperation, true, true));
725 void testCreateOrUpdateNonMetaServiceArtifacts() {
726 CsarInfo csarInfo = getCsarInfo();
727 Service service = createServiceObject(true);
728 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
729 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
731 Either<Service, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo,
732 service, createdArtifacts, true, true, artifactOperation);
733 assertEquals(result.left().value(), service);
737 void testFindServiceCsarArtifactsToHandle() {
738 Service service = createServiceObject(true);
739 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
740 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
741 artifactDefinition.setArtifactName("artifactDefinition");
742 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
743 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
744 artifacts.put("artifacts", artifactDefinition);
745 List<GroupDefinition> groups = new ArrayList<>();
746 GroupDefinition groupDefinition = new GroupDefinition();
747 groupDefinition.setUniqueId("groupDefinitionUniqueId");
748 groupDefinition.setName("groupDefinition");
749 groups.add(groupDefinition);
750 service.setDeploymentArtifacts(deploymentArtifacts);
751 service.setArtifacts(artifacts);
752 service.setGroups(groups);
753 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
755 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
756 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(service, artifactPathAndNameList, user);
757 assertNotNull(result.left().value());
761 void testOrganizeVfCsarArtifactsByServiceArtifactOperation() {
762 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
763 artifactPathAndNameList.add(getNonMetaArtifactInfo());
764 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
765 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
766 artifactDefinition.setArtifactName("artifactName");
767 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
768 artifactDefinition.setArtifactChecksum("artifactChecksum");
769 existingArtifactsToHandle.add(artifactDefinition);
770 Service service = createServiceObject(true);
772 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
773 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
774 existingArtifactsToHandle, service, user);
775 assertNotNull(enumMapResponseFormatEither.left().value());
779 void testOrganizeVfCsarArtifactsByServiceArtifactOperationElse() {
780 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
781 artifactPathAndNameList.add(getNonMetaArtifactInfo());
782 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
783 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
784 artifactDefinition.setArtifactName("artifactName");
785 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
786 artifactDefinition.setArtifactChecksum("artifactChecksum");
787 existingArtifactsToHandle.add(artifactDefinition);
788 Service service = createServiceObject(true);
789 Assertions.assertNotNull(
790 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, service, user));
795 void testProcessServiceCsarArtifacts() {
796 CsarInfo csarInfo = getCsarInfo();
797 Service service = createServiceObject(true);
798 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
799 Either<Service, ResponseFormat> resStatus = Either.left(service);
800 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
801 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
802 List<CsarUtils.NonMetaArtifactInfo> objects = new ArrayList<>();
803 objects.add(getNonMetaArtifactInfo());
804 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, objects);
805 Assertions.assertNotNull(
806 sIBL.processCsarArtifacts(csarInfo, service, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
810 void testGetValidArtifactNames() {
811 CsarInfo csarInfo = getCsarInfo();
812 Map<String, Set<List<String>>> collectedWarningMessages = new HashMap<>();
813 Either<List<CsarUtils.NonMetaArtifactInfo>, String> result = sIBL.getValidArtifactNames(csarInfo,
814 collectedWarningMessages);
815 assertNotNull(result.left().value());
819 void testCreateOrUpdateSingleNonMetaServiceArtifact() {
820 Service service = createServiceObject(true);
821 CsarInfo csarInfo = getCsarInfo();
822 Map<String, byte[]> csar = csarInfo.getCsar();
823 String rootPath = System.getProperty("user.dir");
825 byte[] data = new byte[0];
826 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
828 data = Files.readAllBytes(path);
829 } catch (IOException e) {
832 csar.put("valid_vf.csar", data);
833 csarInfo.setCsar(csar);
834 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
835 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
836 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
837 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
838 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
839 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
840 artifactDefinition.setArtifactName("artifactName");
841 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
842 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Service.class), any(User.class),
843 anyMap(), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
844 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
845 .thenReturn(Either.left(artifactDefinition));
846 Assertions.assertNotNull(
847 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
848 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
849 artifactDescription, artifactId, artifactOperation, createdArtifacts,
854 void testCreateOrUpdateSingleNonMetaServiceArtifactNull() {
855 Service service = createServiceObject(true);
856 CsarInfo csarInfo = getCsarInfo();
857 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
858 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
859 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
860 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
861 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
862 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
863 .thenReturn(Either.left(artifactDefinition));
864 Assertions.assertNotNull(
865 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
866 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
867 artifactDescription, artifactId, artifactOperation, createdArtifacts,
872 void testCreateGroupsOnResource() {
873 Service service = createServiceObject(true);
874 Map<String, GroupDefinition> groups = new HashMap<>();
875 Assertions.assertNotNull(sIBL.createGroupsOnResource(service, groups));
879 void testCreateGroupsOnResourceNull() {
880 Service service = createServiceObject(true);
881 Map<String, GroupDefinition> groups = new HashMap<>();
882 Assertions.assertNotNull(
883 sIBL.createGroupsOnResource(service, groups));
887 void testUpdateGroupsMembersUsingResource() {
888 Service service = createServiceObject(true);
889 Map<String, GroupDefinition> groups = getGroups();
891 Assertions.assertNotNull(
892 sIBL.updateGroupsMembersUsingResource(groups, service));
896 void testUpdateGroupsMembersUsingResource_left() {
897 Service service = createServiceObject(true);
898 Map<String, GroupDefinition> groups = getGroups();
900 Assertions.assertNotNull(
901 sIBL.updateGroupsMembersUsingResource(groups, service));
905 void testCreateRIAndRelationsFromResourceYaml() throws IOException {
906 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
907 String yamlName = "group.yml";
908 Resource resource = createParseResourceObject(true);
909 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
910 String topologyTemplateYaml = getMainTemplateContent();
911 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
913 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
914 Map<String, Object> map = new HashMap<>();
915 map.put("tosca_definitions_version", "123");
916 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
918 CsarInfo csarInfo = getCsarInfo();
919 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
921 Assertions.assertThrows(ComponentException.class, () -> sIBL
922 .createRIAndRelationsFromYaml(yamlName, resource, uploadComponentInstanceInfoMap,
923 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
924 csarInfo, nodeTypesArtifactsToCreate, nodeName));
928 void testCreateResourceInstancesRelations() {
929 String yamlName = "group.yml";
930 Resource resource = createParseResourceObject(true);
931 resource.setComponentInstances(creatComponentInstances());
932 resource.setResourceType(ResourceTypeEnum.VF);
933 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
934 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
935 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
936 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
937 Assertions.assertThrows(ComponentException.class, () -> sIBL
938 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
942 void testCreateResourceInstancesRelations_Empty() {
943 String yamlName = "group.yml";
944 Resource resource = createParseResourceObject(true);
945 resource.setComponentInstances(creatComponentInstances());
946 resource.setResourceType(ResourceTypeEnum.VF);
947 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
948 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
949 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
950 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
951 Assertions.assertThrows(ComponentException.class, () -> sIBL
952 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
956 void testProcessComponentInstance1() {
957 String yamlName = "group.yml";
958 Resource resource = createParseResourceObject(true);
959 Resource originResource = createParseResourceObject(false);
960 originResource.setResourceType(ResourceTypeEnum.VF);
961 List<ComponentInstance> componentInstancesList = creatComponentInstances();
962 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
963 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
964 dataTypeDefinition.setName("dataTypeDefinitionName");
965 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
966 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
967 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
968 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
969 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
970 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
971 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
972 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
973 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
974 Map<String, Resource> originCompMap = new HashMap<>();
975 originCompMap.put("componentUid", originResource);
976 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
977 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
978 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
979 Assertions.assertNotNull(resource);
980 Assertions.assertNotNull(yamlName);
981 sIBL.processComponentInstance(yamlName, resource, componentInstancesList, allDataTypes.left().value(), instProperties,
982 instCapabilties, instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes,
983 originCompMap, instInputs, instNodeFilter, null, uploadComponentInstanceInfo);
987 void testProcessComponentInstance_null() {
988 String yamlName = "group.yml";
989 Resource resource = createParseResourceObject(true);
990 Resource originResource = createParseResourceObject(false);
991 List<ComponentInstance> componentInstancesList = creatComponentInstances();
992 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
993 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
994 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
995 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
996 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
997 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
998 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
999 Map<String, Resource> originCompMap = new HashMap<>();
1000 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1001 originCompMap.put("componentUid", originResource);
1002 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1003 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1004 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
1006 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
1007 resource, componentInstancesList, null, instProperties, instCapabilties,
1008 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
1009 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
1013 void testAddInputsValuesToRi() {
1014 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1015 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
1016 List<UploadPropInfo> uploadPropInfoList = getPropertyList();
1017 properties.put("propertiesMap", uploadPropInfoList);
1018 uploadComponentInstanceInfo.setProperties(properties);
1019 Resource resource = createParseResourceObject(true);
1020 Resource originResource = createParseResourceObject(false);
1021 List<InputDefinition> inputs = new ArrayList<>();
1022 InputDefinition inputDefinition = new InputDefinition();
1023 inputDefinition.setName("inputDefinitionName");
1024 inputDefinition.setUniqueId("uniqueId");
1025 inputDefinition.setType("inputDefinitionType");
1026 inputs.add(inputDefinition);
1027 originResource.setInputs(inputs);
1028 ComponentInstance currentCompInstance = new ComponentInstance();
1029 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1030 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1031 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
1032 dataTypeDefinition.setName("dataTypeDefinitionName");
1033 allDataTypes.put("dataTypeDefinitionMap", dataTypeDefinition);
1035 Assertions.assertThrows(ComponentException.class, () -> sIBL
1036 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1037 currentCompInstance, instInputs, allDataTypes));
1041 void testProcessProperty() {
1042 Resource resource = createParseResourceObject(true);
1043 List<InputDefinition> inputs = new ArrayList<>();
1044 InputDefinition inputDefinition = new InputDefinition();
1045 inputDefinition.setName("inputDefinitionName");
1046 inputDefinition.setUniqueId("uniqueId");
1047 inputDefinition.setType("inputDefinitionType");
1048 inputs.add(inputDefinition);
1049 resource.setInputs(inputs);
1050 ComponentInstance currentCompInstance = null;
1051 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1052 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
1053 currPropertiesMap.put("propertyInfoName", inputDefinition);
1054 List<ComponentInstanceInput> instPropList = new ArrayList<>();
1055 List<UploadPropInfo> propertyList = getPropertyList();
1056 Assertions.assertNotNull(resource);
1057 Assertions.assertNotNull(currPropertiesMap);
1058 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
1062 void testHandleSubstitutionMappings() {
1063 Resource resource = createParseResourceObject(true);
1064 resource.setResourceType(ResourceTypeEnum.VF);
1065 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1066 when(toscaOperationFacade.getToscaFullElement(anyString()))
1067 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1069 Assertions.assertThrows(ComponentException.class,
1070 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
1074 void testHandleSubstitutionMappings_left() {
1075 Resource resource = createParseResourceObject(true);
1076 resource.setResourceType(ResourceTypeEnum.VF);
1077 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1078 when(toscaOperationFacade.getToscaFullElement(anyString()))
1079 .thenReturn(Either.left(resource));
1081 Assertions.assertThrows(ComponentException.class,
1082 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
1086 void testCreateResourceInstances() {
1087 String yamlName = "group.yml";
1088 Resource resource = createParseResourceObject(true);
1089 Resource originResource = createParseResourceObject(false);
1090 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1091 UploadComponentInstanceInfo nodesInfoValue = new UploadComponentInstanceInfo();
1092 nodesInfoValue.setName("zxjTestImportServiceAb");
1093 nodesInfoValue.setRequirements(gerRequirements());
1094 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1095 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1096 nodeNamespaceMap.put("resources", originResource);
1098 Assertions.assertThrows(ComponentException.class,
1099 () -> sIBL.createResourceInstances(yamlName, resource, uploadResInstancesMap, nodeNamespaceMap));
1103 void testHandleNodeTypes() throws IOException {
1104 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1105 String yamlName = "group.yml";
1106 Resource resource = createParseResourceObject(true);
1107 String topologyTemplateYaml = getMainTemplateContent();
1108 boolean needLock = true;
1109 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1110 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1111 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1112 Map<String, Object> map = new HashMap<>();
1113 map.put("tosca_definitions_version", "123");
1114 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1115 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1116 CsarInfo csarInfo = getCsarInfo();
1117 Assertions.assertNotNull(resource);
1119 sIBL.handleNodeTypes(yamlName, resource, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1120 nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo, nodeName);
1124 void testHandleNestedVfc1() {
1125 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1126 Resource resource = createParseResourceObject(false);
1127 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1128 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1129 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1130 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
1131 nodeTypeInfo.setTemplateFileName("groups.yml");
1132 nodeTypeInfo.setMappedToscaTemplate(new HashMap<>());
1133 nodesInfo.put(nodeName, nodeTypeInfo);
1134 CsarInfo csarInfo = getCsarInfo();
1136 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(resource,
1137 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1141 void testHandleComplexVfc1() {
1142 Resource resource = createParseResourceObject(true);
1143 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1144 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1145 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1146 CsarInfo csarInfo = getCsarInfo();
1147 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1148 String yamlName = "group.yml";
1149 when(serviceImportParseLogic.buildValidComplexVfc(any(Resource.class), any(CsarInfo.class), anyString(),
1150 anyMap())).thenReturn(createParseResourceObject(false));
1151 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1152 .thenReturn(Either.left(resource));
1153 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class),
1154 anyBoolean())).thenReturn(Either.left(true));
1156 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleComplexVfc(resource,
1157 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName, yamlName));
1161 void testCreateNodeTypes1() {
1162 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1163 String yamlName = "group.yml";
1164 Resource resource = createParseResourceObject(false);
1165 boolean needLock = true;
1166 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1167 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
1168 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
1169 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
1170 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1171 artifactDefinition.setArtifactName("artifactName");
1172 artifactDefinitions.add(artifactDefinition);
1173 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
1174 artifactDefinitions);
1175 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
1176 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1177 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1178 Map<String, Object> map = new HashMap<>();
1179 map.put("tosca_definitions_version", "123");
1180 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1181 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1183 CsarInfo csarInfo = getCsarInfo();
1184 Map<String, Object> mapToConvert = new HashMap<>();
1185 Map<String, Object> nodeTypes = new HashMap<>();
1186 nodeTypes.put(nodeName, "");
1187 Assertions.assertNotNull(resource);
1189 sIBL.createNodeTypes(yamlName,
1190 resource, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1191 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
1195 void testCreateNodeTypeResourceFromYaml() throws IOException {
1196 String yamlName = "group.yml";
1197 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1198 Map<String, Object> nodeMap = new HashMap<>();
1199 nodeMap.put(nodeName, getGroupsYaml());
1200 Map.Entry<String, Object> nodeNameValue = nodeMap.entrySet().iterator().next();
1201 Map<String, Object> mapToConvert = new HashedMap();
1202 Resource resourceVf = createParseResourceObject(false);
1203 boolean needLock = true;
1204 Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle = new HashMap<>();
1205 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1206 boolean forceCertificationAllowed = true;
1207 CsarInfo csarInfo = getCsarInfo();
1208 boolean isNested = true;
1209 UploadResourceInfo resourceMetaData = new UploadResourceInfo();
1210 resourceMetaData.setResourceType("VFC");
1211 ImmutablePair<Resource, ActionStatus> immutablePair = new ImmutablePair<>(resourceVf, ActionStatus.CREATED);
1212 when(serviceImportParseLogic.fillResourceMetadata(anyString(), any(Resource.class), anyString(), any(User.class)))
1213 .thenReturn(resourceMetaData);
1214 when(serviceImportParseLogic.buildNodeTypeYaml(any(Map.Entry.class), anyMap(), anyString(), any(CsarInfo.class)))
1215 .thenReturn(nodeName);
1216 when(serviceBusinessLogic.validateUser(any(User.class), anyString(), any(Component.class), any(AuditingActionEnum.class),
1217 anyBoolean())).thenReturn(user);
1218 when(serviceImportParseLogic.createResourceFromNodeType(anyString(), any(UploadResourceInfo.class), any(User.class), anyBoolean(),
1220 anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
1221 anyString(), anyBoolean())).thenReturn(immutablePair);
1222 Assertions.assertNotNull(
1223 sIBL.createNodeTypeResourceFromYaml(yamlName, nodeNameValue, user, mapToConvert,
1224 resourceVf, needLock, nodeTypeArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1225 forceCertificationAllowed, csarInfo, isNested));
1229 void testCreateRIAndRelationsFromYaml() {
1230 String yamlName = "group.yml";
1231 Service service = createServiceObject(true);
1232 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
1233 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1235 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1236 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
1237 CsarInfo csarInfo = getCsarInfo();
1238 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1239 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1241 Assertions.assertNotNull(sIBL
1242 .createRIAndRelationsFromYaml(yamlName, service, uploadComponentInstanceInfoMap,
1243 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
1244 csarInfo, nodeTypesArtifactsToCreate, nodeName));
1248 void testCreateServiceInstancesRelations() {
1249 String yamlName = "group.yml";
1250 Service service = createServiceObject(true);
1251 service.setComponentInstances(creatComponentInstances());
1252 Resource newResource = createNewResource();
1253 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1254 ComponentParametersView componentParametersView = new ComponentParametersView();
1255 RequirementDefinition requirementDefinition = new RequirementDefinition();
1256 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1257 capabilityDefinition.setName("as");
1258 capabilityDefinition.setUniqueId("1");
1259 capabilityDefinition.setOwnerId("2");
1260 ResponseFormat responseFormat = new ResponseFormat();
1261 responseFormat.setStatus(200);
1262 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(newResource);
1263 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1264 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(service));
1265 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1266 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1267 anyString())).thenReturn(Either.left(requirementDefinition));
1268 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1269 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1270 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1271 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
1272 Assertions.assertNotNull(sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1276 void testCreateServiceInstancesRelations_Empty() {
1277 String yamlName = "group.yml";
1278 Service service = createServiceObject(true);
1279 service.setComponentInstances(creatComponentInstances());
1280 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1282 Assertions.assertThrows(ComponentException.class,
1283 () -> sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1287 void testProcessComponentInstance() {
1288 String yamlName = "group.yml";
1289 Service service = createServiceObject(true);
1290 Resource originResource = createParseResourceObject(false);
1291 originResource.setResourceType(ResourceTypeEnum.VF);
1292 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1293 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
1294 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
1295 dataTypeDefinition.setName("dataTypeDefinitionName");
1296 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
1297 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
1298 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1299 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1300 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1301 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1302 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1303 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1304 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1305 Map<String, Resource> originCompMap = new HashMap<>();
1306 originCompMap.put("componentUid", originResource);
1307 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1308 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1309 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
1310 Assertions.assertNotNull(service);
1312 sIBL.processComponentInstance(yamlName, service, componentInstancesList, allDataTypes.left().value(),
1313 instProperties, instCapabilties, instRequirements, instDeploymentArtifacts,
1314 instArtifacts, instAttributes, originCompMap, instInputs, instNodeFilter, null,
1315 uploadComponentInstanceInfo);
1319 void testProcessComponentInstance_null2() {
1320 String yamlName = "group.yml";
1321 Service service = createServiceObject(true);
1322 Resource originResource = createParseResourceObject(false);
1323 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1324 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1325 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1326 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1327 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1328 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1329 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1330 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1331 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1332 Map<String, Resource> originCompMap = new HashMap<>();
1333 originCompMap.put("componentUid", originResource);
1334 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1335 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1336 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
1338 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
1339 service, componentInstancesList, null, instProperties, instCapabilties,
1340 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
1341 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
1345 void testAddInputsValuesToRi2() {
1346 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1347 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
1348 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
1349 UploadPropInfo uploadPropInfo = new UploadPropInfo();
1350 uploadPropInfo.setName("uploadPropInfo");
1351 uploadPropInfoList.add(uploadPropInfo);
1352 uploadPropInfoList.add(uploadPropInfo);
1353 properties.put("propertiesMap", uploadPropInfoList);
1354 uploadComponentInstanceInfo.setProperties(properties);
1355 Service resource = createServiceObject(true);
1356 Resource originResource = createParseResourceObject(false);
1357 List<InputDefinition> inputs = new ArrayList<>();
1358 InputDefinition inputDefinition = new InputDefinition();
1359 inputDefinition.setUniqueId("uniqueId");
1360 inputs.add(inputDefinition);
1361 originResource.setInputs(inputs);
1362 ComponentInstance currentCompInstance = new ComponentInstance();
1363 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1364 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1366 Assertions.assertThrows(ComponentException.class, () -> sIBL
1367 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1368 currentCompInstance, instInputs, allDataTypes));
1372 void testProcessProperty2() {
1373 Service resource = createServiceObject(true);
1374 List<InputDefinition> inputs = new ArrayList<>();
1375 ComponentInstance currentCompInstance = null;
1376 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1377 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
1378 InputDefinition inputDefinition = new InputDefinition();
1379 inputDefinition.setName("inputDefinitionName");
1380 inputDefinition.setType("inputDefinitionType");
1381 inputs.add(inputDefinition);
1382 currPropertiesMap.put("propertyInfoName", inputDefinition);
1383 resource.setInputs(inputs);
1384 List<ComponentInstanceInput> instPropList = new ArrayList<>();
1385 List<UploadPropInfo> propertyList = new ArrayList<>();
1386 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
1387 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
1388 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
1389 getInputValueDataDefinition.setInputName("inputDefinitionName");
1390 get_input.add(getInputValueDataDefinition);
1391 UploadPropInfo propertyInfo = new UploadPropInfo();
1392 propertyInfo.setValue("value");
1393 propertyInfo.setGet_input(get_input);
1394 propertyInfo.setName("propertyInfoName");
1395 propertyList.add(propertyInfo);
1396 Assertions.assertNotNull(resource);
1398 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
1402 void testProcessGetInput() {
1403 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1404 List<InputDefinition> inputs = new ArrayList<>();
1405 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1407 Assertions.assertThrows(ComponentException.class, () -> sIBL.processGetInput(getInputValues, inputs, getInputIndex));
1411 void testProcessGetInput_optional() {
1412 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1413 List<InputDefinition> inputs = new ArrayList<>();
1414 InputDefinition inputDefinition = new InputDefinition();
1415 inputDefinition.setUniqueId("uniqueId");
1416 inputDefinition.setName("InputName");
1417 inputs.add(inputDefinition);
1418 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1419 getInputIndex.setInputName("InputName");
1420 Assertions.assertNotNull(inputs);
1422 sIBL.processGetInput(getInputValues, inputs, getInputIndex);
1426 void testAddPropertyValuesToRi() {
1427 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1428 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1429 Resource resource = createParseResourceObject(true);
1430 List<InputDefinition> inputs = new ArrayList<>();
1431 InputDefinition inputDefinition = new InputDefinition();
1432 inputDefinition.setName("inputDefinitionName");
1433 inputDefinition.setUniqueId("uniqueId");
1434 inputDefinition.setType("inputDefinitionType");
1435 inputs.add(inputDefinition);
1436 resource.setInputs(inputs);
1437 Resource originResource = createParseResourceObject(false);
1438 originResource.setProperties(getProperties());
1439 ComponentInstance currentCompInstance = new ComponentInstance();
1440 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1441 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1442 ResponseFormat responseFormat = new ResponseFormat();
1443 when(serviceImportParseLogic.findInputByName(eq(inputs), any(GetInputValueDataDefinition.class)))
1444 .thenReturn(inputDefinition);
1445 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1446 Assertions.assertNotNull(
1447 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1448 currentCompInstance, instProperties, allDataTypes));
1452 void testAddPropertyValuesToRi_else() {
1453 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1454 Resource resource = createParseResourceObject(true);
1455 Resource originResource = createParseResourceObject(false);
1456 originResource.setProperties(getProperties());
1457 ComponentInstance currentCompInstance = new ComponentInstance();
1458 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1459 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1460 ResponseFormat responseFormat = new ResponseFormat();
1461 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1462 Assertions.assertNotNull(
1463 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource, currentCompInstance,
1464 instProperties, allDataTypes));
1468 void testAddPropertyValuesToRi2() {
1469 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1470 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1471 Service service = createServiceObject(true);
1472 List<InputDefinition> inputs = new ArrayList<>();
1473 InputDefinition inputDefinition = new InputDefinition();
1474 inputDefinition.setName("inputDefinitionName");
1475 inputDefinition.setUniqueId("uniqueId");
1476 inputDefinition.setType("inputDefinitionType");
1477 inputs.add(inputDefinition);
1478 service.setInputs(inputs);
1479 Resource originResource = createParseResourceObject(false);
1480 originResource.setProperties(getProperties());
1481 ComponentInstance currentCompInstance = new ComponentInstance();
1482 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1483 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1484 ResponseFormat responseFormat = new ResponseFormat();
1485 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1486 when(serviceImportParseLogic.findInputByName(anyList(), any(GetInputValueDataDefinition.class)))
1487 .thenReturn(inputDefinition);
1488 Assertions.assertNotNull(
1489 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource,
1490 currentCompInstance, instProperties, allDataTypes));
1494 void testAddPropertyValuesToRi2_else() {
1495 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1496 Service service = createServiceObject(true);
1497 Resource originResource = createParseResourceObject(false);
1498 originResource.setProperties(getProperties());
1499 ComponentInstance currentCompInstance = new ComponentInstance();
1500 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1501 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1502 ResponseFormat responseFormat = new ResponseFormat();
1503 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1504 Assertions.assertNotNull(
1505 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource, currentCompInstance,
1506 instProperties, allDataTypes));
1510 void testProcessComponentInstanceCapabilities() {
1511 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1512 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1513 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1514 uploadComponentInstanceInfo.setCapabilities(getCapabilities());
1515 ComponentInstance currentCompInstance = new ComponentInstance();
1516 Resource originResource = createParseResourceObject(false);
1517 Assertions.assertNotNull(originResource);
1518 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1523 void testProcessComponentInstanceCapabilities_null() {
1524 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1525 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1526 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1527 ComponentInstance currentCompInstance = new ComponentInstance();
1528 Resource originResource = createParseResourceObject(false);
1529 Assertions.assertNotNull(originResource);
1531 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1536 void testUpdateCapabilityPropertiesValues() {
1537 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1538 Map<String, List<CapabilityDefinition>> originCapabilities = new HashMap<>();
1539 Map<String, Map<String, UploadPropInfo>> newPropertiesMap = new HashMap<>();
1540 Assertions.assertNull(allDataTypes);
1541 sIBL.updateCapabilityPropertiesValues(null, originCapabilities, newPropertiesMap);
1545 void testUpdatePropertyValues() {
1546 List<ComponentInstanceProperty> properties = new ArrayList<>();
1547 Map<String, UploadPropInfo> newProperties = new HashMap<>();
1548 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1549 Assertions.assertNotNull(allDataTypes);
1550 sIBL.updatePropertyValues(properties, newProperties, allDataTypes);
1554 void testUpdatePropertyValue() {
1555 ComponentInstanceProperty property = new ComponentInstanceProperty();
1556 property.setType("services");
1557 UploadPropInfo propertyInfo = new UploadPropInfo();
1558 propertyInfo.setValue("value");
1559 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1560 when(serviceBusinessLogic.validatePropValueBeforeCreate(any(IPropertyInputCommon.class), anyString(), anyBoolean(), anyMap())).thenReturn(
1562 Assertions.assertNotNull(sIBL.updatePropertyValue(property, propertyInfo, allDataTypes));
1566 void testGetOriginResource() {
1567 String yamlName = "group.yml";
1568 Map<String, Resource> originCompMap = new HashMap<>();
1569 ComponentInstance currentCompInstance = new ComponentInstance();
1570 currentCompInstance.setComponentUid("currentCompInstance");
1571 when(toscaOperationFacade.getToscaFullElement(anyString()))
1572 .thenReturn(Either.left(createParseResourceObject(true)));
1573 Assertions.assertNotNull(sIBL.getOriginResource(yamlName, originCompMap, currentCompInstance));
1577 void testUpdateCalculatedCapReqWithSubstitutionMappings() {
1578 Resource resource = createParseResourceObject(false);
1579 resource.setComponentInstances(creatComponentInstances());
1580 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1582 when(toscaOperationFacade.deleteAllCalculatedCapabilitiesRequirements(any())).thenReturn(StorageOperationStatus.OK);
1583 Assertions.assertNotNull(sIBL.updateCalculatedCapReqWithSubstitutionMappings(resource, uploadResInstancesMap));
1587 void testFillUpdatedInstCapabilitiesRequirements() {
1588 List<ComponentInstance> componentInstances = creatComponentInstances();
1589 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1590 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilities = new HashMap<>();
1591 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirement = new HashMap<>();
1592 Assertions.assertNotNull(componentInstances);
1594 sIBL.fillUpdatedInstCapabilitiesRequirements(componentInstances, uploadResInstancesMap,
1595 updatedInstCapabilities, updatedInstRequirement);
1599 void testFillUpdatedInstCapabilities() {
1600 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilties = new HashMap<>();
1601 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1602 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
1603 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1604 capabilityDefinition.setName("mme_ipu_vdu.feature");
1605 capabilityDefinitionList.add(capabilityDefinition);
1606 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
1607 ComponentInstance instance = new ComponentInstance();
1608 instance.setCapabilities(capabilities);
1609 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
1610 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
1611 Assertions.assertNotNull(instance);
1613 sIBL.fillUpdatedInstCapabilities(updatedInstCapabilties, instance, capabilitiesNamesToUpdate);
1617 void testFillUpdatedInstRequirements() {
1618 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirements = new
1620 ComponentInstance instance = new ComponentInstance();
1621 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1622 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
1623 RequirementDefinition requirementDefinition = new RequirementDefinition();
1624 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1625 requirementDefinitionList.add(requirementDefinition);
1626 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
1627 instance.setRequirements(requirements);
1628 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
1629 requirementsNamesToUpdate.put("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test",
1630 "requirementsNamesToUpdate");
1631 Assertions.assertNotNull(instance);
1633 sIBL.fillUpdatedInstRequirements(updatedInstRequirements, instance, requirementsNamesToUpdate);
1637 void testAddRelationsToRI() {
1638 String yamlName = "group.yml";
1639 Service service = createServiceObject(true);
1641 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1642 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1643 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1644 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1645 ComponentInstance componentInstance = new ComponentInstance();
1646 componentInstance.setName("zxjTestImportServiceAb");
1647 componentInstancesList.add(componentInstance);
1648 service.setComponentInstances(componentInstancesList);
1649 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1650 RequirementDefinition requirementDefinition = new RequirementDefinition();
1651 requirementDefinition.setOwnerId("1");
1652 requirementDefinition.setUniqueId("2");
1653 requirementDefinition.setCapability("3");
1654 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1655 capabilityDefinition.setName("4");
1656 capabilityDefinition.setUniqueId("5");
1657 capabilityDefinition.setOwnerId("6");
1658 ResponseFormat responseFormat = new ResponseFormat();
1659 responseFormat.setStatus(200);
1660 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1661 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1662 anyString())).thenReturn(Either.left(requirementDefinition));
1663 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1664 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1665 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1666 Assertions.assertNotNull(service);
1668 sIBL.addRelationsToRI(yamlName, service, uploadResInstancesMap, componentInstancesList, relations);
1672 void testAddRelationsToRI_null() {
1673 String yamlName = "group.yml";
1674 Service service = createServiceObject(true);
1675 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1676 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1677 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1678 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1679 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1681 Assertions.assertThrows(ComponentException.class, () -> sIBL.addRelationsToRI(yamlName,
1682 service, uploadResInstancesMap, componentInstancesList, relations));
1686 void testAddRelationToRI() {
1687 String yamlName = "group.yml";
1688 Service service = createServiceObject(true);
1689 service.setComponentInstances(creatComponentInstances());
1691 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1692 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1693 RequirementDefinition requirementDefinition = new RequirementDefinition();
1694 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1695 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1696 capabilityDefinition.setName("capabilityDefinitionName");
1697 capabilityDefinition.setUniqueId("capabilityDefinitionUniqueId");
1698 capabilityDefinition.setOwnerId("capabilityDefinitionOwnerId");
1699 ResponseFormat responseFormat = new ResponseFormat();
1700 when(serviceImportParseLogic.findAvailableRequirement(anyString(), anyString(), any(UploadComponentInstanceInfo.class),
1701 any(ComponentInstance.class), anyString())).thenReturn(Either.left(requirementDefinition));
1702 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1703 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1704 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1705 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1706 Assertions.assertNotNull(relations.get(0).getRelationships().get(0).getOperations());
1710 void testAddRelationToRI_null() {
1711 String yamlName = "group.yml";
1712 Service service = createServiceObject(true);
1713 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1714 service.setComponentInstances(componentInstancesList);
1715 ResponseFormat responseFormat = new ResponseFormat();
1716 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1717 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1718 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1719 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1723 void testGetResourceAfterCreateRelations() {
1724 Service service = createServiceObject(true);
1725 ComponentParametersView componentParametersView = createComponentParametersView();
1726 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1727 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
1728 .thenReturn(Either.left(createServiceObject(true)));
1729 Assertions.assertNotNull(sIBL.getResourceAfterCreateRelations(service));
1733 void testCreateServiceInstances() {
1734 String yamlName = "group.yml";
1735 Service service = createServiceObject(true);
1736 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1737 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1738 uploadResInstancesMap.put("uploadResInstancesMap", nodesInfoValue);
1739 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1740 Resource resource = createParseResourceObject(true);
1741 resource.setToscaResourceName("toscaResourceName");
1742 nodeNamespaceMap.put("nodeNamespaceMap", resource);
1744 Assertions.assertThrows(ComponentException.class,
1745 () -> sIBL.createServiceInstances(yamlName, service, uploadResInstancesMap, nodeNamespaceMap));
1749 void testCreateAndAddResourceInstance() {
1750 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1751 String yamlName = "group.yml";
1752 Resource resource = createParseResourceObject(false);
1753 Resource originResource = createParseResourceObject(true);
1754 originResource.setResourceType(ResourceTypeEnum.VF);
1755 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1756 nodeNamespaceMap.put("resources", originResource);
1757 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1758 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1760 Assertions.assertThrows(ComponentException.class, () -> sIBL
1761 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, resource,
1762 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1766 void testCreateAndAddResourceInstances() {
1767 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1768 String yamlName = "group.yml";
1769 Service service = createServiceObject(true);
1770 service.setServiceType("services");
1771 Resource originResource = createParseResourceObject(true);
1772 originResource.setResourceType(ResourceTypeEnum.VF);
1773 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1774 nodeNamespaceMap.put("resources", originResource);
1775 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1776 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1778 Assertions.assertThrows(ComponentException.class, () -> sIBL
1779 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, service,
1780 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1784 void testValidateResourceInstanceBeforeCreate() {
1785 String yamlName = "group.yml";
1786 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1787 Resource originResource = createParseResourceObject(true);
1788 ResourceMetadataDataDefinition componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
1789 componentMetadataDataDefinition.setState(LifecycleStateEnum.CERTIFIED.name());
1790 ComponentMetadataDefinition componentMetadataDefinition = new ComponentMetadataDefinition(componentMetadataDataDefinition);
1791 originResource.setComponentMetadataDefinition(componentMetadataDefinition);
1792 originResource.setComponentType(ComponentTypeEnum.RESOURCE);
1793 originResource.setToscaResourceName("toscaResourceName");
1794 originResource.setResourceType(ResourceTypeEnum.VF);
1795 originResource.setResourceType(ResourceTypeEnum.VF);
1796 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1797 nodeNamespaceMap.put("resources", originResource);
1798 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(originResource));
1799 Assertions.assertNotNull(
1800 sIBL.validateResourceInstanceBeforeCreate(yamlName, uploadComponentInstanceInfo, nodeNamespaceMap));
1804 void testHandleServiceNodeTypes() {
1805 String yamlName = "group.yml";
1806 Service service = createServiceObject(true);
1807 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1809 boolean needLock = true;
1810 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1811 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1812 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1813 CsarInfo csarInfo = getCsarInfo();
1814 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1815 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(createOldResource()));
1816 Assertions.assertNotNull(service);
1818 sIBL.handleServiceNodeTypes(yamlName, service, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1819 nodeTypesNewCreatedArtifacts,
1820 nodeTypesInfo, csarInfo, nodeName);
1824 void testValidateResourceNotExisted() {
1825 String type = "org.openecomp.resource.vf";
1827 Assertions.assertThrows(ComponentException.class, () -> sIBL.validateResourceNotExisted(type));
1831 void testHandleNestedVF() {
1832 Service service = createServiceObject(true);
1833 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1834 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1835 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1836 CsarInfo csarInfo = getCsarInfo();
1837 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1839 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVF(service,
1840 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1844 void testHandleNestedVfc() {
1845 Service service = createServiceObject(true);
1846 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1847 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1848 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1849 CsarInfo csarInfo = getCsarInfo();
1850 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1852 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(service,
1853 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1857 void testHandleComplexVfc() {
1858 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1859 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1860 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1861 CsarInfo csarInfo = getCsarInfo();
1862 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1863 String yamlName = "group.yml";
1864 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1865 .thenReturn(createNewResource());
1866 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1867 .thenReturn(Either.left(createNewResource()));
1868 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class), anyBoolean()))
1869 .thenReturn(Either.left(true));
1871 Assertions.assertThrows(ComponentException.class, () -> sIBL
1872 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1873 csarInfo, nodeName, yamlName));
1877 void testHandleComplexVfcStatus() {
1878 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1879 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1880 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1881 CsarInfo csarInfo = getCsarInfo();
1882 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1883 String yamlName = "group.yml";
1884 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1885 .thenReturn(createNewResource());
1886 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1887 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1889 Assertions.assertThrows(ComponentException.class, () -> sIBL
1890 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1891 csarInfo, nodeName, yamlName));
1895 void testHandleComplexVfc2() {
1896 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1897 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1898 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1899 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1900 String yamlName = "group.yml";
1901 CsarInfo csarInfo = getCsarInfo();
1902 Map<String, byte[]> csar = new HashMap<>();
1903 csar.put(yamlName, yamlName.getBytes());
1904 csarInfo.setCsar(csar);
1905 Resource oldComplexVfc = createParseResourceObject(false);
1906 Resource newComplexVfc = createParseResourceObject(true);
1908 Assertions.assertThrows(ComponentException.class, () -> sIBL
1909 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1910 csarInfo, nodeName, yamlName, oldComplexVfc, newComplexVfc));
1914 void testUpdateResourceFromYaml() throws IOException {
1915 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1916 Resource newResource = createNewResource();
1917 Resource oldResource = createOldResource();
1918 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1919 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1920 String yamlFileName = "group.yml";
1921 String yamlFileContent = getYamlFileContent();
1922 CsarInfo csarInfo = getCsarInfo();
1923 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1924 Map<String, Object> map = new HashMap<>();
1925 map.put("tosca_definitions_version", "123");
1926 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1927 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1928 boolean isNested = true;
1930 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1931 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1932 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
1933 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
1934 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
1935 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
1936 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
1937 .thenReturn(Either.left(newResource));
1938 Assertions.assertThrows(ComponentException.class, () -> sIBL
1939 .updateResourceFromYaml(oldResource, newResource, actionEnum, createdArtifacts,
1940 yamlFileName, yamlFileContent, csarInfo, nodeTypesInfo,
1941 nodeTypesArtifactsToHandle, nodeName, isNested));
1945 void testCreateResourceFromYaml() throws IOException {
1946 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1947 Resource resource = createParseResourceObject(true);
1948 String topologyTemplateYaml = getMainTemplateContent();
1949 String yamlName = "group.yml";
1951 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1952 Map<String, Object> map = new HashMap<>();
1953 map.put("tosca_definitions_version", "123");
1954 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1956 CsarInfo csarInfo = getCsarInfo();
1957 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1958 boolean shouldLock = false;
1959 boolean inTransaction = true;
1961 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1962 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1963 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Component.class))).thenReturn(resource);
1964 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
1965 .thenReturn(Either.left(false));
1966 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
1967 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceFromYaml(resource,
1968 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
1969 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
1973 void testCreateResourceAndRIsFromYaml() throws IOException {
1974 String yamlName = "group.yml";
1975 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1976 Resource resource = createParseResourceObject(true);
1977 resource.setSystemName("SystemName");
1978 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1979 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1980 boolean isNormative = true;
1981 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1982 String topologyTemplateYaml = getMainTemplateContent();
1983 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1984 Map<String, Object> map = new HashMap<>();
1985 map.put("tosca_definitions_version", "123");
1986 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1987 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1989 CsarInfo csarInfo = getCsarInfo();
1990 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1991 boolean shouldLock = false;
1992 boolean inTransaction = true;
1993 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Resource.class)))
1994 .thenReturn(resource);
1996 when(serviceBusinessLogic.lockComponentByName(anyString(), any(), anyString()))
1997 .thenReturn(Either.left(true));
1999 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
2000 .thenReturn(Either.left(false));
2002 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
2004 Assertions.assertThrows(ComponentException.class, () -> sIBL
2005 .createResourceAndRIsFromYaml(yamlName, resource, parsedToscaYamlInfo, actionEnum,
2006 isNormative, createdArtifacts, topologyTemplateYaml, nodeTypesInfo, csarInfo,
2007 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
2011 void testCreateGroupsOnResource2() {
2012 Resource resource = createParseResourceObject(false);
2013 Map<String, GroupDefinition> groups = null;
2014 List<GroupDefinition> groupDefinitionList = new ArrayList<>();
2015 GroupDefinition groupDefinition = new GroupDefinition();
2016 groupDefinition.setUniqueId("groupDefinitionUniqueId");
2017 groupDefinition.setName("groupDefinition");
2018 groupDefinitionList.add(groupDefinition);
2020 Assertions.assertNotNull(
2021 sIBL.createGroupsOnResource(resource, groups));
2025 void testCreateGroupsOnResource2_null() {
2026 Resource resource = createParseResourceObject(false);
2027 Map<String, GroupDefinition> groups = null;
2029 Either<Resource, ResponseFormat> result = sIBL.createGroupsOnResource(resource, groups);
2030 assertEquals(result.left().value(), resource);
2034 void testUpdateGroupsMembersUsingResource2() {
2035 Resource resource = createParseResourceObject(true);
2036 Map<String, GroupDefinition> groups = getGroups();
2038 Assertions.assertNotNull(
2039 sIBL.updateGroupsMembersUsingResource(groups, resource));
2043 void testUpdateGroupsMembersUsingResource_left2() {
2044 Resource resource = createParseResourceObject(true);
2045 Map<String, GroupDefinition> groups = getGroups();
2047 Assertions.assertNotNull(
2048 sIBL.updateGroupsMembersUsingResource(groups, resource));
2052 void testUpdateGroupMembers() throws IOException {
2053 Map<String, GroupDefinition> groups = new HashMap<>();
2054 GroupDefinition updatedGroupDefinition = new GroupDefinition();
2055 Resource component = createParseResourceObject(true);
2056 List<ComponentInstance> componentInstances = creatComponentInstances();
2057 String groupName = "tosca_simple_yaml_1_1";
2058 Map<String, String> members = new HashMap<>();
2059 members.put("zxjTestImportServiceAb", getGroupsYaml());
2060 Assertions.assertNotNull(component);
2062 sIBL.updateGroupMembers(groups, updatedGroupDefinition, component, componentInstances, groupName, members);
2066 void testUpdateGroupMembers_null() throws IOException {
2067 Map<String, GroupDefinition> groups = new HashMap<>();
2068 GroupDefinition updatedGroupDefinition = new GroupDefinition();
2069 Resource component = createParseResourceObject(true);
2070 List<ComponentInstance> componentInstances = new ArrayList<>();
2071 String groupName = "tosca_simple_yaml_1_1";
2072 Map<String, String> members = new HashMap<>();
2073 members.put("zxjTestImportServiceAb", getGroupsYaml());
2075 Assertions.assertThrows(ComponentException.class, () -> sIBL.updateGroupMembers(groups,
2076 updatedGroupDefinition, component, componentInstances, groupName, members));
2080 void setCreateResourceTransaction() {
2081 Resource resource = createParseResourceObject(false);
2082 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2083 boolean isNormative = true;
2084 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
2085 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
2087 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2091 void setCreateResourceTransaction_leftTrue() {
2092 Resource resource = createParseResourceObject(false);
2093 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2094 boolean isNormative = true;
2095 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(true));
2097 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2101 void setCreateResourceTransaction_Left() {
2102 Resource resource = createParseResourceObject(false);
2103 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2104 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(false));
2105 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
2106 Assertions.assertNotNull(sIBL.createResourceTransaction(resource, user, false));
2110 void testUpdateExistingResourceByImport() {
2111 Resource newResource = createNewResource();
2112 Resource oldResource = createOldResource();
2113 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
2114 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
2115 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
2116 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
2117 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
2118 .thenReturn(Either.left(newResource));
2119 Assertions.assertNotNull(sIBL.updateExistingResourceByImport(newResource, oldResource, user, true, false, true));
2123 void testCreateNewResourceToOldResource() {
2124 Resource newResource = createNewResource();
2125 Resource oldResource = createOldResource();
2127 sIBL.createNewResourceToOldResource(newResource, oldResource, user);
2128 assertEquals(newResource.getSystemName(), oldResource.getSystemName());
2132 void testCreateResourcesFromYamlNodeTypesList() {
2133 String yamlName = "group.yml";
2134 Service service = createServiceObject(true);
2135 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2136 boolean needLock = true;
2137 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2138 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2139 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2140 CsarInfo csarInfo = getCsarInfo();
2142 Assertions.assertThrows(ComponentException.class, () -> sIBL
2143 .createResourcesFromYamlNodeTypesList(yamlName, service, mappedToscaTemplate, needLock,
2144 nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo));
2148 void testCreateNodeTypes() {
2149 String yamlName = "group.yml";
2150 Service service = createServiceObject(true);
2151 boolean needLock = true;
2152 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2153 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2154 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2155 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2156 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2157 artifactDefinition.setArtifactName("artifactName");
2158 artifactDefinitions.add(artifactDefinition);
2159 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2160 artifactDefinitions);
2161 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2162 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2163 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2164 CsarInfo csarInfo = getCsarInfo();
2165 Map<String, Object> mapToConvert = new HashMap<>();
2166 Map<String, Object> nodeTypes = new HashMap<>();
2167 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2168 nodeTypesInfo.put("nodeTyp", nodeTypeInfo);
2169 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2172 Assertions.assertThrows(ComponentException.class, () -> sIBL.createNodeTypes(yamlName,
2173 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2174 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes));
2178 void testCreateNodeTypesElse() {
2179 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2180 String yamlName = "group.yml";
2181 Service service = createServiceObject(true);
2182 boolean needLock = true;
2183 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2184 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2185 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2186 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2187 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2188 artifactDefinition.setArtifactName("artifactName");
2189 artifactDefinitions.add(artifactDefinition);
2190 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2191 artifactDefinitions);
2192 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2193 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2194 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2195 Map<String, Object> map = new HashMap<>();
2196 map.put("tosca_definitions_version", "123");
2197 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
2198 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
2200 CsarInfo csarInfo = getCsarInfo();
2201 Map<String, Object> mapToConvert = new HashMap<>();
2202 Map<String, Object> nodeTypes = new HashMap<>();
2203 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2204 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2206 when(serviceImportParseLogic.createNodeTypeResourceFromYaml(anyString(), any(Map.Entry.class), any(User.class),
2207 anyMap(), any(Service.class), anyBoolean(), anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
2208 anyBoolean())).thenReturn(getResourceCreated());
2209 Assertions.assertNotNull(service);
2211 sIBL.createNodeTypes(yamlName,
2212 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2213 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
2216 protected ImmutablePair<Resource, ActionStatus> getResourceCreated() {
2217 Resource resource = createOldResource();
2218 ImmutablePair<Resource, ActionStatus> resourceCreated = new ImmutablePair<>(resource, ActionStatus.OK);
2220 return resourceCreated;
2223 protected Resource createNewResource() {
2224 Resource newResource = createParseResourceObject(false);
2225 newResource.setVersion("1.0");
2226 newResource.setInvariantUUID("");
2227 newResource.setLifecycleState(null);
2228 newResource.setUUID("");
2229 newResource.setNormalizedName("");
2230 newResource.setSystemName("");
2231 newResource.setCsarUUID("");
2232 newResource.setImportedToscaChecksum("");
2233 newResource.setDerivedFromGenericType("");
2234 newResource.setDerivedFromGenericVersion("");
2235 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2236 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2237 artifactDefinition.setArtifactName("artifactDefinition");
2238 toscaArtifacts.put("toscaArtifactsMap", artifactDefinition);
2239 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2240 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2241 interfaceDefinition.setOwnerId("OwnerId");
2242 interfaces.put("interfacesMap", interfaceDefinition);
2243 newResource.setInterfaces(interfaces);
2244 newResource.setToscaArtifacts(toscaArtifacts);
2245 newResource.setProperties(getProperties());
2249 protected Resource createOldResource() {
2250 Resource newResource = createParseResourceObject(false);
2251 newResource.setVersion("1.0");
2252 newResource.setUniqueId("ResourceUniqueId");
2253 newResource.setInvariantUUID("552e8f6c-340c-4fb4-8a82-fe7732fd8010");
2254 newResource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
2255 newResource.setUUID("13065b80-ca96-4331-b643-d28aeaf961cb");
2256 newResource.setNormalizedName("NormalizedName");
2257 newResource.setSystemName("default");
2258 newResource.setCsarUUID("CsarUUID");
2259 newResource.setImportedToscaChecksum("ImportedToscaChecksum");
2260 newResource.setDerivedFromGenericType("DerivedFromGenericType");
2261 newResource.setDerivedFromGenericVersion("0.1");
2262 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2263 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2264 artifactDefinition.setArtifactName("tosca_simple_yaml_1_1");
2265 toscaArtifacts.put("tosca_definitions_version", artifactDefinition);
2266 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2267 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2268 interfaceDefinition.setDescription("Invoked upon receipt of an Instantiate VNF request");
2269 interfaces.put("tosca_simple_yaml_1_1", interfaceDefinition);
2270 newResource.setInterfaces(interfaces);
2271 newResource.setToscaArtifacts(toscaArtifacts);
2272 List<PropertyDefinition> properties = new ArrayList<>();
2273 PropertyDefinition propertyDefinition = new PropertyDefinition();
2274 propertyDefinition.setName("tosca_simple_yaml_1_1");
2275 properties.add(propertyDefinition);
2276 newResource.setProperties(properties);
2280 protected Map<String, InputDefinition> getCurrPropertiesMap() {
2281 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
2282 InputDefinition inputDefinition = new InputDefinition();
2283 inputDefinition.setName("inputDefinitionName");
2284 inputDefinition.setUniqueId("uniqueId");
2285 inputDefinition.setType("inputDefinitionType");
2286 currPropertiesMap.put("propertyInfoName", inputDefinition);
2287 return currPropertiesMap;
2290 protected List<UploadPropInfo> getPropertyList() {
2291 List<UploadPropInfo> propertyList = new ArrayList<>();
2292 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2293 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2294 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2295 getInputValueDataDefinition.setInputName("inputDefinitionName");
2296 get_input.add(getInputValueDataDefinition);
2297 UploadPropInfo propertyInfo = new UploadPropInfo();
2298 propertyInfo.setValue("value");
2299 propertyInfo.setGet_input(get_input);
2300 propertyInfo.setName("propertyInfoName");
2301 propertyList.add(propertyInfo);
2302 return propertyList;
2305 private Map<String, NodeTypeInfo> getNodeTypesInfo() {
2306 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2307 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2308 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2309 nodeTypeInfo.setNested(true);
2310 nodeTypeInfo.setTemplateFileName("templateFileName");
2311 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2312 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2313 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2314 return nodeTypesInfo;
2317 private Map<String, Object> getNodeTypes() {
2318 Map<String, Object> nodeTypesInfo = new HashMap<>();
2319 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2320 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2321 nodeTypeInfo.setNested(true);
2322 nodeTypeInfo.setTemplateFileName("templateFileName");
2323 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2324 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2325 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2326 return nodeTypesInfo;
2329 private Map<String, UploadComponentInstanceInfo> getUploadResInstancesMap() {
2330 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
2331 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2332 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
2333 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2334 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
2335 requirementsNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2336 uploadResInstancesMap.put("zxjTestImportServiceAb", uploadComponentInstanceInfo);
2337 return uploadResInstancesMap;
2340 protected Map<String, List<UploadPropInfo>> getUploadPropInfoProperties() {
2341 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
2342 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
2343 UploadPropInfo uploadPropInfo = new UploadPropInfo();
2344 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2345 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2346 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2347 get_input.add(getInputValueDataDefinition);
2348 uploadPropInfo.setName("propertiesName");
2349 uploadPropInfo.setValue("value");
2350 uploadPropInfo.setGet_input(get_input);
2351 uploadPropInfoList.add(uploadPropInfo);
2352 properties.put("uploadComponentInstanceInfo", uploadPropInfoList);
2356 protected List<PropertyDefinition> getProperties() {
2357 List<PropertyDefinition> properties = new ArrayList<>();
2358 PropertyDefinition propertyDefinition = new PropertyDefinition();
2359 propertyDefinition.setName("propertiesName");
2360 properties.add(propertyDefinition);
2364 protected Map<String, List<UploadReqInfo>> gerRequirements() {
2365 Map<String, List<UploadReqInfo>> uploadReqInfoMap = new HashMap<>();
2366 String requirementName = "tosca.capabilities.Node";
2367 List<UploadReqInfo> uploadReqInfoList = new ArrayList<>();
2368 UploadReqInfo uploadReqInfo = new UploadReqInfo();
2369 uploadReqInfo.setCapabilityName("tosca.capabilities.Node");
2370 uploadReqInfoMap.put(requirementName, uploadReqInfoList);
2371 return uploadReqInfoMap;
2374 protected ComponentParametersView createComponentParametersView() {
2375 ComponentParametersView parametersView = new ComponentParametersView();
2376 parametersView.disableAll();
2377 parametersView.setIgnoreComponentInstances(false);
2378 parametersView.setIgnoreComponentInstancesProperties(false);
2379 parametersView.setIgnoreCapabilities(false);
2380 parametersView.setIgnoreRequirements(false);
2381 parametersView.setIgnoreGroups(false);
2382 return parametersView;
2385 protected Map<String, byte[]> crateCsarFromPayload() {
2386 String payloadName = "valid_vf.csar";
2387 String rootPath = System.getProperty("user.dir");
2391 Map<String, byte[]> returnValue = null;
2393 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2394 data = Files.readAllBytes(path);
2395 payloadData = Base64.encodeBase64String(data);
2396 UploadResourceInfo resourceInfo = new UploadResourceInfo();
2397 resourceInfo.setPayloadName(payloadName);
2398 resourceInfo.setPayloadData(payloadData);
2399 Method privateMethod = null;
2400 privateMethod = AbstractValidationsServlet.class.getDeclaredMethod("getCsarFromPayload", UploadResourceInfo.class);
2401 privateMethod.setAccessible(true);
2402 returnValue = (Map<String, byte[]>) privateMethod.invoke(servlet, resourceInfo);
2403 } catch (IOException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException |
2404 InvocationTargetException e) {
2405 e.printStackTrace();
2410 protected List<ComponentInstance> creatComponentInstances() {
2411 List<ComponentInstance> componentInstances = new ArrayList<>();
2412 ComponentInstance componentInstance = new ComponentInstance();
2413 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
2414 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
2415 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
2416 capabilityDefinition.setName("mme_ipu_vdu.feature");
2417 capabilityDefinitionList.add(capabilityDefinition);
2418 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
2420 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
2421 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
2422 RequirementDefinition requirementDefinition = new RequirementDefinition();
2423 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
2424 requirementDefinitionList.add(requirementDefinition);
2425 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
2426 componentInstance.setRequirements(requirements);
2427 componentInstance.setCapabilities(capabilities);
2428 componentInstance.setUniqueId("uniqueId");
2429 componentInstance.setComponentUid("componentUid");
2430 componentInstance.setName("zxjTestImportServiceAb");
2431 componentInstance.setNormalizedName("zxjTestImportServiceAb");
2432 componentInstance.setProperties(getProperties());
2433 componentInstances.add(componentInstance);
2434 return componentInstances;
2437 private CreateServiceFromYamlParameter getCsfyp() {
2438 CreateServiceFromYamlParameter csfyp = new CreateServiceFromYamlParameter();
2439 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
2440 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2442 csfyp.setNodeName("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test");
2443 csfyp.setTopologyTemplateYaml(getMainTemplateContent("service_import_template.yml"));
2444 csfyp.setCreatedArtifacts(createdArtifacts);
2445 csfyp.setInTransaction(true);
2446 csfyp.setShouldLock(true);
2447 csfyp.setCsarInfo(getCsarInfo());
2448 csfyp.setParsedToscaYamlInfo(getParsedToscaYamlInfo());
2449 csfyp.setNodeTypesInfo(nodeTypesInfo);
2450 csfyp.setYamlName("group.yml");
2454 private ParsedToscaYamlInfo getParsedToscaYamlInfo() {
2455 ParsedToscaYamlInfo parsedToscaYamlInfo = new ParsedToscaYamlInfo();
2456 Map<String, InputDefinition> inputs = new HashMap<>();
2457 Map<String, UploadComponentInstanceInfo> instances = new HashMap<>();
2458 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2459 instances.put("instances", uploadComponentInstanceInfo);
2460 Map<String, GroupDefinition> groups = new HashMap<>();
2461 Map<String, PolicyDefinition> policies = new HashMap<>();
2462 parsedToscaYamlInfo.setGroups(groups);
2463 parsedToscaYamlInfo.setInputs(inputs);
2464 parsedToscaYamlInfo.setInstances(instances);
2465 parsedToscaYamlInfo.setPolicies(policies);
2466 return parsedToscaYamlInfo;
2469 String getMainTemplateContent(String fileName) {
2470 String mainTemplateContent = null;
2472 mainTemplateContent = loadFileNameToJsonString(fileName);
2473 } catch (IOException e) {
2474 e.printStackTrace();
2476 return mainTemplateContent;
2479 protected ServiceCsarInfo getCsarInfo() {
2480 String csarUuid = "0010";
2481 User user = new User("jh0003");
2484 File csarFile = new File(
2485 ServiceImportBusinessLogicTest.class.getClassLoader().getResource("csars/service-Ser09080002-csar.csar").toURI());
2486 Map<String, byte[]> csar = ZipUtils.readZip(csarFile, false);
2488 String vfReousrceName = "resouceName";
2489 String mainTemplateName = "Definitions/service_import_template.yml";
2491 Optional<String> keyOp = csar.keySet().stream().filter(k -> k.endsWith("service-Ser09080002-template.yml")).findAny();
2492 byte[] mainTemplateService = keyOp.map(csar::get).orElse(null);
2493 assertNotNull(mainTemplateService);
2494 final String mainTemplateContent = new String(mainTemplateService);
2496 return new ServiceCsarInfo(user, csarUuid, csar, vfReousrceName, mainTemplateName, mainTemplateContent, false);
2497 } catch (URISyntaxException | ZipException e) {
2503 private ImmutablePair<String, byte[]> getNodeType() {
2505 File resource = new File(
2506 ServiceImportBusinessLogicTest.class.getClassLoader().getResource("node-types/resource-Extcp-template.yml").toURI());
2507 byte[] extcpResource = Files.readAllBytes(resource.toPath());
2509 return new ImmutablePair<>("org.openecomp.resource.cp.extCP", extcpResource);
2510 } catch (URISyntaxException | IOException e) {
2516 protected CsarUtils.NonMetaArtifactInfo getNonMetaArtifactInfo() {
2517 String artifactName = "artifactName", path = "/src/test/resources/valid_vf.csar", artifactType = "AAI_SERVICE_MODEL";
2518 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
2519 String rootPath = System.getProperty("user.dir");
2521 byte[] data = new byte[0];
2522 path2 = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2524 data = Files.readAllBytes(path2);
2525 } catch (IOException e) {
2526 e.printStackTrace();
2528 String artifactUniqueId = "artifactUniqueId";
2529 boolean isFromCsar = true;
2530 CsarUtils.NonMetaArtifactInfo nonMetaArtifactInfo = new CsarUtils.NonMetaArtifactInfo(artifactName,
2531 path, artifactType, artifactGroupType, data, artifactUniqueId, isFromCsar);
2532 return nonMetaArtifactInfo;
2536 protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
2537 ResponseFormat actualResponse = e.getResponseFormat() != null ?
2538 e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
2539 assertParseResponse(actualResponse, expectedStatus, variables);
2542 private void assertParseResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
2543 ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
2544 assertThat(expectedResponse.getStatus()).isEqualTo(actualResponse.getStatus());
2545 assertThat(expectedResponse.getFormattedMessage()).isEqualTo(actualResponse.getFormattedMessage());