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.Component;
86 import org.openecomp.sdc.be.model.ComponentInstance;
87 import org.openecomp.sdc.be.model.ComponentInstanceInput;
88 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
89 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
90 import org.openecomp.sdc.be.model.ComponentParametersView;
91 import org.openecomp.sdc.be.model.DataTypeDefinition;
92 import org.openecomp.sdc.be.model.GroupDefinition;
93 import org.openecomp.sdc.be.model.IPropertyInputCommon;
94 import org.openecomp.sdc.be.model.InputDefinition;
95 import org.openecomp.sdc.be.model.InterfaceDefinition;
96 import org.openecomp.sdc.be.model.LifecycleStateEnum;
97 import org.openecomp.sdc.be.model.NodeTypeInfo;
98 import org.openecomp.sdc.be.model.Operation;
99 import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
100 import org.openecomp.sdc.be.model.PolicyDefinition;
101 import org.openecomp.sdc.be.model.PropertyDefinition;
102 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
103 import org.openecomp.sdc.be.model.RequirementDefinition;
104 import org.openecomp.sdc.be.model.Resource;
105 import org.openecomp.sdc.be.model.Service;
106 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
107 import org.openecomp.sdc.be.model.UploadNodeFilterInfo;
108 import org.openecomp.sdc.be.model.UploadPropInfo;
109 import org.openecomp.sdc.be.model.UploadReqInfo;
110 import org.openecomp.sdc.be.model.UploadResourceInfo;
111 import org.openecomp.sdc.be.model.User;
112 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
113 import org.openecomp.sdc.be.model.operations.api.ICapabilityTypeOperation;
114 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
115 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
116 import org.openecomp.sdc.be.servlets.AbstractValidationsServlet;
117 import org.openecomp.sdc.be.tosca.CsarUtils;
118 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
119 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
120 import org.openecomp.sdc.common.api.Constants;
121 import org.openecomp.sdc.common.zip.ZipUtils;
122 import org.openecomp.sdc.common.zip.exception.ZipException;
123 import org.openecomp.sdc.exception.ResponseFormat;
124 import org.yaml.snakeyaml.Yaml;
126 class ServiceImportBusinessLogicTest extends ServiceImportBussinessLogicBaseTestSetup {
128 private static final String DEFAULT_ICON = "defaulticon";
130 private final ArtifactDefinition artifactDefinition = mock(ArtifactDefinition.class);
131 private final ResourceImportManager resourceImportManager = mock(ResourceImportManager.class);
132 private final ServletUtils servletUtils = mock(ServletUtils.class);
133 private final AbstractValidationsServlet servlet = new ArtifactExternalServlet(userBusinessLogic,
134 componentInstanceBusinessLogic, componentsUtils, servletUtils, resourceImportManager, artifactsBusinessLogic);
135 private final ApplicationDataTypeCache applicationDataTypeCache = mock(ApplicationDataTypeCache.class);
136 private final DataTypeBusinessLogic dataTypeBusinessLogic = mock(DataTypeBusinessLogic.class);
139 private ServiceImportBusinessLogic sIBL;
141 public static String loadFileNameToJsonString(String fileName) throws IOException {
142 String sourceDir = "src/test/resources/normativeTypes";
143 return loadFileNameToJsonString(sourceDir, fileName);
146 private static String loadFileNameToJsonString(String sourceDir, String fileName) throws IOException {
147 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir, fileName);
148 byte[] fileContent = Files.readAllBytes(filePath);
149 return new String(fileContent);
154 MockitoAnnotations.openMocks(this);
155 when(artifactDefinition.getMandatory()).thenReturn(true);
156 when(artifactDefinition.getArtifactName()).thenReturn("creatorFullName");
157 when(artifactDefinition.getArtifactType()).thenReturn("TOSCA_CSAR");
161 void testCreateService_OK() {
162 Service oldService = createServiceObject(true);
163 oldService.setComponentInstances(creatComponentInstances());
164 oldService.setComponentInstancesProperties(
165 Collections.singletonMap(COMPONENT_ID, Collections.singletonList(new ComponentInstanceProperty())));
166 String payloadName = "valid_vf";
167 Map<String, byte[]> payload = crateCsarFromPayload();
168 Service newService = createServiceObject(true);
169 newService.setComponentInstances(creatComponentInstances());
170 ComponentInstanceProperty componentInstanceProperty = new ComponentInstanceProperty();
171 componentInstanceProperty.setName("propertiesName");
172 final JSONObject jsonObject = new JSONObject();
173 jsonObject.put(ToscaGetFunctionType.GET_INPUT.getFunctionName(), "zxjTestImportServiceAb_propertiesName");
174 componentInstanceProperty.setValue(jsonObject.toJSONString());
176 newService.setComponentInstancesProperties(
177 Collections.singletonMap(COMPONENT_ID + "." + "zxjTestImportServiceAb", Collections.singletonList(componentInstanceProperty)));
178 newService.setProperties(getProperties());
180 when(serviceBusinessLogic.validateServiceBeforeCreate(eq(newService), any(User.class), any(AuditingActionEnum.class)))
181 .thenReturn(Either.left(newService));
182 when(toscaOperationFacade.validateCsarUuidUniqueness(anyString())).thenReturn(StorageOperationStatus.OK);
183 ServiceCsarInfo csarInfo = getCsarInfo();
184 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class), any(Map.class), anyString())).thenReturn(csarInfo);
185 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class), any(Service.class)))
186 .thenReturn(Either.left(new HashMap<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>>()));
187 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(), any(CsarInfo.class), any(), any(Service.class)))
188 .thenReturn(getParsedToscaYamlInfo());
189 when(serviceBusinessLogic.lockComponentByName(newService.getSystemName(), oldService, CREATE_RESOURCE)).thenReturn(Either.left(true));
190 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(createOldResource()));
191 when(serviceImportParseLogic.createServiceTransaction(oldService, csarInfo.getModifier(), false)).thenReturn(newService);
192 when(serviceImportParseLogic.createInputsOnService(eq(oldService), anyMap())).thenReturn(newService);
193 Assertions.assertDoesNotThrow(() -> {
194 when(serviceImportParseLogic.createSubstitutionFilterOnService(eq(oldService), any())).thenReturn(newService);
196 when(serviceImportParseLogic.getNodeTypesFromTemplate(anyMap())).thenReturn(getNodeTypes());
197 when(serviceImportParseLogic.createNodeTypeResourceFromYaml(anyString(), any(Map.Entry.class), any(User.class), anyMap(), any(Service.class),
198 anyBoolean(), any(), anyList(), anyBoolean(), any(CsarInfo.class), anyBoolean())).thenReturn(
199 new ImmutablePair<>(new Resource(), ActionStatus.OK));
200 when(serviceImportParseLogic.getComponentWithInstancesFilter()).thenReturn(new ComponentParametersView());
201 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(newService));
202 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(new ComponentParametersView());
203 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(newService));
204 when(serviceImportParseLogic.findAvailableRequirement(anyString(), anyString(), any(UploadComponentInstanceInfo.class),
205 any(ComponentInstance.class), anyString())).thenReturn(Either.left(new RequirementDefinition()));
206 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class), any(ComponentInstance.class),
207 any(UploadReqInfo.class))).thenReturn(new CapabilityDefinition());
208 when(componentsUtils.getResponseFormat(eq(ActionStatus.OK), anyString())).thenReturn(new ResponseFormat(200));
209 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(newService));
210 doNothing().when(compositionBusinessLogic).setPositionsForComponentInstances(any(Service.class), anyString());
211 when(groupBusinessLogic.validateUpdateVfGroupNames(anyMap(), anyString())).thenReturn(Either.left(new HashMap<>()));
212 when(csarArtifactsAndGroupsBusinessLogic.deleteVFModules(any(Service.class), any(CsarInfo.class), anyBoolean(), anyBoolean()))
213 .thenReturn(Either.left(newService));
214 when(serviceImportParseLogic.getServiceWithGroups(anyString())).thenReturn(newService);
215 when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
216 when(graphLockOperation.unlockComponentByName(anyString(), anyString(), any(NodeTypeEnum.class))).thenReturn(StorageOperationStatus.OK);
217 when(serviceImportParseLogic.createOutputsOnService(any(Service.class), any(), anyString())).thenReturn(newService);
218 when(toscaOperationFacade.updateInputsToComponent(anyList(), eq(newService.getUniqueId()))).thenReturn(Either.left(new ArrayList<>()));
220 when(applicationDataTypeCache.get(any(), contains("tosca.datatypes.test_"))).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND));
221 when(applicationDataTypeCache.get(any(), matches("^((?!tosca.datatypes.test_).)*$"))).thenReturn(Either.left(new DataTypeDefinition()));
223 when(toscaOperationFacade.getLatestByToscaResourceName(contains("org.openecomp.resource"), isNull())).thenReturn(Either.left(null));
224 when(toscaOperationFacade.getLatestByToscaResourceName(contains("tosca.nodes."), isNull())).thenReturn(Either.left(null));
225 when(toscaOperationFacade.updatePropertyOfComponent(eq(oldService), any(PropertyDefinition.class))).thenReturn(Either.left(null));
226 when(toscaOperationFacade.updateComponentInstancePropsToComponent(anyMap(), anyString())).thenReturn(Either.left(null));
228 Service result = sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName);
229 assertNotNull(result);
230 assertNotNull(result.getComponentInstances());
231 assertEquals(1, result.getComponentInstances().size());
232 assertNotNull(result.getComponentInstances().get(0));
233 assertNotNull(result.getComponentInstances().get(0).getCapabilities());
234 assertEquals(1, result.getComponentInstances().get(0).getCapabilities().size());
235 assertNotNull(result.getComponentInstances().get(0).getRequirements());
236 assertEquals(1, result.getComponentInstances().get(0).getRequirements().size());
237 assertNotNull(result.getCategories());
238 assertEquals(1, result.getCategories().size());
240 ArgumentCaptor<String> yaml = ArgumentCaptor.forClass(String.class);
241 verify(dataTypeBusinessLogic).createDataTypeFromYaml(yaml.capture(), isNull(), anyBoolean());
242 Map<String, Object> yamlMap = new Yaml().load(yaml.getValue());
243 assertEquals(2, yamlMap.size());
244 assertNotNull(yamlMap.get("tosca.datatypes.test_a"));
245 assertNotNull(yamlMap.get("tosca.datatypes.test_b"));
249 void testCreateService_Fail_NotFoundNodeTypesArtifacts() {
250 Service oldService = createServiceObject(true);
251 String payloadName = "valid_vf";
252 Map<String, byte[]> payload = crateCsarFromPayload();
253 Service newService = createServiceObject(true);
255 when(serviceBusinessLogic.validateServiceBeforeCreate(any(Service.class), any(User.class), any(AuditingActionEnum.class)))
256 .thenReturn(Either.left(newService));
257 when(toscaOperationFacade.validateCsarUuidUniqueness(anyString())).thenReturn(StorageOperationStatus.OK);
258 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class), any(Map.class), anyString())).thenReturn(getCsarInfo());
259 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class), any(Service.class)))
260 .thenReturn(Either.right(ActionStatus.GENERAL_ERROR));
261 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(), any(CsarInfo.class), anyString(),
262 any(Service.class))).thenReturn(getParsedToscaYamlInfo());
264 Assertions.assertThrows(ComponentException.class,
265 () -> sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName));
269 void testCreateServiceFromCsar() {
270 Service oldService = createServiceObject(true);
271 String csarUUID = "valid_vf";
272 Map<String, byte[]> payload = crateCsarFromPayload();
273 ServiceCsarInfo csarInfo = getCsarInfo();
274 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> map =
277 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class),
278 any(Map.class), anyString())).thenReturn(csarInfo);
279 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class),
280 any(Service.class))).thenReturn(Either.left(map));
281 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromCsar(oldService,
282 user, payload, csarUUID));
286 void testCreateServiceFromYaml() {
287 Service oldService = createServiceObject(true);
288 Resource resource = createOldResource();
289 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
290 String yamlName = "group.yml";
291 ServiceCsarInfo csarInfo = getCsarInfo();
292 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
293 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
295 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
296 Map<String, Object> map = new HashMap<>();
297 map.put("tosca_definitions_version", "123");
298 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
299 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
300 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
301 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(Map.class),
302 eq(csarInfo), anyString(), any(Component.class))).thenReturn(parsedToscaYamlInfo);
303 when(serviceBusinessLogic.lockComponentByName(anyString(), any(Service.class), anyString()))
304 .thenReturn(Either.left(true));
306 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromYaml(oldService,
307 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
308 nodeTypesArtifactsToCreate, false, true, nodeName, user.getUserId()));
312 void testCreateServiceAndRIsFromYaml() {
313 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
314 Service oldService = createServiceObject(true);
315 Resource resource = createOldResource();
316 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
317 CreateServiceFromYamlParameter csfyp = getCsfyp();
318 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
319 Map<String, Object> map = new HashMap<>();
320 map.put("tosca_definitions_version", "123");
321 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
322 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
323 csfyp.setNodeTypesInfo(nodeTypesInfo);
324 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
325 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
326 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
327 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
331 void testCreateServiceAndRIsFromYamlShoudLook() {
332 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
333 Service oldService = createServiceObject(true);
334 Resource resource = createOldResource();
335 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
336 CreateServiceFromYamlParameter csfyp = getCsfyp();
337 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
338 Map<String, Object> map = new HashMap<>();
339 map.put("tosca_definitions_version", "123");
340 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
341 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
342 csfyp.setNodeTypesInfo(nodeTypesInfo);
343 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
344 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
345 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
346 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
350 void testCreateOrUpdateArtifacts() {
351 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
352 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
353 String yamlFileName = "group.yml";
354 CsarInfo csarInfo = getCsarInfo();
355 Resource preparedResource = createParseResourceObject(false);
356 preparedResource.setResourceType(ResourceTypeEnum.VF);
357 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
358 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
359 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
360 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
361 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
362 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
363 artifactDefinition.setArtifactName("artifactName");
364 artifactDefinitions.add(artifactDefinition);
365 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
366 artifactDefinitions);
367 nodeTypesArtifactsToHandle.put(nodeName, enumListEnumMap);
368 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
369 nodeTypeInfoToUpdateArtifacts.setNodeName(nodeName);
370 nodeTypeInfoToUpdateArtifacts.setNodeTypesArtifactsToHandle(nodeTypesArtifactsToHandle);
372 Assertions.assertNotNull(
373 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
374 preparedResource, nodeTypeInfoToUpdateArtifacts, true, true)
379 void testHandleVfCsarArtifacts() {
380 Resource resource = createParseResourceObject(true);
381 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
382 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
383 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
384 artifactDefinition.setUniqueId("uniqueId");
385 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
386 resource.setDeploymentArtifacts(deploymentArtifacts);
387 CsarInfo csarInfo = getCsarInfo();
388 Map<String, byte[]> csar = new HashMap<>();
389 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
390 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
391 csar.put(csarKey, artifactsMetaBytes);
392 csarInfo.setCsar(csar);
393 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
394 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
395 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
396 when(csarArtifactsAndGroupsBusinessLogic
397 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
398 anyList())).thenReturn(Either.left(resource));
399 Assertions.assertNotNull(
400 sIBL.handleVfCsarArtifacts(resource,
401 csarInfo, createdArtifacts, artifactOperation, true, true));
405 void testHandleVfCsarArtifactsGetToscaElement() {
406 Resource resource = createParseResourceObject(true);
407 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
408 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
409 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
410 artifactDefinition.setUniqueId("uniqueId");
411 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
412 resource.setDeploymentArtifacts(deploymentArtifacts);
413 CsarInfo csarInfo = getCsarInfo();
414 Map<String, byte[]> csar = new HashMap<>();
415 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
416 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
417 csar.put(csarKey, artifactsMetaBytes);
418 csarInfo.setCsar(csar);
419 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
420 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
421 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
422 when(csarArtifactsAndGroupsBusinessLogic
423 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
424 anyList())).thenReturn(Either.left(resource));
425 Assertions.assertNotNull(
426 sIBL.handleVfCsarArtifacts(resource,
427 csarInfo, createdArtifacts, artifactOperation, true, true));
431 void testCreateOrUpdateSingleNonMetaArtifactToComstants() {
432 Resource resource = createParseResourceObject(false);
433 CsarInfo csarInfo = getCsarInfo();
434 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
435 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
436 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
437 artifactDefinition.setArtifactName("artifactDefinition");
438 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
439 resource.setDeploymentArtifacts(deploymentArtifacts);
440 Assertions.assertNotNull(resource);
441 Assertions.assertNotNull(csarInfo);
442 sIBL.createOrUpdateSingleNonMetaArtifactToComstants(resource, csarInfo, artifactOperation, true, true);
447 void testCreateOrUpdateNonMetaArtifacts() {
448 CsarInfo csarInfo = getCsarInfo();
449 Resource resource = createParseResourceObject(false);
450 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
451 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
453 Either<Resource, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo, resource,
454 createdArtifacts, true, true, artifactOperation);
455 assertEquals(result.left().value(), resource);
459 void testFindVfCsarArtifactsToHandle() {
460 Resource resource = createParseResourceObject(false);
461 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
462 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
463 artifactDefinition.setArtifactName("artifactDefinition");
464 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
465 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
466 artifacts.put("artifacts", artifactDefinition);
467 List<GroupDefinition> groups = new ArrayList<>();
468 GroupDefinition groupDefinition = new GroupDefinition();
469 groupDefinition.setUniqueId("groupDefinitionUniqueId");
470 groupDefinition.setName("groupDefinition");
471 groups.add(groupDefinition);
472 resource.setDeploymentArtifacts(deploymentArtifacts);
473 resource.setArtifacts(artifacts);
474 resource.setGroups(groups);
475 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
477 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
478 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(resource, artifactPathAndNameList, user);
479 assertNotNull(result.left().value());
483 void testOrganizeVfCsarArtifactsByArtifactOperation() {
484 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
485 artifactPathAndNameList.add(getNonMetaArtifactInfo());
486 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
487 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
488 artifactDefinition.setArtifactName("artifactName");
489 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
490 artifactDefinition.setArtifactChecksum("artifactChecksum");
491 existingArtifactsToHandle.add(artifactDefinition);
492 Resource resource = createParseResourceObject(false);
494 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
495 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
496 existingArtifactsToHandle,
498 assertNotNull(enumMapResponseFormatEither.left().value());
502 void testOrganizeVfCsarArtifactsByArtifactOperationElse() {
503 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
504 artifactPathAndNameList.add(getNonMetaArtifactInfo());
505 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
506 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
507 artifactDefinition.setArtifactName("artifactName");
508 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
509 artifactDefinition.setArtifactChecksum("artifactChecksum");
510 existingArtifactsToHandle.add(artifactDefinition);
511 Resource resource = createParseResourceObject(false);
512 Assertions.assertNotNull(
513 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, resource,
518 void testProcessCsarArtifacts() {
519 CsarInfo csarInfo = getCsarInfo();
520 Resource resource = createParseResourceObject(false);
521 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
522 Either<Resource, ResponseFormat> resStatus = Either.left(resource);
523 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
524 artifactPathAndNameList.add(getNonMetaArtifactInfo());
525 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
526 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
527 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, artifactPathAndNameList);
528 Assertions.assertNotNull(
529 sIBL.processCsarArtifacts(csarInfo,
530 resource, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
534 void testCreateOrUpdateSingleNonMetaArtifact() {
535 Resource resource = createParseResourceObject(false);
536 CsarInfo csarInfo = getCsarInfo();
537 Map<String, byte[]> csar = csarInfo.getCsar();
538 String rootPath = System.getProperty("user.dir");
540 byte[] data = new byte[0];
541 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
543 data = Files.readAllBytes(path);
544 } catch (IOException e) {
547 csar.put("valid_vf.csar", data);
548 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
549 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
550 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
551 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
552 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
553 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
554 artifactDefinition.setArtifactName("artifactName");
555 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
556 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Resource.class), any(User.class),
557 any(Map.class), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
558 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
559 .thenReturn(Either.left(artifactDefinition));
560 Assertions.assertNotNull(
561 sIBL.createOrUpdateSingleNonMetaArtifact(resource, csarInfo, artifactPath,
562 artifactFileName, artifactType, artifactGroupType, artifactLabel,
563 artifactDisplayName, artifactDescription, artifactId, artifactOperation,
564 createdArtifacts, true, true, true));
568 void testCreateOrUpdateServiceArtifacts() throws IOException {
569 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
570 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
571 String yamlFileName = "group.yml";
572 CsarInfo csarInfo = getCsarInfo();
573 Map<String, byte[]> csar = new HashMap<>();
574 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
575 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
576 csar.put(csarKey, artifactsMetaBytes);
577 csarInfo.setCsar(csar);
578 Service preparedService = createServiceObject(true);
579 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
580 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
581 artifactDefinition.setArtifactName("artifactDefinition");
582 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
583 preparedService.setDeploymentArtifacts(deploymentArtifacts);
584 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
585 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
586 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
588 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(createServiceObject(true)));
589 when(csarArtifactsAndGroupsBusinessLogic.updateResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
590 anyString(), anyString(), anyList(), anyBoolean(), anyBoolean())).thenReturn(Either.left(preparedService));
591 Assertions.assertNotNull(
592 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
593 preparedService, nodeTypeInfoToUpdateArtifacts, true, true));
597 void testHandleVfCsarServiceArtifacts() {
598 Service service = createServiceObject(true);
599 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
600 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
601 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
602 artifactDefinition.setUniqueId("uniqueId");
603 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
604 service.setDeploymentArtifacts(deploymentArtifacts);
605 CsarInfo csarInfo = getCsarInfo();
606 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
607 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
608 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
609 when(csarArtifactsAndGroupsBusinessLogic.deleteVFModules(any(Service.class), any(CsarInfo.class), anyBoolean(), anyBoolean())).thenReturn(
610 Either.left(service));
611 Assertions.assertNotNull(
612 sIBL.handleVfCsarArtifacts(service, csarInfo, createdArtifacts, artifactOperation, true, true));
616 void testHandleVfCsarServiceArtifactsGetToscaElement() throws IOException {
617 Service service = createServiceObject(true);
618 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
619 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
620 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
621 artifactDefinition.setUniqueId("uniqueId");
622 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
623 service.setDeploymentArtifacts(deploymentArtifacts);
624 CsarInfo csarInfo = getCsarInfo();
625 Map<String, byte[]> csar = new HashMap<>();
626 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
627 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
628 csar.put(csarKey, artifactsMetaBytes);
629 csarInfo.setCsar(csar);
630 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
631 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
632 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
633 when(csarArtifactsAndGroupsBusinessLogic.createResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
634 anyString(), anyString(), anyList())).thenReturn(Either.left(service));
635 Assertions.assertNotNull(
636 sIBL.handleVfCsarArtifacts(service,
637 csarInfo, createdArtifacts, artifactOperation, true, true));
641 void testCreateOrUpdateNonMetaServiceArtifacts() {
642 CsarInfo csarInfo = getCsarInfo();
643 Service service = createServiceObject(true);
644 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
645 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
647 Either<Service, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo,
648 service, createdArtifacts, true, true, artifactOperation);
649 assertEquals(result.left().value(), service);
653 void testFindServiceCsarArtifactsToHandle() {
654 Service service = createServiceObject(true);
655 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
656 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
657 artifactDefinition.setArtifactName("artifactDefinition");
658 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
659 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
660 artifacts.put("artifacts", artifactDefinition);
661 List<GroupDefinition> groups = new ArrayList<>();
662 GroupDefinition groupDefinition = new GroupDefinition();
663 groupDefinition.setUniqueId("groupDefinitionUniqueId");
664 groupDefinition.setName("groupDefinition");
665 groups.add(groupDefinition);
666 service.setDeploymentArtifacts(deploymentArtifacts);
667 service.setArtifacts(artifacts);
668 service.setGroups(groups);
669 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
671 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
672 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(service, artifactPathAndNameList, user);
673 assertNotNull(result.left().value());
677 void testOrganizeVfCsarArtifactsByServiceArtifactOperation() {
678 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
679 artifactPathAndNameList.add(getNonMetaArtifactInfo());
680 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
681 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
682 artifactDefinition.setArtifactName("artifactName");
683 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
684 artifactDefinition.setArtifactChecksum("artifactChecksum");
685 existingArtifactsToHandle.add(artifactDefinition);
686 Service service = createServiceObject(true);
688 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
689 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
690 existingArtifactsToHandle, service, user);
691 assertNotNull(enumMapResponseFormatEither.left().value());
695 void testOrganizeVfCsarArtifactsByServiceArtifactOperationElse() {
696 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
697 artifactPathAndNameList.add(getNonMetaArtifactInfo());
698 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
699 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
700 artifactDefinition.setArtifactName("artifactName");
701 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
702 artifactDefinition.setArtifactChecksum("artifactChecksum");
703 existingArtifactsToHandle.add(artifactDefinition);
704 Service service = createServiceObject(true);
705 Assertions.assertNotNull(
706 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, service, user));
711 void testProcessServiceCsarArtifacts() {
712 CsarInfo csarInfo = getCsarInfo();
713 Service service = createServiceObject(true);
714 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
715 Either<Service, ResponseFormat> resStatus = Either.left(service);
716 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
717 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
718 List<CsarUtils.NonMetaArtifactInfo> objects = new ArrayList<>();
719 objects.add(getNonMetaArtifactInfo());
720 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, objects);
721 Assertions.assertNotNull(
722 sIBL.processCsarArtifacts(csarInfo, service, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
726 void testGetValidArtifactNames() {
727 CsarInfo csarInfo = getCsarInfo();
728 Map<String, Set<List<String>>> collectedWarningMessages = new HashMap<>();
729 Either<List<CsarUtils.NonMetaArtifactInfo>, String> result = sIBL.getValidArtifactNames(csarInfo,
730 collectedWarningMessages);
731 assertNotNull(result.left().value());
735 void testCreateOrUpdateSingleNonMetaServiceArtifact() {
736 Service service = createServiceObject(true);
737 CsarInfo csarInfo = getCsarInfo();
738 Map<String, byte[]> csar = csarInfo.getCsar();
739 String rootPath = System.getProperty("user.dir");
741 byte[] data = new byte[0];
742 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
744 data = Files.readAllBytes(path);
745 } catch (IOException e) {
748 csar.put("valid_vf.csar", data);
749 csarInfo.setCsar(csar);
750 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
751 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
752 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
753 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
754 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
755 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
756 artifactDefinition.setArtifactName("artifactName");
757 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
758 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Service.class), any(User.class),
759 anyMap(), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
760 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
761 .thenReturn(Either.left(artifactDefinition));
762 Assertions.assertNotNull(
763 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
764 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
765 artifactDescription, artifactId, artifactOperation, createdArtifacts,
770 void testCreateOrUpdateSingleNonMetaServiceArtifactNull() {
771 Service service = createServiceObject(true);
772 CsarInfo csarInfo = getCsarInfo();
773 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
774 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
775 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
776 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
777 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
778 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
779 .thenReturn(Either.left(artifactDefinition));
780 Assertions.assertNotNull(
781 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
782 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
783 artifactDescription, artifactId, artifactOperation, createdArtifacts,
788 void testCreateGroupsOnResource() {
789 Service service = createServiceObject(true);
790 Map<String, GroupDefinition> groups = new HashMap<>();
791 Assertions.assertNotNull(sIBL.createGroupsOnResource(service, groups));
795 void testCreateGroupsOnResourceNull() {
796 Service service = createServiceObject(true);
797 Map<String, GroupDefinition> groups = new HashMap<>();
798 Assertions.assertNotNull(
799 sIBL.createGroupsOnResource(service, groups));
803 void testUpdateGroupsMembersUsingResource() {
804 Service service = createServiceObject(true);
805 Map<String, GroupDefinition> groups = getGroups();
807 Assertions.assertNotNull(
808 sIBL.updateGroupsMembersUsingResource(groups, service));
812 void testUpdateGroupsMembersUsingResource_left() {
813 Service service = createServiceObject(true);
814 Map<String, GroupDefinition> groups = getGroups();
816 Assertions.assertNotNull(
817 sIBL.updateGroupsMembersUsingResource(groups, service));
821 void testCreateRIAndRelationsFromResourceYaml() throws IOException {
822 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
823 String yamlName = "group.yml";
824 Resource resource = createParseResourceObject(true);
825 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
826 String topologyTemplateYaml = getMainTemplateContent();
827 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
829 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
830 Map<String, Object> map = new HashMap<>();
831 map.put("tosca_definitions_version", "123");
832 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
834 CsarInfo csarInfo = getCsarInfo();
835 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
837 Assertions.assertThrows(ComponentException.class, () -> sIBL
838 .createRIAndRelationsFromYaml(yamlName, resource, uploadComponentInstanceInfoMap,
839 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
840 csarInfo, nodeTypesArtifactsToCreate, nodeName));
844 void testCreateResourceInstancesRelations() {
845 String yamlName = "group.yml";
846 Resource resource = createParseResourceObject(true);
847 resource.setComponentInstances(creatComponentInstances());
848 resource.setResourceType(ResourceTypeEnum.VF);
849 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
850 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
851 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
852 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
853 Assertions.assertThrows(ComponentException.class, () -> sIBL
854 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
858 void testCreateResourceInstancesRelations_Empty() {
859 String yamlName = "group.yml";
860 Resource resource = createParseResourceObject(true);
861 resource.setComponentInstances(creatComponentInstances());
862 resource.setResourceType(ResourceTypeEnum.VF);
863 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
864 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
865 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
866 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
867 Assertions.assertThrows(ComponentException.class, () -> sIBL
868 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
872 void testProcessComponentInstance1() {
873 String yamlName = "group.yml";
874 Resource resource = createParseResourceObject(true);
875 Resource originResource = createParseResourceObject(false);
876 originResource.setResourceType(ResourceTypeEnum.VF);
877 List<ComponentInstance> componentInstancesList = creatComponentInstances();
878 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
879 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
880 dataTypeDefinition.setName("dataTypeDefinitionName");
881 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
882 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
883 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
884 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
885 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
886 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
887 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
888 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
889 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
890 Map<String, Resource> originCompMap = new HashMap<>();
891 originCompMap.put("componentUid", originResource);
892 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
893 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
894 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
895 Assertions.assertNotNull(resource);
896 Assertions.assertNotNull(yamlName);
897 sIBL.processComponentInstance(yamlName, resource, componentInstancesList, allDataTypes.left().value(), instProperties,
898 instCapabilties, instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes,
899 originCompMap, instInputs, instNodeFilter, null, uploadComponentInstanceInfo);
903 void testProcessComponentInstance_null() {
904 String yamlName = "group.yml";
905 Resource resource = createParseResourceObject(true);
906 Resource originResource = createParseResourceObject(false);
907 List<ComponentInstance> componentInstancesList = creatComponentInstances();
908 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
909 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
910 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
911 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
912 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
913 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
914 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
915 Map<String, Resource> originCompMap = new HashMap<>();
916 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
917 originCompMap.put("componentUid", originResource);
918 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
919 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
920 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
922 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
923 resource, componentInstancesList, null, instProperties, instCapabilties,
924 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
925 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
929 void testAddInputsValuesToRi() {
930 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
931 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
932 List<UploadPropInfo> uploadPropInfoList = getPropertyList();
933 properties.put("propertiesMap", uploadPropInfoList);
934 uploadComponentInstanceInfo.setProperties(properties);
935 Resource resource = createParseResourceObject(true);
936 Resource originResource = createParseResourceObject(false);
937 List<InputDefinition> inputs = new ArrayList<>();
938 InputDefinition inputDefinition = new InputDefinition();
939 inputDefinition.setName("inputDefinitionName");
940 inputDefinition.setUniqueId("uniqueId");
941 inputDefinition.setType("inputDefinitionType");
942 inputs.add(inputDefinition);
943 originResource.setInputs(inputs);
944 ComponentInstance currentCompInstance = new ComponentInstance();
945 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
946 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
947 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
948 dataTypeDefinition.setName("dataTypeDefinitionName");
949 allDataTypes.put("dataTypeDefinitionMap", dataTypeDefinition);
951 Assertions.assertThrows(ComponentException.class, () -> sIBL
952 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
953 currentCompInstance, instInputs, allDataTypes));
957 void testProcessProperty() {
958 Resource resource = createParseResourceObject(true);
959 List<InputDefinition> inputs = new ArrayList<>();
960 InputDefinition inputDefinition = new InputDefinition();
961 inputDefinition.setName("inputDefinitionName");
962 inputDefinition.setUniqueId("uniqueId");
963 inputDefinition.setType("inputDefinitionType");
964 inputs.add(inputDefinition);
965 resource.setInputs(inputs);
966 ComponentInstance currentCompInstance = null;
967 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
968 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
969 currPropertiesMap.put("propertyInfoName", inputDefinition);
970 List<ComponentInstanceInput> instPropList = new ArrayList<>();
971 List<UploadPropInfo> propertyList = getPropertyList();
972 Assertions.assertNotNull(resource);
973 Assertions.assertNotNull(currPropertiesMap);
974 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
978 void testHandleSubstitutionMappings() {
979 Resource resource = createParseResourceObject(true);
980 resource.setResourceType(ResourceTypeEnum.VF);
981 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
982 when(toscaOperationFacade.getToscaFullElement(anyString()))
983 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
985 Assertions.assertThrows(ComponentException.class,
986 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
990 void testHandleSubstitutionMappings_left() {
991 Resource resource = createParseResourceObject(true);
992 resource.setResourceType(ResourceTypeEnum.VF);
993 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
994 when(toscaOperationFacade.getToscaFullElement(anyString()))
995 .thenReturn(Either.left(resource));
997 Assertions.assertThrows(ComponentException.class,
998 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
1002 void testCreateResourceInstances() {
1003 String yamlName = "group.yml";
1004 Resource resource = createParseResourceObject(true);
1005 Resource originResource = createParseResourceObject(false);
1006 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1007 UploadComponentInstanceInfo nodesInfoValue = new UploadComponentInstanceInfo();
1008 nodesInfoValue.setName("zxjTestImportServiceAb");
1009 nodesInfoValue.setRequirements(gerRequirements());
1010 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1011 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1012 nodeNamespaceMap.put("resources", originResource);
1014 Assertions.assertThrows(ComponentException.class,
1015 () -> sIBL.createResourceInstances(yamlName, resource, uploadResInstancesMap, nodeNamespaceMap));
1019 void testHandleNodeTypes() throws IOException {
1020 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1021 String yamlName = "group.yml";
1022 Resource resource = createParseResourceObject(true);
1023 String topologyTemplateYaml = getMainTemplateContent();
1024 boolean needLock = true;
1025 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1026 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1027 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1028 Map<String, Object> map = new HashMap<>();
1029 map.put("tosca_definitions_version", "123");
1030 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1031 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1032 CsarInfo csarInfo = getCsarInfo();
1033 Assertions.assertNotNull(resource);
1035 sIBL.handleNodeTypes(yamlName, resource, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1036 nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo, nodeName);
1040 void testHandleNestedVfc1() {
1041 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1042 Resource resource = createParseResourceObject(false);
1043 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1044 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1045 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1046 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
1047 nodeTypeInfo.setTemplateFileName("groups.yml");
1048 nodeTypeInfo.setMappedToscaTemplate(new HashMap<>());
1049 nodesInfo.put(nodeName, nodeTypeInfo);
1050 CsarInfo csarInfo = getCsarInfo();
1052 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(resource,
1053 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1057 void testHandleComplexVfc1() {
1058 Resource resource = createParseResourceObject(true);
1059 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1060 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1061 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1062 CsarInfo csarInfo = getCsarInfo();
1063 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1064 String yamlName = "group.yml";
1065 when(serviceImportParseLogic.buildValidComplexVfc(any(Resource.class), any(CsarInfo.class), anyString(),
1066 anyMap())).thenReturn(createParseResourceObject(false));
1067 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1068 .thenReturn(Either.left(resource));
1069 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class),
1070 anyBoolean())).thenReturn(Either.left(true));
1072 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleComplexVfc(resource,
1073 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName, yamlName));
1077 void testCreateNodeTypes1() {
1078 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1079 String yamlName = "group.yml";
1080 Resource resource = createParseResourceObject(false);
1081 boolean needLock = true;
1082 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1083 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
1084 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
1085 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
1086 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1087 artifactDefinition.setArtifactName("artifactName");
1088 artifactDefinitions.add(artifactDefinition);
1089 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
1090 artifactDefinitions);
1091 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
1092 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1093 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1094 Map<String, Object> map = new HashMap<>();
1095 map.put("tosca_definitions_version", "123");
1096 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1097 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1099 CsarInfo csarInfo = getCsarInfo();
1100 Map<String, Object> mapToConvert = new HashMap<>();
1101 Map<String, Object> nodeTypes = new HashMap<>();
1102 nodeTypes.put(nodeName, "");
1103 Assertions.assertNotNull(resource);
1105 sIBL.createNodeTypes(yamlName,
1106 resource, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1107 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
1111 void testCreateNodeTypeResourceFromYaml() throws IOException {
1112 String yamlName = "group.yml";
1113 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1114 Map<String, Object> nodeMap = new HashMap<>();
1115 nodeMap.put(nodeName, getGroupsYaml());
1116 Map.Entry<String, Object> nodeNameValue = nodeMap.entrySet().iterator().next();
1117 Map<String, Object> mapToConvert = new HashedMap();
1118 Resource resourceVf = createParseResourceObject(false);
1119 boolean needLock = true;
1120 Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle = new HashMap<>();
1121 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1122 boolean forceCertificationAllowed = true;
1123 CsarInfo csarInfo = getCsarInfo();
1124 boolean isNested = true;
1125 UploadResourceInfo resourceMetaData = new UploadResourceInfo();
1126 resourceMetaData.setResourceType("VFC");
1127 ImmutablePair<Resource, ActionStatus> immutablePair = new ImmutablePair<>(resourceVf, ActionStatus.CREATED);
1128 when(serviceImportParseLogic.fillResourceMetadata(anyString(), any(Resource.class), anyString(), any(User.class)))
1129 .thenReturn(resourceMetaData);
1130 when(serviceImportParseLogic.buildNodeTypeYaml(any(Map.Entry.class), anyMap(), anyString(), any(CsarInfo.class)))
1131 .thenReturn(nodeName);
1132 when(serviceBusinessLogic.validateUser(any(User.class), anyString(), any(Component.class), any(AuditingActionEnum.class),
1133 anyBoolean())).thenReturn(user);
1134 when(serviceImportParseLogic.createResourceFromNodeType(anyString(), any(UploadResourceInfo.class), any(User.class), anyBoolean(),
1136 anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
1137 anyString(), anyBoolean())).thenReturn(immutablePair);
1138 Assertions.assertNotNull(
1139 sIBL.createNodeTypeResourceFromYaml(yamlName, nodeNameValue, user, mapToConvert,
1140 resourceVf, needLock, nodeTypeArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1141 forceCertificationAllowed, csarInfo, isNested));
1145 void testCreateRIAndRelationsFromYaml() {
1146 String yamlName = "group.yml";
1147 Service service = createServiceObject(true);
1148 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
1149 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1151 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1152 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
1153 CsarInfo csarInfo = getCsarInfo();
1154 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1155 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1157 Assertions.assertNotNull(sIBL
1158 .createRIAndRelationsFromYaml(yamlName, service, uploadComponentInstanceInfoMap,
1159 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
1160 csarInfo, nodeTypesArtifactsToCreate, nodeName));
1164 void testCreateServiceInstancesRelations() {
1165 String yamlName = "group.yml";
1166 Service service = createServiceObject(true);
1167 service.setComponentInstances(creatComponentInstances());
1168 Resource newResource = createNewResource();
1169 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1170 ComponentParametersView componentParametersView = new ComponentParametersView();
1171 RequirementDefinition requirementDefinition = new RequirementDefinition();
1172 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1173 capabilityDefinition.setName("as");
1174 capabilityDefinition.setUniqueId("1");
1175 capabilityDefinition.setOwnerId("2");
1176 ResponseFormat responseFormat = new ResponseFormat();
1177 responseFormat.setStatus(200);
1178 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(newResource);
1179 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1180 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(service));
1181 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1182 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1183 anyString())).thenReturn(Either.left(requirementDefinition));
1184 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1185 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1186 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1187 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
1188 Assertions.assertNotNull(sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1192 void testCreateServiceInstancesRelations_Empty() {
1193 String yamlName = "group.yml";
1194 Service service = createServiceObject(true);
1195 service.setComponentInstances(creatComponentInstances());
1196 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1198 Assertions.assertThrows(ComponentException.class,
1199 () -> sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1203 void testProcessComponentInstance() {
1204 String yamlName = "group.yml";
1205 Service service = createServiceObject(true);
1206 Resource originResource = createParseResourceObject(false);
1207 originResource.setResourceType(ResourceTypeEnum.VF);
1208 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1209 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
1210 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
1211 dataTypeDefinition.setName("dataTypeDefinitionName");
1212 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
1213 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
1214 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1215 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1216 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1217 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1218 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1219 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1220 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1221 Map<String, Resource> originCompMap = new HashMap<>();
1222 originCompMap.put("componentUid", originResource);
1223 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1224 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1225 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
1226 Assertions.assertNotNull(service);
1228 sIBL.processComponentInstance(yamlName, service, componentInstancesList, allDataTypes.left().value(),
1229 instProperties, instCapabilties, instRequirements, instDeploymentArtifacts,
1230 instArtifacts, instAttributes, originCompMap, instInputs, instNodeFilter, null,
1231 uploadComponentInstanceInfo);
1235 void testProcessComponentInstance_null2() {
1236 String yamlName = "group.yml";
1237 Service service = createServiceObject(true);
1238 Resource originResource = createParseResourceObject(false);
1239 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1240 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1241 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1242 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1243 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1244 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1245 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1246 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1247 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1248 Map<String, Resource> originCompMap = new HashMap<>();
1249 originCompMap.put("componentUid", originResource);
1250 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1251 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1252 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
1254 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
1255 service, componentInstancesList, null, instProperties, instCapabilties,
1256 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
1257 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
1261 void testAddInputsValuesToRi2() {
1262 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1263 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
1264 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
1265 UploadPropInfo uploadPropInfo = new UploadPropInfo();
1266 uploadPropInfo.setName("uploadPropInfo");
1267 uploadPropInfoList.add(uploadPropInfo);
1268 uploadPropInfoList.add(uploadPropInfo);
1269 properties.put("propertiesMap", uploadPropInfoList);
1270 uploadComponentInstanceInfo.setProperties(properties);
1271 Service resource = createServiceObject(true);
1272 Resource originResource = createParseResourceObject(false);
1273 List<InputDefinition> inputs = new ArrayList<>();
1274 InputDefinition inputDefinition = new InputDefinition();
1275 inputDefinition.setUniqueId("uniqueId");
1276 inputs.add(inputDefinition);
1277 originResource.setInputs(inputs);
1278 ComponentInstance currentCompInstance = new ComponentInstance();
1279 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1280 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1282 Assertions.assertThrows(ComponentException.class, () -> sIBL
1283 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1284 currentCompInstance, instInputs, allDataTypes));
1288 void testProcessProperty2() {
1289 Service resource = createServiceObject(true);
1290 List<InputDefinition> inputs = new ArrayList<>();
1291 ComponentInstance currentCompInstance = null;
1292 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1293 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
1294 InputDefinition inputDefinition = new InputDefinition();
1295 inputDefinition.setName("inputDefinitionName");
1296 inputDefinition.setType("inputDefinitionType");
1297 inputs.add(inputDefinition);
1298 currPropertiesMap.put("propertyInfoName", inputDefinition);
1299 resource.setInputs(inputs);
1300 List<ComponentInstanceInput> instPropList = new ArrayList<>();
1301 List<UploadPropInfo> propertyList = new ArrayList<>();
1302 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
1303 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
1304 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
1305 getInputValueDataDefinition.setInputName("inputDefinitionName");
1306 get_input.add(getInputValueDataDefinition);
1307 UploadPropInfo propertyInfo = new UploadPropInfo();
1308 propertyInfo.setValue("value");
1309 propertyInfo.setGet_input(get_input);
1310 propertyInfo.setName("propertyInfoName");
1311 propertyList.add(propertyInfo);
1312 Assertions.assertNotNull(resource);
1314 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
1318 void testProcessGetInput() {
1319 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1320 List<InputDefinition> inputs = new ArrayList<>();
1321 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1323 Assertions.assertThrows(ComponentException.class, () -> sIBL.processGetInput(getInputValues, inputs, getInputIndex));
1327 void testProcessGetInput_optional() {
1328 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1329 List<InputDefinition> inputs = new ArrayList<>();
1330 InputDefinition inputDefinition = new InputDefinition();
1331 inputDefinition.setUniqueId("uniqueId");
1332 inputDefinition.setName("InputName");
1333 inputs.add(inputDefinition);
1334 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1335 getInputIndex.setInputName("InputName");
1336 Assertions.assertNotNull(inputs);
1338 sIBL.processGetInput(getInputValues, inputs, getInputIndex);
1342 void testAddPropertyValuesToRi() {
1343 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1344 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1345 Resource resource = createParseResourceObject(true);
1346 List<InputDefinition> inputs = new ArrayList<>();
1347 InputDefinition inputDefinition = new InputDefinition();
1348 inputDefinition.setName("inputDefinitionName");
1349 inputDefinition.setUniqueId("uniqueId");
1350 inputDefinition.setType("inputDefinitionType");
1351 inputs.add(inputDefinition);
1352 resource.setInputs(inputs);
1353 Resource originResource = createParseResourceObject(false);
1354 originResource.setProperties(getProperties());
1355 ComponentInstance currentCompInstance = new ComponentInstance();
1356 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1357 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1358 ResponseFormat responseFormat = new ResponseFormat();
1359 when(serviceImportParseLogic.findInputByName(eq(inputs), any(GetInputValueDataDefinition.class)))
1360 .thenReturn(inputDefinition);
1361 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1362 Assertions.assertNotNull(
1363 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1364 currentCompInstance, instProperties, allDataTypes));
1368 void testAddPropertyValuesToRi_else() {
1369 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1370 Resource resource = createParseResourceObject(true);
1371 Resource originResource = createParseResourceObject(false);
1372 originResource.setProperties(getProperties());
1373 ComponentInstance currentCompInstance = new ComponentInstance();
1374 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1375 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1376 ResponseFormat responseFormat = new ResponseFormat();
1377 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1378 Assertions.assertNotNull(
1379 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource, currentCompInstance,
1380 instProperties, allDataTypes));
1384 void testAddPropertyValuesToRi2() {
1385 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1386 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1387 Service service = createServiceObject(true);
1388 List<InputDefinition> inputs = new ArrayList<>();
1389 InputDefinition inputDefinition = new InputDefinition();
1390 inputDefinition.setName("inputDefinitionName");
1391 inputDefinition.setUniqueId("uniqueId");
1392 inputDefinition.setType("inputDefinitionType");
1393 inputs.add(inputDefinition);
1394 service.setInputs(inputs);
1395 Resource originResource = createParseResourceObject(false);
1396 originResource.setProperties(getProperties());
1397 ComponentInstance currentCompInstance = new ComponentInstance();
1398 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1399 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1400 ResponseFormat responseFormat = new ResponseFormat();
1401 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1402 when(serviceImportParseLogic.findInputByName(anyList(), any(GetInputValueDataDefinition.class)))
1403 .thenReturn(inputDefinition);
1404 Assertions.assertNotNull(
1405 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource,
1406 currentCompInstance, instProperties, allDataTypes));
1410 void testAddPropertyValuesToRi2_else() {
1411 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1412 Service service = createServiceObject(true);
1413 Resource originResource = createParseResourceObject(false);
1414 originResource.setProperties(getProperties());
1415 ComponentInstance currentCompInstance = new ComponentInstance();
1416 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1417 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1418 ResponseFormat responseFormat = new ResponseFormat();
1419 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1420 Assertions.assertNotNull(
1421 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource, currentCompInstance,
1422 instProperties, allDataTypes));
1426 void testProcessComponentInstanceCapabilities() {
1427 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1428 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1429 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1430 uploadComponentInstanceInfo.setCapabilities(getCapabilities());
1431 ComponentInstance currentCompInstance = new ComponentInstance();
1432 Resource originResource = createParseResourceObject(false);
1433 Assertions.assertNotNull(originResource);
1434 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1439 void testProcessComponentInstanceCapabilities_null() {
1440 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1441 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1442 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1443 ComponentInstance currentCompInstance = new ComponentInstance();
1444 Resource originResource = createParseResourceObject(false);
1445 Assertions.assertNotNull(originResource);
1447 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1452 void testUpdateCapabilityPropertiesValues() {
1453 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1454 Map<String, List<CapabilityDefinition>> originCapabilities = new HashMap<>();
1455 Map<String, Map<String, UploadPropInfo>> newPropertiesMap = new HashMap<>();
1456 Assertions.assertNull(allDataTypes);
1457 sIBL.updateCapabilityPropertiesValues(null, originCapabilities, newPropertiesMap);
1461 void testUpdatePropertyValues() {
1462 List<ComponentInstanceProperty> properties = new ArrayList<>();
1463 Map<String, UploadPropInfo> newProperties = new HashMap<>();
1464 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1465 Assertions.assertNotNull(allDataTypes);
1466 sIBL.updatePropertyValues(properties, newProperties, allDataTypes);
1470 void testUpdatePropertyValue() {
1471 ComponentInstanceProperty property = new ComponentInstanceProperty();
1472 property.setType("services");
1473 UploadPropInfo propertyInfo = new UploadPropInfo();
1474 propertyInfo.setValue("value");
1475 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1476 when(serviceBusinessLogic.validatePropValueBeforeCreate(any(IPropertyInputCommon.class), anyString(), anyBoolean(), anyMap())).thenReturn(
1478 Assertions.assertNotNull(sIBL.updatePropertyValue(property, propertyInfo, allDataTypes));
1482 void testGetOriginResource() {
1483 String yamlName = "group.yml";
1484 Map<String, Resource> originCompMap = new HashMap<>();
1485 ComponentInstance currentCompInstance = new ComponentInstance();
1486 currentCompInstance.setComponentUid("currentCompInstance");
1487 when(toscaOperationFacade.getToscaFullElement(anyString()))
1488 .thenReturn(Either.left(createParseResourceObject(true)));
1489 Assertions.assertNotNull(sIBL.getOriginResource(yamlName, originCompMap, currentCompInstance));
1493 void testUpdateCalculatedCapReqWithSubstitutionMappings() {
1494 Resource resource = createParseResourceObject(false);
1495 resource.setComponentInstances(creatComponentInstances());
1496 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1498 when(toscaOperationFacade.deleteAllCalculatedCapabilitiesRequirements(any())).thenReturn(StorageOperationStatus.OK);
1499 Assertions.assertNotNull(sIBL.updateCalculatedCapReqWithSubstitutionMappings(resource, uploadResInstancesMap));
1503 void testFillUpdatedInstCapabilitiesRequirements() {
1504 List<ComponentInstance> componentInstances = creatComponentInstances();
1505 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1506 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilities = new HashMap<>();
1507 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirement = new HashMap<>();
1508 Assertions.assertNotNull(componentInstances);
1510 sIBL.fillUpdatedInstCapabilitiesRequirements(componentInstances, uploadResInstancesMap,
1511 updatedInstCapabilities, updatedInstRequirement);
1515 void testFillUpdatedInstCapabilities() {
1516 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilties = new HashMap<>();
1517 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1518 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
1519 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1520 capabilityDefinition.setName("mme_ipu_vdu.feature");
1521 capabilityDefinitionList.add(capabilityDefinition);
1522 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
1523 ComponentInstance instance = new ComponentInstance();
1524 instance.setCapabilities(capabilities);
1525 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
1526 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
1527 Assertions.assertNotNull(instance);
1529 sIBL.fillUpdatedInstCapabilities(updatedInstCapabilties, instance, capabilitiesNamesToUpdate);
1533 void testFillUpdatedInstRequirements() {
1534 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirements = new
1536 ComponentInstance instance = new ComponentInstance();
1537 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1538 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
1539 RequirementDefinition requirementDefinition = new RequirementDefinition();
1540 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1541 requirementDefinitionList.add(requirementDefinition);
1542 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
1543 instance.setRequirements(requirements);
1544 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
1545 requirementsNamesToUpdate.put("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test",
1546 "requirementsNamesToUpdate");
1547 Assertions.assertNotNull(instance);
1549 sIBL.fillUpdatedInstRequirements(updatedInstRequirements, instance, requirementsNamesToUpdate);
1553 void testAddRelationsToRI() {
1554 String yamlName = "group.yml";
1555 Service service = createServiceObject(true);
1557 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1558 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1559 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1560 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1561 ComponentInstance componentInstance = new ComponentInstance();
1562 componentInstance.setName("zxjTestImportServiceAb");
1563 componentInstancesList.add(componentInstance);
1564 service.setComponentInstances(componentInstancesList);
1565 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1566 RequirementDefinition requirementDefinition = new RequirementDefinition();
1567 requirementDefinition.setOwnerId("1");
1568 requirementDefinition.setUniqueId("2");
1569 requirementDefinition.setCapability("3");
1570 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1571 capabilityDefinition.setName("4");
1572 capabilityDefinition.setUniqueId("5");
1573 capabilityDefinition.setOwnerId("6");
1574 ResponseFormat responseFormat = new ResponseFormat();
1575 responseFormat.setStatus(200);
1576 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1577 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1578 anyString())).thenReturn(Either.left(requirementDefinition));
1579 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1580 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1581 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1582 Assertions.assertNotNull(service);
1584 sIBL.addRelationsToRI(yamlName, service, uploadResInstancesMap, componentInstancesList, relations);
1588 void testAddRelationsToRI_null() {
1589 String yamlName = "group.yml";
1590 Service service = createServiceObject(true);
1591 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1592 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1593 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1594 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1595 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1597 Assertions.assertThrows(ComponentException.class, () -> sIBL.addRelationsToRI(yamlName,
1598 service, uploadResInstancesMap, componentInstancesList, relations));
1602 void testAddRelationToRI() {
1603 String yamlName = "group.yml";
1604 Service service = createServiceObject(true);
1605 service.setComponentInstances(creatComponentInstances());
1607 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1608 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1609 RequirementDefinition requirementDefinition = new RequirementDefinition();
1610 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1611 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1612 capabilityDefinition.setName("capabilityDefinitionName");
1613 capabilityDefinition.setUniqueId("capabilityDefinitionUniqueId");
1614 capabilityDefinition.setOwnerId("capabilityDefinitionOwnerId");
1615 ResponseFormat responseFormat = new ResponseFormat();
1616 when(serviceImportParseLogic.findAvailableRequirement(anyString(), anyString(), any(UploadComponentInstanceInfo.class),
1617 any(ComponentInstance.class), anyString())).thenReturn(Either.left(requirementDefinition));
1618 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1619 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1620 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1621 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1622 Assertions.assertNotNull(relations.get(0).getRelationships().get(0).getOperations());
1626 void testAddRelationToRI_null() {
1627 String yamlName = "group.yml";
1628 Service service = createServiceObject(true);
1629 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1630 service.setComponentInstances(componentInstancesList);
1631 ResponseFormat responseFormat = new ResponseFormat();
1632 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1633 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1634 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1635 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1639 void testGetResourceAfterCreateRelations() {
1640 Service service = createServiceObject(true);
1641 ComponentParametersView componentParametersView = createComponentParametersView();
1642 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1643 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
1644 .thenReturn(Either.left(createServiceObject(true)));
1645 Assertions.assertNotNull(sIBL.getResourceAfterCreateRelations(service));
1649 void testCreateServiceInstances() {
1650 String yamlName = "group.yml";
1651 Service service = createServiceObject(true);
1652 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1653 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1654 uploadResInstancesMap.put("uploadResInstancesMap", nodesInfoValue);
1655 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1656 Resource resource = createParseResourceObject(true);
1657 resource.setToscaResourceName("toscaResourceName");
1658 nodeNamespaceMap.put("nodeNamespaceMap", resource);
1660 Assertions.assertThrows(ComponentException.class,
1661 () -> sIBL.createServiceInstances(yamlName, service, uploadResInstancesMap, nodeNamespaceMap));
1665 void testCreateAndAddResourceInstance() {
1666 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1667 String yamlName = "group.yml";
1668 Resource resource = createParseResourceObject(false);
1669 Resource originResource = createParseResourceObject(true);
1670 originResource.setResourceType(ResourceTypeEnum.VF);
1671 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1672 nodeNamespaceMap.put("resources", originResource);
1673 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1674 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1676 Assertions.assertThrows(ComponentException.class, () -> sIBL
1677 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, resource,
1678 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1682 void testCreateAndAddResourceInstances() {
1683 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1684 String yamlName = "group.yml";
1685 Service service = createServiceObject(true);
1686 service.setServiceType("services");
1687 Resource originResource = createParseResourceObject(true);
1688 originResource.setResourceType(ResourceTypeEnum.VF);
1689 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1690 nodeNamespaceMap.put("resources", originResource);
1691 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1692 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1694 Assertions.assertThrows(ComponentException.class, () -> sIBL
1695 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, service,
1696 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1700 void testValidateResourceInstanceBeforeCreate() {
1701 String yamlName = "group.yml";
1702 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1703 Resource originResource = createParseResourceObject(true);
1704 ResourceMetadataDataDefinition componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
1705 componentMetadataDataDefinition.setState(LifecycleStateEnum.CERTIFIED.name());
1706 ComponentMetadataDefinition componentMetadataDefinition = new ComponentMetadataDefinition(componentMetadataDataDefinition);
1707 originResource.setComponentMetadataDefinition(componentMetadataDefinition);
1708 originResource.setComponentType(ComponentTypeEnum.RESOURCE);
1709 originResource.setToscaResourceName("toscaResourceName");
1710 originResource.setResourceType(ResourceTypeEnum.VF);
1711 originResource.setResourceType(ResourceTypeEnum.VF);
1712 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1713 nodeNamespaceMap.put("resources", originResource);
1714 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(originResource));
1715 Assertions.assertNotNull(
1716 sIBL.validateResourceInstanceBeforeCreate(yamlName, uploadComponentInstanceInfo, nodeNamespaceMap));
1720 void testHandleServiceNodeTypes() {
1721 String yamlName = "group.yml";
1722 Service service = createServiceObject(true);
1723 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1725 boolean needLock = true;
1726 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1727 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1728 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1729 CsarInfo csarInfo = getCsarInfo();
1730 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1731 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(createOldResource()));
1732 Assertions.assertNotNull(service);
1734 sIBL.handleServiceNodeTypes(yamlName, service, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1735 nodeTypesNewCreatedArtifacts,
1736 nodeTypesInfo, csarInfo, nodeName);
1740 void testValidateResourceNotExisted() {
1741 String type = "org.openecomp.resource.vf";
1743 Assertions.assertThrows(ComponentException.class, () -> sIBL.validateResourceNotExisted(type));
1747 void testHandleNestedVF() {
1748 Service service = createServiceObject(true);
1749 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1750 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1751 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1752 CsarInfo csarInfo = getCsarInfo();
1753 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1755 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVF(service,
1756 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1760 void testHandleNestedVfc() {
1761 Service service = createServiceObject(true);
1762 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1763 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1764 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1765 CsarInfo csarInfo = getCsarInfo();
1766 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1768 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(service,
1769 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1773 void testHandleComplexVfc() {
1774 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1775 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1776 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1777 CsarInfo csarInfo = getCsarInfo();
1778 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1779 String yamlName = "group.yml";
1780 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1781 .thenReturn(createNewResource());
1782 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1783 .thenReturn(Either.left(createNewResource()));
1784 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class), anyBoolean()))
1785 .thenReturn(Either.left(true));
1787 Assertions.assertThrows(ComponentException.class, () -> sIBL
1788 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1789 csarInfo, nodeName, yamlName));
1793 void testHandleComplexVfcStatus() {
1794 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1795 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1796 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1797 CsarInfo csarInfo = getCsarInfo();
1798 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1799 String yamlName = "group.yml";
1800 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1801 .thenReturn(createNewResource());
1802 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1803 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1805 Assertions.assertThrows(ComponentException.class, () -> sIBL
1806 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1807 csarInfo, nodeName, yamlName));
1811 void testHandleComplexVfc2() {
1812 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1813 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1814 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1815 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1816 String yamlName = "group.yml";
1817 CsarInfo csarInfo = getCsarInfo();
1818 Map<String, byte[]> csar = new HashMap<>();
1819 csar.put(yamlName, yamlName.getBytes());
1820 csarInfo.setCsar(csar);
1821 Resource oldComplexVfc = createParseResourceObject(false);
1822 Resource newComplexVfc = createParseResourceObject(true);
1824 Assertions.assertThrows(ComponentException.class, () -> sIBL
1825 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1826 csarInfo, nodeName, yamlName, oldComplexVfc, newComplexVfc));
1830 void testUpdateResourceFromYaml() throws IOException {
1831 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1832 Resource newResource = createNewResource();
1833 Resource oldResource = createOldResource();
1834 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1835 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1836 String yamlFileName = "group.yml";
1837 String yamlFileContent = getYamlFileContent();
1838 CsarInfo csarInfo = getCsarInfo();
1839 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1840 Map<String, Object> map = new HashMap<>();
1841 map.put("tosca_definitions_version", "123");
1842 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1843 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1844 boolean isNested = true;
1846 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1847 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1848 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
1849 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
1850 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
1851 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
1852 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
1853 .thenReturn(Either.left(newResource));
1854 Assertions.assertThrows(ComponentException.class, () -> sIBL
1855 .updateResourceFromYaml(oldResource, newResource, actionEnum, createdArtifacts,
1856 yamlFileName, yamlFileContent, csarInfo, nodeTypesInfo,
1857 nodeTypesArtifactsToHandle, nodeName, isNested));
1861 void testCreateResourceFromYaml() throws IOException {
1862 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1863 Resource resource = createParseResourceObject(true);
1864 String topologyTemplateYaml = getMainTemplateContent();
1865 String yamlName = "group.yml";
1867 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1868 Map<String, Object> map = new HashMap<>();
1869 map.put("tosca_definitions_version", "123");
1870 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1872 CsarInfo csarInfo = getCsarInfo();
1873 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1874 boolean shouldLock = false;
1875 boolean inTransaction = true;
1877 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1878 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1879 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Component.class))).thenReturn(resource);
1880 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
1881 .thenReturn(Either.left(false));
1882 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
1883 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceFromYaml(resource,
1884 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
1885 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
1889 void testCreateResourceAndRIsFromYaml() throws IOException {
1890 String yamlName = "group.yml";
1891 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1892 Resource resource = createParseResourceObject(true);
1893 resource.setSystemName("SystemName");
1894 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1895 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1896 boolean isNormative = true;
1897 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1898 String topologyTemplateYaml = getMainTemplateContent();
1899 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1900 Map<String, Object> map = new HashMap<>();
1901 map.put("tosca_definitions_version", "123");
1902 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1903 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1905 CsarInfo csarInfo = getCsarInfo();
1906 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1907 boolean shouldLock = false;
1908 boolean inTransaction = true;
1909 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Resource.class)))
1910 .thenReturn(resource);
1912 when(serviceBusinessLogic.lockComponentByName(anyString(), any(), anyString()))
1913 .thenReturn(Either.left(true));
1915 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
1916 .thenReturn(Either.left(false));
1918 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
1920 Assertions.assertThrows(ComponentException.class, () -> sIBL
1921 .createResourceAndRIsFromYaml(yamlName, resource, parsedToscaYamlInfo, actionEnum,
1922 isNormative, createdArtifacts, topologyTemplateYaml, nodeTypesInfo, csarInfo,
1923 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
1927 void testCreateGroupsOnResource2() {
1928 Resource resource = createParseResourceObject(false);
1929 Map<String, GroupDefinition> groups = null;
1930 List<GroupDefinition> groupDefinitionList = new ArrayList<>();
1931 GroupDefinition groupDefinition = new GroupDefinition();
1932 groupDefinition.setUniqueId("groupDefinitionUniqueId");
1933 groupDefinition.setName("groupDefinition");
1934 groupDefinitionList.add(groupDefinition);
1936 Assertions.assertNotNull(
1937 sIBL.createGroupsOnResource(resource, groups));
1941 void testCreateGroupsOnResource2_null() {
1942 Resource resource = createParseResourceObject(false);
1943 Map<String, GroupDefinition> groups = null;
1945 Either<Resource, ResponseFormat> result = sIBL.createGroupsOnResource(resource, groups);
1946 assertEquals(result.left().value(), resource);
1950 void testUpdateGroupsMembersUsingResource2() {
1951 Resource resource = createParseResourceObject(true);
1952 Map<String, GroupDefinition> groups = getGroups();
1954 Assertions.assertNotNull(
1955 sIBL.updateGroupsMembersUsingResource(groups, resource));
1959 void testUpdateGroupsMembersUsingResource_left2() {
1960 Resource resource = createParseResourceObject(true);
1961 Map<String, GroupDefinition> groups = getGroups();
1963 Assertions.assertNotNull(
1964 sIBL.updateGroupsMembersUsingResource(groups, resource));
1968 void testUpdateGroupMembers() throws IOException {
1969 Map<String, GroupDefinition> groups = new HashMap<>();
1970 GroupDefinition updatedGroupDefinition = new GroupDefinition();
1971 Resource component = createParseResourceObject(true);
1972 List<ComponentInstance> componentInstances = creatComponentInstances();
1973 String groupName = "tosca_simple_yaml_1_1";
1974 Map<String, String> members = new HashMap<>();
1975 members.put("zxjTestImportServiceAb", getGroupsYaml());
1976 Assertions.assertNotNull(component);
1978 sIBL.updateGroupMembers(groups, updatedGroupDefinition, component, componentInstances, groupName, members);
1982 void testUpdateGroupMembers_null() throws IOException {
1983 Map<String, GroupDefinition> groups = new HashMap<>();
1984 GroupDefinition updatedGroupDefinition = new GroupDefinition();
1985 Resource component = createParseResourceObject(true);
1986 List<ComponentInstance> componentInstances = new ArrayList<>();
1987 String groupName = "tosca_simple_yaml_1_1";
1988 Map<String, String> members = new HashMap<>();
1989 members.put("zxjTestImportServiceAb", getGroupsYaml());
1991 Assertions.assertThrows(ComponentException.class, () -> sIBL.updateGroupMembers(groups,
1992 updatedGroupDefinition, component, componentInstances, groupName, members));
1996 void setCreateResourceTransaction() {
1997 Resource resource = createParseResourceObject(false);
1998 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1999 boolean isNormative = true;
2000 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
2001 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
2003 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2007 void setCreateResourceTransaction_leftTrue() {
2008 Resource resource = createParseResourceObject(false);
2009 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2010 boolean isNormative = true;
2011 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(true));
2013 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2017 void setCreateResourceTransaction_Left() {
2018 Resource resource = createParseResourceObject(false);
2019 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2020 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(false));
2021 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
2022 Assertions.assertNotNull(sIBL.createResourceTransaction(resource, user, false));
2026 void testUpdateExistingResourceByImport() {
2027 Resource newResource = createNewResource();
2028 Resource oldResource = createOldResource();
2029 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
2030 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
2031 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
2032 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
2033 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
2034 .thenReturn(Either.left(newResource));
2035 Assertions.assertNotNull(sIBL.updateExistingResourceByImport(newResource, oldResource, user, true, false, true));
2039 void testCreateNewResourceToOldResource() {
2040 Resource newResource = createNewResource();
2041 Resource oldResource = createOldResource();
2043 sIBL.createNewResourceToOldResource(newResource, oldResource, user);
2044 assertEquals(newResource.getSystemName(), oldResource.getSystemName());
2048 void testCreateResourcesFromYamlNodeTypesList() {
2049 String yamlName = "group.yml";
2050 Service service = createServiceObject(true);
2051 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2052 boolean needLock = true;
2053 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2054 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2055 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2056 CsarInfo csarInfo = getCsarInfo();
2058 Assertions.assertThrows(ComponentException.class, () -> sIBL
2059 .createResourcesFromYamlNodeTypesList(yamlName, service, mappedToscaTemplate, needLock,
2060 nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo));
2064 void testCreateNodeTypes() {
2065 String yamlName = "group.yml";
2066 Service service = createServiceObject(true);
2067 boolean needLock = true;
2068 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2069 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2070 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2071 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2072 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2073 artifactDefinition.setArtifactName("artifactName");
2074 artifactDefinitions.add(artifactDefinition);
2075 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2076 artifactDefinitions);
2077 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2078 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2079 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2080 CsarInfo csarInfo = getCsarInfo();
2081 Map<String, Object> mapToConvert = new HashMap<>();
2082 Map<String, Object> nodeTypes = new HashMap<>();
2083 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2084 nodeTypesInfo.put("nodeTyp", nodeTypeInfo);
2085 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2088 Assertions.assertThrows(ComponentException.class, () -> sIBL.createNodeTypes(yamlName,
2089 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2090 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes));
2094 void testCreateNodeTypesElse() {
2095 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2096 String yamlName = "group.yml";
2097 Service service = createServiceObject(true);
2098 boolean needLock = true;
2099 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2100 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2101 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2102 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2103 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2104 artifactDefinition.setArtifactName("artifactName");
2105 artifactDefinitions.add(artifactDefinition);
2106 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2107 artifactDefinitions);
2108 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2109 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2110 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2111 Map<String, Object> map = new HashMap<>();
2112 map.put("tosca_definitions_version", "123");
2113 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
2114 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
2116 CsarInfo csarInfo = getCsarInfo();
2117 Map<String, Object> mapToConvert = new HashMap<>();
2118 Map<String, Object> nodeTypes = new HashMap<>();
2119 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2120 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2122 when(serviceImportParseLogic.createNodeTypeResourceFromYaml(anyString(), any(Map.Entry.class), any(User.class),
2123 anyMap(), any(Service.class), anyBoolean(), anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
2124 anyBoolean())).thenReturn(getResourceCreated());
2125 Assertions.assertNotNull(service);
2127 sIBL.createNodeTypes(yamlName,
2128 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2129 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
2132 protected ImmutablePair<Resource, ActionStatus> getResourceCreated() {
2133 Resource resource = createOldResource();
2134 ImmutablePair<Resource, ActionStatus> resourceCreated = new ImmutablePair<>(resource, ActionStatus.OK);
2136 return resourceCreated;
2139 protected Resource createNewResource() {
2140 Resource newResource = createParseResourceObject(false);
2141 newResource.setVersion("1.0");
2142 newResource.setInvariantUUID("");
2143 newResource.setLifecycleState(null);
2144 newResource.setUUID("");
2145 newResource.setNormalizedName("");
2146 newResource.setSystemName("");
2147 newResource.setCsarUUID("");
2148 newResource.setImportedToscaChecksum("");
2149 newResource.setDerivedFromGenericType("");
2150 newResource.setDerivedFromGenericVersion("");
2151 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2152 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2153 artifactDefinition.setArtifactName("artifactDefinition");
2154 toscaArtifacts.put("toscaArtifactsMap", artifactDefinition);
2155 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2156 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2157 interfaceDefinition.setOwnerId("OwnerId");
2158 interfaces.put("interfacesMap", interfaceDefinition);
2159 newResource.setInterfaces(interfaces);
2160 newResource.setToscaArtifacts(toscaArtifacts);
2161 newResource.setProperties(getProperties());
2165 protected Resource createOldResource() {
2166 Resource newResource = createParseResourceObject(false);
2167 newResource.setVersion("1.0");
2168 newResource.setUniqueId("ResourceUniqueId");
2169 newResource.setInvariantUUID("552e8f6c-340c-4fb4-8a82-fe7732fd8010");
2170 newResource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
2171 newResource.setUUID("13065b80-ca96-4331-b643-d28aeaf961cb");
2172 newResource.setNormalizedName("NormalizedName");
2173 newResource.setSystemName("default");
2174 newResource.setCsarUUID("CsarUUID");
2175 newResource.setImportedToscaChecksum("ImportedToscaChecksum");
2176 newResource.setDerivedFromGenericType("DerivedFromGenericType");
2177 newResource.setDerivedFromGenericVersion("0.1");
2178 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2179 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2180 artifactDefinition.setArtifactName("tosca_simple_yaml_1_1");
2181 toscaArtifacts.put("tosca_definitions_version", artifactDefinition);
2182 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2183 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2184 interfaceDefinition.setDescription("Invoked upon receipt of an Instantiate VNF request");
2185 interfaces.put("tosca_simple_yaml_1_1", interfaceDefinition);
2186 newResource.setInterfaces(interfaces);
2187 newResource.setToscaArtifacts(toscaArtifacts);
2188 List<PropertyDefinition> properties = new ArrayList<>();
2189 PropertyDefinition propertyDefinition = new PropertyDefinition();
2190 propertyDefinition.setName("tosca_simple_yaml_1_1");
2191 properties.add(propertyDefinition);
2192 newResource.setProperties(properties);
2196 protected Map<String, InputDefinition> getCurrPropertiesMap() {
2197 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
2198 InputDefinition inputDefinition = new InputDefinition();
2199 inputDefinition.setName("inputDefinitionName");
2200 inputDefinition.setUniqueId("uniqueId");
2201 inputDefinition.setType("inputDefinitionType");
2202 currPropertiesMap.put("propertyInfoName", inputDefinition);
2203 return currPropertiesMap;
2206 protected List<UploadPropInfo> getPropertyList() {
2207 List<UploadPropInfo> propertyList = new ArrayList<>();
2208 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2209 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2210 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2211 getInputValueDataDefinition.setInputName("inputDefinitionName");
2212 get_input.add(getInputValueDataDefinition);
2213 UploadPropInfo propertyInfo = new UploadPropInfo();
2214 propertyInfo.setValue("value");
2215 propertyInfo.setGet_input(get_input);
2216 propertyInfo.setName("propertyInfoName");
2217 propertyList.add(propertyInfo);
2218 return propertyList;
2221 private Map<String, NodeTypeInfo> getNodeTypesInfo() {
2222 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2223 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2224 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2225 nodeTypeInfo.setNested(true);
2226 nodeTypeInfo.setTemplateFileName("templateFileName");
2227 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2228 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2229 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2230 return nodeTypesInfo;
2233 private Map<String, Object> getNodeTypes() {
2234 Map<String, Object> nodeTypesInfo = new HashMap<>();
2235 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2236 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2237 nodeTypeInfo.setNested(true);
2238 nodeTypeInfo.setTemplateFileName("templateFileName");
2239 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2240 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2241 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2242 return nodeTypesInfo;
2245 private Map<String, UploadComponentInstanceInfo> getUploadResInstancesMap() {
2246 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
2247 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2248 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
2249 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2250 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
2251 requirementsNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2252 uploadResInstancesMap.put("zxjTestImportServiceAb", uploadComponentInstanceInfo);
2253 return uploadResInstancesMap;
2256 protected Map<String, List<UploadPropInfo>> getUploadPropInfoProperties() {
2257 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
2258 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
2259 UploadPropInfo uploadPropInfo = new UploadPropInfo();
2260 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2261 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2262 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2263 get_input.add(getInputValueDataDefinition);
2264 uploadPropInfo.setName("propertiesName");
2265 uploadPropInfo.setValue("value");
2266 uploadPropInfo.setGet_input(get_input);
2267 uploadPropInfoList.add(uploadPropInfo);
2268 properties.put("uploadComponentInstanceInfo", uploadPropInfoList);
2272 protected List<PropertyDefinition> getProperties() {
2273 List<PropertyDefinition> properties = new ArrayList<>();
2274 PropertyDefinition propertyDefinition = new PropertyDefinition();
2275 propertyDefinition.setName("propertiesName");
2276 properties.add(propertyDefinition);
2280 protected Map<String, List<UploadReqInfo>> gerRequirements() {
2281 Map<String, List<UploadReqInfo>> uploadReqInfoMap = new HashMap<>();
2282 String requirementName = "tosca.capabilities.Node";
2283 List<UploadReqInfo> uploadReqInfoList = new ArrayList<>();
2284 UploadReqInfo uploadReqInfo = new UploadReqInfo();
2285 uploadReqInfo.setCapabilityName("tosca.capabilities.Node");
2286 uploadReqInfoMap.put(requirementName, uploadReqInfoList);
2287 return uploadReqInfoMap;
2290 protected ComponentParametersView createComponentParametersView() {
2291 ComponentParametersView parametersView = new ComponentParametersView();
2292 parametersView.disableAll();
2293 parametersView.setIgnoreComponentInstances(false);
2294 parametersView.setIgnoreComponentInstancesProperties(false);
2295 parametersView.setIgnoreCapabilities(false);
2296 parametersView.setIgnoreRequirements(false);
2297 parametersView.setIgnoreGroups(false);
2298 return parametersView;
2301 protected Map<String, byte[]> crateCsarFromPayload() {
2302 String payloadName = "valid_vf.csar";
2303 String rootPath = System.getProperty("user.dir");
2307 Map<String, byte[]> returnValue = null;
2309 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2310 data = Files.readAllBytes(path);
2311 payloadData = Base64.encodeBase64String(data);
2312 UploadResourceInfo resourceInfo = new UploadResourceInfo();
2313 resourceInfo.setPayloadName(payloadName);
2314 resourceInfo.setPayloadData(payloadData);
2315 Method privateMethod = null;
2316 privateMethod = AbstractValidationsServlet.class.getDeclaredMethod("getCsarFromPayload", UploadResourceInfo.class);
2317 privateMethod.setAccessible(true);
2318 returnValue = (Map<String, byte[]>) privateMethod.invoke(servlet, resourceInfo);
2319 } catch (IOException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException |
2320 InvocationTargetException e) {
2321 e.printStackTrace();
2326 protected List<ComponentInstance> creatComponentInstances() {
2327 List<ComponentInstance> componentInstances = new ArrayList<>();
2328 ComponentInstance componentInstance = new ComponentInstance();
2329 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
2330 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
2331 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
2332 capabilityDefinition.setName("mme_ipu_vdu.feature");
2333 capabilityDefinitionList.add(capabilityDefinition);
2334 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
2336 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
2337 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
2338 RequirementDefinition requirementDefinition = new RequirementDefinition();
2339 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
2340 requirementDefinitionList.add(requirementDefinition);
2341 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
2342 componentInstance.setRequirements(requirements);
2343 componentInstance.setCapabilities(capabilities);
2344 componentInstance.setUniqueId("uniqueId");
2345 componentInstance.setComponentUid("componentUid");
2346 componentInstance.setName("zxjTestImportServiceAb");
2347 componentInstance.setNormalizedName("zxjTestImportServiceAb");
2348 componentInstance.setProperties(getProperties());
2349 componentInstances.add(componentInstance);
2350 return componentInstances;
2353 private CreateServiceFromYamlParameter getCsfyp() {
2354 CreateServiceFromYamlParameter csfyp = new CreateServiceFromYamlParameter();
2355 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
2356 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2358 csfyp.setNodeName("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test");
2359 csfyp.setTopologyTemplateYaml(getMainTemplateContent("service_import_template.yml"));
2360 csfyp.setCreatedArtifacts(createdArtifacts);
2361 csfyp.setInTransaction(true);
2362 csfyp.setShouldLock(true);
2363 csfyp.setCsarInfo(getCsarInfo());
2364 csfyp.setParsedToscaYamlInfo(getParsedToscaYamlInfo());
2365 csfyp.setNodeTypesInfo(nodeTypesInfo);
2366 csfyp.setYamlName("group.yml");
2370 private ParsedToscaYamlInfo getParsedToscaYamlInfo() {
2371 ParsedToscaYamlInfo parsedToscaYamlInfo = new ParsedToscaYamlInfo();
2372 Map<String, InputDefinition> inputs = new HashMap<>();
2373 Map<String, UploadComponentInstanceInfo> instances = new HashMap<>();
2374 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2375 instances.put("instances", uploadComponentInstanceInfo);
2376 Map<String, GroupDefinition> groups = new HashMap<>();
2377 Map<String, PolicyDefinition> policies = new HashMap<>();
2378 parsedToscaYamlInfo.setGroups(groups);
2379 parsedToscaYamlInfo.setInputs(inputs);
2380 parsedToscaYamlInfo.setInstances(instances);
2381 parsedToscaYamlInfo.setPolicies(policies);
2382 return parsedToscaYamlInfo;
2385 String getMainTemplateContent(String fileName) {
2386 String mainTemplateContent = null;
2388 mainTemplateContent = loadFileNameToJsonString(fileName);
2389 } catch (IOException e) {
2390 e.printStackTrace();
2392 return mainTemplateContent;
2395 protected ServiceCsarInfo getCsarInfo() {
2396 String csarUuid = "0010";
2397 User user = new User("jh0003");
2400 File csarFile = new File(
2401 ServiceImportBusinessLogicTest.class.getClassLoader().getResource("csars/service-Ser09080002-csar.csar").toURI());
2402 Map<String, byte[]> csar = ZipUtils.readZip(csarFile, false);
2404 String vfReousrceName = "resouceName";
2405 String mainTemplateName = "Definitions/service_import_template.yml";
2407 Optional<String> keyOp = csar.keySet().stream().filter(k -> k.endsWith("service-Ser09080002-template.yml")).findAny();
2408 byte[] mainTemplateService = keyOp.map(csar::get).orElse(null);
2409 assertNotNull(mainTemplateService);
2410 final String mainTemplateContent = new String(mainTemplateService);
2412 return new ServiceCsarInfo(user, csarUuid, csar, vfReousrceName, mainTemplateName, mainTemplateContent, false);
2413 } catch (URISyntaxException | ZipException e) {
2419 protected CsarUtils.NonMetaArtifactInfo getNonMetaArtifactInfo() {
2420 String artifactName = "artifactName", path = "/src/test/resources/valid_vf.csar", artifactType = "AAI_SERVICE_MODEL";
2421 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
2422 String rootPath = System.getProperty("user.dir");
2424 byte[] data = new byte[0];
2425 path2 = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2427 data = Files.readAllBytes(path2);
2428 } catch (IOException e) {
2429 e.printStackTrace();
2431 String artifactUniqueId = "artifactUniqueId";
2432 boolean isFromCsar = true;
2433 CsarUtils.NonMetaArtifactInfo nonMetaArtifactInfo = new CsarUtils.NonMetaArtifactInfo(artifactName,
2434 path, artifactType, artifactGroupType, data, artifactUniqueId, isFromCsar);
2435 return nonMetaArtifactInfo;
2439 protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
2440 ResponseFormat actualResponse = e.getResponseFormat() != null ?
2441 e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
2442 assertParseResponse(actualResponse, expectedStatus, variables);
2445 private void assertParseResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
2446 ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
2447 assertThat(expectedResponse.getStatus()).isEqualTo(actualResponse.getStatus());
2448 assertThat(expectedResponse.getFormattedMessage()).isEqualTo(actualResponse.getFormattedMessage());