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 DataTypeDefinition typeToBeUpdated = new DataTypeDefinition();
222 List<PropertyDefinition> properties = new ArrayList<>();
223 PropertyDefinition nameProperty = new PropertyDefinition();
224 nameProperty.setName("name");
225 nameProperty.setType("string");
226 properties.add(nameProperty);
227 PropertyDefinition versionProperty = new PropertyDefinition();
228 versionProperty.setName("version");
229 versionProperty.setType("string");
230 properties.add(versionProperty);
231 typeToBeUpdated.setProperties(properties);
232 when(applicationDataTypeCache.get(any(), eq("onap.datatypes.ToscaConceptIdentifier.datatype"))).thenReturn(Either.left(typeToBeUpdated));
233 when(applicationDataTypeCache.get(any(), matches("^((?!(tosca.datatypes.test_|onap.datatypes.ToscaConceptIdentifier)).)*$"))).thenReturn(Either.left(new DataTypeDefinition()));
237 when(toscaOperationFacade.getLatestByToscaResourceName(contains("org.openecomp.resource"), isNull())).thenReturn(Either.left(null));
238 when(toscaOperationFacade.getLatestByToscaResourceName(contains("tosca.nodes."), isNull())).thenReturn(Either.left(null));
239 when(toscaOperationFacade.updatePropertyOfComponent(eq(oldService), any(PropertyDefinition.class))).thenReturn(Either.left(null));
240 when(toscaOperationFacade.updateComponentInstancePropsToComponent(anyMap(), anyString())).thenReturn(Either.left(null));
242 Service result = sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName);
243 assertNotNull(result);
244 assertNotNull(result.getComponentInstances());
245 assertEquals(1, result.getComponentInstances().size());
246 assertNotNull(result.getComponentInstances().get(0));
247 assertNotNull(result.getComponentInstances().get(0).getCapabilities());
248 assertEquals(1, result.getComponentInstances().get(0).getCapabilities().size());
249 assertNotNull(result.getComponentInstances().get(0).getRequirements());
250 assertEquals(1, result.getComponentInstances().get(0).getRequirements().size());
251 assertNotNull(result.getCategories());
252 assertEquals(1, result.getCategories().size());
254 ArgumentCaptor<String> yaml = ArgumentCaptor.forClass(String.class);
255 verify(dataTypeBusinessLogic).createDataTypeFromYaml(yaml.capture(), isNull(), anyBoolean());
256 Map<String, Object> yamlMap = new Yaml().load(yaml.getValue());
257 assertEquals(3, yamlMap.size());
258 assertNotNull(yamlMap.get("tosca.datatypes.test_a"));
259 assertNotNull(yamlMap.get("tosca.datatypes.test_b"));
260 assertNotNull(yamlMap.get("onap.datatypes.ToscaConceptIdentifier"));
264 void testCreateService_Fail_NotFoundNodeTypesArtifacts() {
265 Service oldService = createServiceObject(true);
266 String payloadName = "valid_vf";
267 Map<String, byte[]> payload = crateCsarFromPayload();
268 Service newService = createServiceObject(true);
270 when(serviceBusinessLogic.validateServiceBeforeCreate(any(Service.class), any(User.class), any(AuditingActionEnum.class)))
271 .thenReturn(Either.left(newService));
272 when(toscaOperationFacade.validateCsarUuidUniqueness(anyString())).thenReturn(StorageOperationStatus.OK);
273 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class), any(Map.class), anyString())).thenReturn(getCsarInfo());
274 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class), any(Service.class)))
275 .thenReturn(Either.right(ActionStatus.GENERAL_ERROR));
276 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(), any(CsarInfo.class), anyString(),
277 any(Service.class))).thenReturn(getParsedToscaYamlInfo());
279 Assertions.assertThrows(ComponentException.class,
280 () -> sIBL.createService(oldService, AuditingActionEnum.CREATE_RESOURCE, user, payload, payloadName));
284 void testCreateServiceFromCsar() {
285 Service oldService = createServiceObject(true);
286 String csarUUID = "valid_vf";
287 Map<String, byte[]> payload = crateCsarFromPayload();
288 ServiceCsarInfo csarInfo = getCsarInfo();
289 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> map =
292 when(csarBusinessLogic.getCsarInfo(any(Service.class), any(), any(User.class),
293 any(Map.class), anyString())).thenReturn(csarInfo);
294 when(serviceImportParseLogic.findNodeTypesArtifactsToHandle(any(Map.class), any(CsarInfo.class),
295 any(Service.class))).thenReturn(Either.left(map));
296 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromCsar(oldService,
297 user, payload, csarUUID));
301 void testCreateServiceFromYaml() {
302 Service oldService = createServiceObject(true);
303 Resource resource = createOldResource();
304 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
305 String yamlName = "group.yml";
306 ServiceCsarInfo csarInfo = getCsarInfo();
307 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
308 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
310 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
311 Map<String, Object> map = new HashMap<>();
312 map.put("tosca_definitions_version", "123");
313 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
314 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
315 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
316 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), any(Map.class),
317 eq(csarInfo), anyString(), any(Component.class))).thenReturn(parsedToscaYamlInfo);
318 when(serviceBusinessLogic.lockComponentByName(anyString(), any(Service.class), anyString()))
319 .thenReturn(Either.left(true));
321 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceFromYaml(oldService,
322 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
323 nodeTypesArtifactsToCreate, false, true, nodeName, user.getUserId()));
327 void testCreateServiceAndRIsFromYaml() {
328 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
329 Service oldService = createServiceObject(true);
330 Resource resource = createOldResource();
331 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
332 CreateServiceFromYamlParameter csfyp = getCsfyp();
333 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
334 Map<String, Object> map = new HashMap<>();
335 map.put("tosca_definitions_version", "123");
336 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
337 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
338 csfyp.setNodeTypesInfo(nodeTypesInfo);
339 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
340 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
341 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
342 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
346 void testCreateServiceAndRIsFromYamlShoudLook() {
347 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
348 Service oldService = createServiceObject(true);
349 Resource resource = createOldResource();
350 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
351 CreateServiceFromYamlParameter csfyp = getCsfyp();
352 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
353 Map<String, Object> map = new HashMap<>();
354 map.put("tosca_definitions_version", "123");
355 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
356 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
357 csfyp.setNodeTypesInfo(nodeTypesInfo);
358 csfyp.setParsedToscaYamlInfo(parsedToscaYamlInfo);
359 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(resource));
360 Assertions.assertThrows(ComponentException.class, () -> sIBL.createServiceAndRIsFromYaml(oldService,
361 false, nodeTypesArtifactsToCreate, false, true, csfyp, user.getUserId()));
365 void testCreateOrUpdateArtifacts() {
366 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
367 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
368 String yamlFileName = "group.yml";
369 CsarInfo csarInfo = getCsarInfo();
370 Resource preparedResource = createParseResourceObject(false);
371 preparedResource.setResourceType(ResourceTypeEnum.VF);
372 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
373 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
374 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
375 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
376 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
377 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
378 artifactDefinition.setArtifactName("artifactName");
379 artifactDefinitions.add(artifactDefinition);
380 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
381 artifactDefinitions);
382 nodeTypesArtifactsToHandle.put(nodeName, enumListEnumMap);
383 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
384 nodeTypeInfoToUpdateArtifacts.setNodeName(nodeName);
385 nodeTypeInfoToUpdateArtifacts.setNodeTypesArtifactsToHandle(nodeTypesArtifactsToHandle);
387 Assertions.assertNotNull(
388 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
389 preparedResource, nodeTypeInfoToUpdateArtifacts, true, true)
394 void testHandleVfCsarArtifacts() {
395 Resource resource = createParseResourceObject(true);
396 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
397 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
398 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
399 artifactDefinition.setUniqueId("uniqueId");
400 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
401 resource.setDeploymentArtifacts(deploymentArtifacts);
402 CsarInfo csarInfo = getCsarInfo();
403 Map<String, byte[]> csar = new HashMap<>();
404 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
405 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
406 csar.put(csarKey, artifactsMetaBytes);
407 csarInfo.setCsar(csar);
408 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
409 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
410 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
411 when(csarArtifactsAndGroupsBusinessLogic
412 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
413 anyList())).thenReturn(Either.left(resource));
414 Assertions.assertNotNull(
415 sIBL.handleVfCsarArtifacts(resource,
416 csarInfo, createdArtifacts, artifactOperation, true, true));
420 void testHandleVfCsarArtifactsGetToscaElement() {
421 Resource resource = createParseResourceObject(true);
422 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
423 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
424 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
425 artifactDefinition.setUniqueId("uniqueId");
426 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
427 resource.setDeploymentArtifacts(deploymentArtifacts);
428 CsarInfo csarInfo = getCsarInfo();
429 Map<String, byte[]> csar = new HashMap<>();
430 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
431 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
432 csar.put(csarKey, artifactsMetaBytes);
433 csarInfo.setCsar(csar);
434 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
435 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
436 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource));
437 when(csarArtifactsAndGroupsBusinessLogic
438 .createResourceArtifactsFromCsar(any(CsarInfo.class), any(Resource.class), anyString(), anyString(),
439 anyList())).thenReturn(Either.left(resource));
440 Assertions.assertNotNull(
441 sIBL.handleVfCsarArtifacts(resource,
442 csarInfo, createdArtifacts, artifactOperation, true, true));
446 void testCreateOrUpdateSingleNonMetaArtifactToComstants() {
447 Resource resource = createParseResourceObject(false);
448 CsarInfo csarInfo = getCsarInfo();
449 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
450 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
451 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
452 artifactDefinition.setArtifactName("artifactDefinition");
453 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
454 resource.setDeploymentArtifacts(deploymentArtifacts);
455 Assertions.assertNotNull(resource);
456 Assertions.assertNotNull(csarInfo);
457 sIBL.createOrUpdateSingleNonMetaArtifactToComstants(resource, csarInfo, artifactOperation, true, true);
462 void testCreateOrUpdateNonMetaArtifacts() {
463 CsarInfo csarInfo = getCsarInfo();
464 Resource resource = createParseResourceObject(false);
465 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
466 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
468 Either<Resource, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo, resource,
469 createdArtifacts, true, true, artifactOperation);
470 assertEquals(result.left().value(), resource);
474 void testFindVfCsarArtifactsToHandle() {
475 Resource resource = createParseResourceObject(false);
476 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
477 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
478 artifactDefinition.setArtifactName("artifactDefinition");
479 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
480 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
481 artifacts.put("artifacts", artifactDefinition);
482 List<GroupDefinition> groups = new ArrayList<>();
483 GroupDefinition groupDefinition = new GroupDefinition();
484 groupDefinition.setUniqueId("groupDefinitionUniqueId");
485 groupDefinition.setName("groupDefinition");
486 groups.add(groupDefinition);
487 resource.setDeploymentArtifacts(deploymentArtifacts);
488 resource.setArtifacts(artifacts);
489 resource.setGroups(groups);
490 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
492 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
493 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(resource, artifactPathAndNameList, user);
494 assertNotNull(result.left().value());
498 void testOrganizeVfCsarArtifactsByArtifactOperation() {
499 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
500 artifactPathAndNameList.add(getNonMetaArtifactInfo());
501 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
502 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
503 artifactDefinition.setArtifactName("artifactName");
504 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
505 artifactDefinition.setArtifactChecksum("artifactChecksum");
506 existingArtifactsToHandle.add(artifactDefinition);
507 Resource resource = createParseResourceObject(false);
509 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
510 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
511 existingArtifactsToHandle,
513 assertNotNull(enumMapResponseFormatEither.left().value());
517 void testOrganizeVfCsarArtifactsByArtifactOperationElse() {
518 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
519 artifactPathAndNameList.add(getNonMetaArtifactInfo());
520 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
521 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
522 artifactDefinition.setArtifactName("artifactName");
523 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
524 artifactDefinition.setArtifactChecksum("artifactChecksum");
525 existingArtifactsToHandle.add(artifactDefinition);
526 Resource resource = createParseResourceObject(false);
527 Assertions.assertNotNull(
528 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, resource,
533 void testProcessCsarArtifacts() {
534 CsarInfo csarInfo = getCsarInfo();
535 Resource resource = createParseResourceObject(false);
536 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
537 Either<Resource, ResponseFormat> resStatus = Either.left(resource);
538 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
539 artifactPathAndNameList.add(getNonMetaArtifactInfo());
540 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
541 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
542 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, artifactPathAndNameList);
543 Assertions.assertNotNull(
544 sIBL.processCsarArtifacts(csarInfo,
545 resource, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
549 void testCreateOrUpdateSingleNonMetaArtifact() {
550 Resource resource = createParseResourceObject(false);
551 CsarInfo csarInfo = getCsarInfo();
552 Map<String, byte[]> csar = csarInfo.getCsar();
553 String rootPath = System.getProperty("user.dir");
555 byte[] data = new byte[0];
556 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
558 data = Files.readAllBytes(path);
559 } catch (IOException e) {
562 csar.put("valid_vf.csar", data);
563 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
564 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
565 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
566 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
567 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
568 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
569 artifactDefinition.setArtifactName("artifactName");
570 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
571 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Resource.class), any(User.class),
572 any(Map.class), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
573 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
574 .thenReturn(Either.left(artifactDefinition));
575 Assertions.assertNotNull(
576 sIBL.createOrUpdateSingleNonMetaArtifact(resource, csarInfo, artifactPath,
577 artifactFileName, artifactType, artifactGroupType, artifactLabel,
578 artifactDisplayName, artifactDescription, artifactId, artifactOperation,
579 createdArtifacts, true, true, true));
583 void testCreateOrUpdateServiceArtifacts() throws IOException {
584 ArtifactsBusinessLogic.ArtifactOperationEnum operation = ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE;
585 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
586 String yamlFileName = "group.yml";
587 CsarInfo csarInfo = getCsarInfo();
588 Map<String, byte[]> csar = new HashMap<>();
589 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
590 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
591 csar.put(csarKey, artifactsMetaBytes);
592 csarInfo.setCsar(csar);
593 Service preparedService = createServiceObject(true);
594 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
595 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
596 artifactDefinition.setArtifactName("artifactDefinition");
597 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
598 preparedService.setDeploymentArtifacts(deploymentArtifacts);
599 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
600 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
601 NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToHandle);
603 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(createServiceObject(true)));
604 when(csarArtifactsAndGroupsBusinessLogic.updateResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
605 anyString(), anyString(), anyList(), anyBoolean(), anyBoolean())).thenReturn(Either.left(preparedService));
606 Assertions.assertNotNull(
607 sIBL.createOrUpdateArtifacts(operation, createdArtifacts, yamlFileName, csarInfo,
608 preparedService, nodeTypeInfoToUpdateArtifacts, true, true));
612 void testHandleVfCsarServiceArtifacts() {
613 Service service = createServiceObject(true);
614 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
615 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
616 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
617 artifactDefinition.setUniqueId("uniqueId");
618 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
619 service.setDeploymentArtifacts(deploymentArtifacts);
620 CsarInfo csarInfo = getCsarInfo();
621 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
622 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
623 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
624 when(csarArtifactsAndGroupsBusinessLogic.deleteVFModules(any(Service.class), any(CsarInfo.class), anyBoolean(), anyBoolean())).thenReturn(
625 Either.left(service));
626 Assertions.assertNotNull(
627 sIBL.handleVfCsarArtifacts(service, csarInfo, createdArtifacts, artifactOperation, true, true));
631 void testHandleVfCsarServiceArtifactsGetToscaElement() throws IOException {
632 Service service = createServiceObject(true);
633 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
634 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
635 artifactDefinition.setArtifactName(Constants.VENDOR_LICENSE_MODEL);
636 artifactDefinition.setUniqueId("uniqueId");
637 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
638 service.setDeploymentArtifacts(deploymentArtifacts);
639 CsarInfo csarInfo = getCsarInfo();
640 Map<String, byte[]> csar = new HashMap<>();
641 String csarKey = CsarUtils.ARTIFACTS_PATH + "HEAT.meta";
642 byte[] artifactsMetaBytes = "src/test/resources/normativeTypes/valid_vf.csar".getBytes();
643 csar.put(csarKey, artifactsMetaBytes);
644 csarInfo.setCsar(csar);
645 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
646 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
647 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
648 when(csarArtifactsAndGroupsBusinessLogic.createResourceArtifactsFromCsar(any(CsarInfo.class), any(Service.class),
649 anyString(), anyString(), anyList())).thenReturn(Either.left(service));
650 Assertions.assertNotNull(
651 sIBL.handleVfCsarArtifacts(service,
652 csarInfo, createdArtifacts, artifactOperation, true, true));
656 void testCreateOrUpdateNonMetaServiceArtifacts() {
657 CsarInfo csarInfo = getCsarInfo();
658 Service service = createServiceObject(true);
659 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
660 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE);
662 Either<Service, ResponseFormat> result = sIBL.createOrUpdateNonMetaArtifacts(csarInfo,
663 service, createdArtifacts, true, true, artifactOperation);
664 assertEquals(result.left().value(), service);
668 void testFindServiceCsarArtifactsToHandle() {
669 Service service = createServiceObject(true);
670 Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
671 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
672 artifactDefinition.setArtifactName("artifactDefinition");
673 deploymentArtifacts.put("deploymentArtifacts", artifactDefinition);
674 Map<String, ArtifactDefinition> artifacts = new HashMap<>();
675 artifacts.put("artifacts", artifactDefinition);
676 List<GroupDefinition> groups = new ArrayList<>();
677 GroupDefinition groupDefinition = new GroupDefinition();
678 groupDefinition.setUniqueId("groupDefinitionUniqueId");
679 groupDefinition.setName("groupDefinition");
680 groups.add(groupDefinition);
681 service.setDeploymentArtifacts(deploymentArtifacts);
682 service.setArtifacts(artifacts);
683 service.setGroups(groups);
684 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
686 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>,
687 ResponseFormat> result = sIBL.findVfCsarArtifactsToHandle(service, artifactPathAndNameList, user);
688 assertNotNull(result.left().value());
692 void testOrganizeVfCsarArtifactsByServiceArtifactOperation() {
693 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
694 artifactPathAndNameList.add(getNonMetaArtifactInfo());
695 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
696 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
697 artifactDefinition.setArtifactName("artifactName");
698 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_SERVICE_MODEL.name());
699 artifactDefinition.setArtifactChecksum("artifactChecksum");
700 existingArtifactsToHandle.add(artifactDefinition);
701 Service service = createServiceObject(true);
703 Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat>
704 enumMapResponseFormatEither = sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList,
705 existingArtifactsToHandle, service, user);
706 assertNotNull(enumMapResponseFormatEither.left().value());
710 void testOrganizeVfCsarArtifactsByServiceArtifactOperationElse() {
711 List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = new ArrayList<>();
712 artifactPathAndNameList.add(getNonMetaArtifactInfo());
713 List<ArtifactDefinition> existingArtifactsToHandle = new ArrayList<>();
714 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
715 artifactDefinition.setArtifactName("artifactName");
716 artifactDefinition.setArtifactType(ArtifactTypeEnum.AAI_VF_MODEL.name());
717 artifactDefinition.setArtifactChecksum("artifactChecksum");
718 existingArtifactsToHandle.add(artifactDefinition);
719 Service service = createServiceObject(true);
720 Assertions.assertNotNull(
721 sIBL.organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifactsToHandle, service, user));
726 void testProcessServiceCsarArtifacts() {
727 CsarInfo csarInfo = getCsarInfo();
728 Service service = createServiceObject(true);
729 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
730 Either<Service, ResponseFormat> resStatus = Either.left(service);
731 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>> vfCsarArtifactsToHandle = new
732 EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
733 List<CsarUtils.NonMetaArtifactInfo> objects = new ArrayList<>();
734 objects.add(getNonMetaArtifactInfo());
735 vfCsarArtifactsToHandle.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE, objects);
736 Assertions.assertNotNull(
737 sIBL.processCsarArtifacts(csarInfo, service, createdArtifacts, true, true, resStatus, vfCsarArtifactsToHandle));
741 void testGetValidArtifactNames() {
742 CsarInfo csarInfo = getCsarInfo();
743 Map<String, Set<List<String>>> collectedWarningMessages = new HashMap<>();
744 Either<List<CsarUtils.NonMetaArtifactInfo>, String> result = sIBL.getValidArtifactNames(csarInfo,
745 collectedWarningMessages);
746 assertNotNull(result.left().value());
750 void testCreateOrUpdateSingleNonMetaServiceArtifact() {
751 Service service = createServiceObject(true);
752 CsarInfo csarInfo = getCsarInfo();
753 Map<String, byte[]> csar = csarInfo.getCsar();
754 String rootPath = System.getProperty("user.dir");
756 byte[] data = new byte[0];
757 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
759 data = Files.readAllBytes(path);
760 } catch (IOException e) {
763 csar.put("valid_vf.csar", data);
764 csarInfo.setCsar(csar);
765 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
766 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
767 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
768 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
769 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
770 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
771 artifactDefinition.setArtifactName("artifactName");
772 Either<ArtifactDefinition, Operation> artifactDefinitionOperationEither = Either.left(artifactDefinition);
773 when(csarArtifactsAndGroupsBusinessLogic.createOrUpdateCsarArtifactFromJson(any(Service.class), any(User.class),
774 anyMap(), any(ArtifactOperationInfo.class))).thenReturn(Either.left(artifactDefinitionOperationEither));
775 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
776 .thenReturn(Either.left(artifactDefinition));
777 Assertions.assertNotNull(
778 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
779 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
780 artifactDescription, artifactId, artifactOperation, createdArtifacts,
785 void testCreateOrUpdateSingleNonMetaServiceArtifactNull() {
786 Service service = createServiceObject(true);
787 CsarInfo csarInfo = getCsarInfo();
788 String artifactPath = "valid_vf.csar", artifactFileName = "", artifactType = "";
789 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
790 String artifactLabel = "", artifactDisplayName = "", artifactDescription = "", artifactId = "artifactId";
791 ArtifactOperationInfo artifactOperation = new ArtifactOperationInfo(true, true, ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE);
792 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
793 when(artifactsBusinessLogic.handleDelete(anyString(), anyString(), any(User.class), any(Component.class), anyBoolean(), anyBoolean()))
794 .thenReturn(Either.left(artifactDefinition));
795 Assertions.assertNotNull(
796 sIBL.createOrUpdateSingleNonMetaArtifact(service, csarInfo, artifactPath, artifactFileName,
797 artifactType, artifactGroupType, artifactLabel, artifactDisplayName,
798 artifactDescription, artifactId, artifactOperation, createdArtifacts,
803 void testCreateGroupsOnResource() {
804 Service service = createServiceObject(true);
805 Map<String, GroupDefinition> groups = new HashMap<>();
806 Assertions.assertNotNull(sIBL.createGroupsOnResource(service, groups));
810 void testCreateGroupsOnResourceNull() {
811 Service service = createServiceObject(true);
812 Map<String, GroupDefinition> groups = new HashMap<>();
813 Assertions.assertNotNull(
814 sIBL.createGroupsOnResource(service, groups));
818 void testUpdateGroupsMembersUsingResource() {
819 Service service = createServiceObject(true);
820 Map<String, GroupDefinition> groups = getGroups();
822 Assertions.assertNotNull(
823 sIBL.updateGroupsMembersUsingResource(groups, service));
827 void testUpdateGroupsMembersUsingResource_left() {
828 Service service = createServiceObject(true);
829 Map<String, GroupDefinition> groups = getGroups();
831 Assertions.assertNotNull(
832 sIBL.updateGroupsMembersUsingResource(groups, service));
836 void testCreateRIAndRelationsFromResourceYaml() throws IOException {
837 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
838 String yamlName = "group.yml";
839 Resource resource = createParseResourceObject(true);
840 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
841 String topologyTemplateYaml = getMainTemplateContent();
842 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
844 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
845 Map<String, Object> map = new HashMap<>();
846 map.put("tosca_definitions_version", "123");
847 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
849 CsarInfo csarInfo = getCsarInfo();
850 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
852 Assertions.assertThrows(ComponentException.class, () -> sIBL
853 .createRIAndRelationsFromYaml(yamlName, resource, uploadComponentInstanceInfoMap,
854 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
855 csarInfo, nodeTypesArtifactsToCreate, nodeName));
859 void testCreateResourceInstancesRelations() {
860 String yamlName = "group.yml";
861 Resource resource = createParseResourceObject(true);
862 resource.setComponentInstances(creatComponentInstances());
863 resource.setResourceType(ResourceTypeEnum.VF);
864 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
865 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
866 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
867 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
868 Assertions.assertThrows(ComponentException.class, () -> sIBL
869 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
873 void testCreateResourceInstancesRelations_Empty() {
874 String yamlName = "group.yml";
875 Resource resource = createParseResourceObject(true);
876 resource.setComponentInstances(creatComponentInstances());
877 resource.setResourceType(ResourceTypeEnum.VF);
878 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
879 uploadResInstancesMap.put("uploadResInstancesMap", getUploadComponentInstanceInfo());
880 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(resource);
881 when(toscaOperationFacade.getToscaFullElement(anyString())).thenReturn(Either.left(resource));
882 Assertions.assertThrows(ComponentException.class, () -> sIBL
883 .createResourceInstancesRelations(user, yamlName, resource, uploadResInstancesMap));
887 void testProcessComponentInstance1() {
888 String yamlName = "group.yml";
889 Resource resource = createParseResourceObject(true);
890 Resource originResource = createParseResourceObject(false);
891 originResource.setResourceType(ResourceTypeEnum.VF);
892 List<ComponentInstance> componentInstancesList = creatComponentInstances();
893 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
894 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
895 dataTypeDefinition.setName("dataTypeDefinitionName");
896 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
897 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
898 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
899 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
900 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
901 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
902 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
903 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
904 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
905 Map<String, Resource> originCompMap = new HashMap<>();
906 originCompMap.put("componentUid", originResource);
907 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
908 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
909 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
910 Assertions.assertNotNull(resource);
911 Assertions.assertNotNull(yamlName);
912 sIBL.processComponentInstance(yamlName, resource, componentInstancesList, allDataTypes.left().value(), instProperties,
913 instCapabilties, instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes,
914 originCompMap, instInputs, instNodeFilter, null, uploadComponentInstanceInfo);
918 void testProcessComponentInstance_null() {
919 String yamlName = "group.yml";
920 Resource resource = createParseResourceObject(true);
921 Resource originResource = createParseResourceObject(false);
922 List<ComponentInstance> componentInstancesList = creatComponentInstances();
923 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
924 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
925 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
926 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
927 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
928 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
929 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
930 Map<String, Resource> originCompMap = new HashMap<>();
931 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
932 originCompMap.put("componentUid", originResource);
933 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
934 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
935 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
937 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
938 resource, componentInstancesList, null, instProperties, instCapabilties,
939 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
940 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
944 void testAddInputsValuesToRi() {
945 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
946 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
947 List<UploadPropInfo> uploadPropInfoList = getPropertyList();
948 properties.put("propertiesMap", uploadPropInfoList);
949 uploadComponentInstanceInfo.setProperties(properties);
950 Resource resource = createParseResourceObject(true);
951 Resource originResource = createParseResourceObject(false);
952 List<InputDefinition> inputs = new ArrayList<>();
953 InputDefinition inputDefinition = new InputDefinition();
954 inputDefinition.setName("inputDefinitionName");
955 inputDefinition.setUniqueId("uniqueId");
956 inputDefinition.setType("inputDefinitionType");
957 inputs.add(inputDefinition);
958 originResource.setInputs(inputs);
959 ComponentInstance currentCompInstance = new ComponentInstance();
960 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
961 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
962 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
963 dataTypeDefinition.setName("dataTypeDefinitionName");
964 allDataTypes.put("dataTypeDefinitionMap", dataTypeDefinition);
966 Assertions.assertThrows(ComponentException.class, () -> sIBL
967 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
968 currentCompInstance, instInputs, allDataTypes));
972 void testProcessProperty() {
973 Resource resource = createParseResourceObject(true);
974 List<InputDefinition> inputs = new ArrayList<>();
975 InputDefinition inputDefinition = new InputDefinition();
976 inputDefinition.setName("inputDefinitionName");
977 inputDefinition.setUniqueId("uniqueId");
978 inputDefinition.setType("inputDefinitionType");
979 inputs.add(inputDefinition);
980 resource.setInputs(inputs);
981 ComponentInstance currentCompInstance = null;
982 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
983 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
984 currPropertiesMap.put("propertyInfoName", inputDefinition);
985 List<ComponentInstanceInput> instPropList = new ArrayList<>();
986 List<UploadPropInfo> propertyList = getPropertyList();
987 Assertions.assertNotNull(resource);
988 Assertions.assertNotNull(currPropertiesMap);
989 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
993 void testHandleSubstitutionMappings() {
994 Resource resource = createParseResourceObject(true);
995 resource.setResourceType(ResourceTypeEnum.VF);
996 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
997 when(toscaOperationFacade.getToscaFullElement(anyString()))
998 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
1000 Assertions.assertThrows(ComponentException.class,
1001 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
1005 void testHandleSubstitutionMappings_left() {
1006 Resource resource = createParseResourceObject(true);
1007 resource.setResourceType(ResourceTypeEnum.VF);
1008 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1009 when(toscaOperationFacade.getToscaFullElement(anyString()))
1010 .thenReturn(Either.left(resource));
1012 Assertions.assertThrows(ComponentException.class,
1013 () -> sIBL.handleSubstitutionMappings(resource, uploadResInstancesMap));
1017 void testCreateResourceInstances() {
1018 String yamlName = "group.yml";
1019 Resource resource = createParseResourceObject(true);
1020 Resource originResource = createParseResourceObject(false);
1021 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1022 UploadComponentInstanceInfo nodesInfoValue = new UploadComponentInstanceInfo();
1023 nodesInfoValue.setName("zxjTestImportServiceAb");
1024 nodesInfoValue.setRequirements(gerRequirements());
1025 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1026 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1027 nodeNamespaceMap.put("resources", originResource);
1029 Assertions.assertThrows(ComponentException.class,
1030 () -> sIBL.createResourceInstances(yamlName, resource, uploadResInstancesMap, nodeNamespaceMap));
1034 void testHandleNodeTypes() throws IOException {
1035 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1036 String yamlName = "group.yml";
1037 Resource resource = createParseResourceObject(true);
1038 String topologyTemplateYaml = getMainTemplateContent();
1039 boolean needLock = true;
1040 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1041 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1042 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1043 Map<String, Object> map = new HashMap<>();
1044 map.put("tosca_definitions_version", "123");
1045 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1046 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1047 CsarInfo csarInfo = getCsarInfo();
1048 Assertions.assertNotNull(resource);
1050 sIBL.handleNodeTypes(yamlName, resource, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1051 nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo, nodeName);
1055 void testHandleNestedVfc1() {
1056 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1057 Resource resource = createParseResourceObject(false);
1058 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1059 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1060 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1061 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
1062 nodeTypeInfo.setTemplateFileName("groups.yml");
1063 nodeTypeInfo.setMappedToscaTemplate(new HashMap<>());
1064 nodesInfo.put(nodeName, nodeTypeInfo);
1065 CsarInfo csarInfo = getCsarInfo();
1067 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(resource,
1068 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1072 void testHandleComplexVfc1() {
1073 Resource resource = createParseResourceObject(true);
1074 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1075 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1076 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1077 CsarInfo csarInfo = getCsarInfo();
1078 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1079 String yamlName = "group.yml";
1080 when(serviceImportParseLogic.buildValidComplexVfc(any(Resource.class), any(CsarInfo.class), anyString(),
1081 anyMap())).thenReturn(createParseResourceObject(false));
1082 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1083 .thenReturn(Either.left(resource));
1084 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class),
1085 anyBoolean())).thenReturn(Either.left(true));
1087 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleComplexVfc(resource,
1088 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName, yamlName));
1092 void testCreateNodeTypes1() {
1093 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1094 String yamlName = "group.yml";
1095 Resource resource = createParseResourceObject(false);
1096 boolean needLock = true;
1097 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1098 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
1099 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
1100 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
1101 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
1102 artifactDefinition.setArtifactName("artifactName");
1103 artifactDefinitions.add(artifactDefinition);
1104 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
1105 artifactDefinitions);
1106 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
1107 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1108 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1109 Map<String, Object> map = new HashMap<>();
1110 map.put("tosca_definitions_version", "123");
1111 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1112 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1114 CsarInfo csarInfo = getCsarInfo();
1115 Map<String, Object> mapToConvert = new HashMap<>();
1116 Map<String, Object> nodeTypes = new HashMap<>();
1117 nodeTypes.put(nodeName, "");
1118 Assertions.assertNotNull(resource);
1120 sIBL.createNodeTypes(yamlName,
1121 resource, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1122 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
1126 void testCreateNodeTypeResourceFromYaml() throws IOException {
1127 String yamlName = "group.yml";
1128 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1129 Map<String, Object> nodeMap = new HashMap<>();
1130 nodeMap.put(nodeName, getGroupsYaml());
1131 Map.Entry<String, Object> nodeNameValue = nodeMap.entrySet().iterator().next();
1132 Map<String, Object> mapToConvert = new HashedMap();
1133 Resource resourceVf = createParseResourceObject(false);
1134 boolean needLock = true;
1135 Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle = new HashMap<>();
1136 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1137 boolean forceCertificationAllowed = true;
1138 CsarInfo csarInfo = getCsarInfo();
1139 boolean isNested = true;
1140 UploadResourceInfo resourceMetaData = new UploadResourceInfo();
1141 resourceMetaData.setResourceType("VFC");
1142 ImmutablePair<Resource, ActionStatus> immutablePair = new ImmutablePair<>(resourceVf, ActionStatus.CREATED);
1143 when(serviceImportParseLogic.fillResourceMetadata(anyString(), any(Resource.class), anyString(), any(User.class)))
1144 .thenReturn(resourceMetaData);
1145 when(serviceImportParseLogic.buildNodeTypeYaml(any(Map.Entry.class), anyMap(), anyString(), any(CsarInfo.class)))
1146 .thenReturn(nodeName);
1147 when(serviceBusinessLogic.validateUser(any(User.class), anyString(), any(Component.class), any(AuditingActionEnum.class),
1148 anyBoolean())).thenReturn(user);
1149 when(serviceImportParseLogic.createResourceFromNodeType(anyString(), any(UploadResourceInfo.class), any(User.class), anyBoolean(),
1151 anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
1152 anyString(), anyBoolean())).thenReturn(immutablePair);
1153 Assertions.assertNotNull(
1154 sIBL.createNodeTypeResourceFromYaml(yamlName, nodeNameValue, user, mapToConvert,
1155 resourceVf, needLock, nodeTypeArtifactsToHandle, nodeTypesNewCreatedArtifacts,
1156 forceCertificationAllowed, csarInfo, isNested));
1160 void testCreateRIAndRelationsFromYaml() {
1161 String yamlName = "group.yml";
1162 Service service = createServiceObject(true);
1163 Map<String, UploadComponentInstanceInfo> uploadComponentInstanceInfoMap = new HashMap<>();
1164 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1166 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1167 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
1168 CsarInfo csarInfo = getCsarInfo();
1169 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1170 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1172 Assertions.assertNotNull(sIBL
1173 .createRIAndRelationsFromYaml(yamlName, service, uploadComponentInstanceInfoMap,
1174 topologyTemplateYaml, nodeTypesNewCreatedArtifacts, nodeTypesInfo,
1175 csarInfo, nodeTypesArtifactsToCreate, nodeName));
1179 void testCreateServiceInstancesRelations() {
1180 String yamlName = "group.yml";
1181 Service service = createServiceObject(true);
1182 service.setComponentInstances(creatComponentInstances());
1183 Resource newResource = createNewResource();
1184 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1185 ComponentParametersView componentParametersView = new ComponentParametersView();
1186 RequirementDefinition requirementDefinition = new RequirementDefinition();
1187 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1188 capabilityDefinition.setName("as");
1189 capabilityDefinition.setUniqueId("1");
1190 capabilityDefinition.setOwnerId("2");
1191 ResponseFormat responseFormat = new ResponseFormat();
1192 responseFormat.setStatus(200);
1193 when(serviceImportParseLogic.getResourceAfterCreateRelations(any(Resource.class))).thenReturn(newResource);
1194 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1195 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class))).thenReturn(Either.left(service));
1196 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1197 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1198 anyString())).thenReturn(Either.left(requirementDefinition));
1199 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1200 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1201 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1202 when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(service));
1203 Assertions.assertNotNull(sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1207 void testCreateServiceInstancesRelations_Empty() {
1208 String yamlName = "group.yml";
1209 Service service = createServiceObject(true);
1210 service.setComponentInstances(creatComponentInstances());
1211 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1213 Assertions.assertThrows(ComponentException.class,
1214 () -> sIBL.createServiceInstancesRelations(user, yamlName, service, uploadResInstancesMap));
1218 void testProcessComponentInstance() {
1219 String yamlName = "group.yml";
1220 Service service = createServiceObject(true);
1221 Resource originResource = createParseResourceObject(false);
1222 originResource.setResourceType(ResourceTypeEnum.VF);
1223 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1224 Map<String, DataTypeDefinition> dataTypeDefinitionMap = new HashMap<>();
1225 DataTypeDefinition dataTypeDefinition = new DataTypeDefinition();
1226 dataTypeDefinition.setName("dataTypeDefinitionName");
1227 dataTypeDefinitionMap.put("dataTypeDefinitionMap", dataTypeDefinition);
1228 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(dataTypeDefinitionMap);
1229 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1230 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1231 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1232 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1233 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1234 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1235 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1236 Map<String, Resource> originCompMap = new HashMap<>();
1237 originCompMap.put("componentUid", originResource);
1238 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1239 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1240 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb");
1241 Assertions.assertNotNull(service);
1243 sIBL.processComponentInstance(yamlName, service, componentInstancesList, allDataTypes.left().value(),
1244 instProperties, instCapabilties, instRequirements, instDeploymentArtifacts,
1245 instArtifacts, instAttributes, originCompMap, instInputs, instNodeFilter, null,
1246 uploadComponentInstanceInfo);
1250 void testProcessComponentInstance_null2() {
1251 String yamlName = "group.yml";
1252 Service service = createServiceObject(true);
1253 Resource originResource = createParseResourceObject(false);
1254 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1255 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1256 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1257 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1258 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> instRequirements = new HashMap<>();
1259 Map<String, Map<String, ArtifactDefinition>> instDeploymentArtifacts = new HashMap<>();
1260 Map<String, Map<String, ArtifactDefinition>> instArtifacts = new HashMap<>();
1261 Map<String, List<AttributeDefinition>> instAttributes = new HashMap<>();
1262 Map<String, UploadNodeFilterInfo> instNodeFilter = new HashMap<>();
1263 Map<String, Resource> originCompMap = new HashMap<>();
1264 originCompMap.put("componentUid", originResource);
1265 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1266 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1267 uploadComponentInstanceInfo.setName("zxjTestImportServiceAb0");
1269 Assertions.assertThrows(ComponentException.class, () -> sIBL.processComponentInstance(yamlName,
1270 service, componentInstancesList, null, instProperties, instCapabilties,
1271 instRequirements, instDeploymentArtifacts, instArtifacts, instAttributes, originCompMap,
1272 instInputs, instNodeFilter, null, uploadComponentInstanceInfo));
1276 void testAddInputsValuesToRi2() {
1277 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1278 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
1279 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
1280 UploadPropInfo uploadPropInfo = new UploadPropInfo();
1281 uploadPropInfo.setName("uploadPropInfo");
1282 uploadPropInfoList.add(uploadPropInfo);
1283 uploadPropInfoList.add(uploadPropInfo);
1284 properties.put("propertiesMap", uploadPropInfoList);
1285 uploadComponentInstanceInfo.setProperties(properties);
1286 Service resource = createServiceObject(true);
1287 Resource originResource = createParseResourceObject(false);
1288 List<InputDefinition> inputs = new ArrayList<>();
1289 InputDefinition inputDefinition = new InputDefinition();
1290 inputDefinition.setUniqueId("uniqueId");
1291 inputs.add(inputDefinition);
1292 originResource.setInputs(inputs);
1293 ComponentInstance currentCompInstance = new ComponentInstance();
1294 Map<String, List<ComponentInstanceInput>> instInputs = new HashMap<>();
1295 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1297 Assertions.assertThrows(ComponentException.class, () -> sIBL
1298 .addInputsValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1299 currentCompInstance, instInputs, allDataTypes));
1303 void testProcessProperty2() {
1304 Service resource = createServiceObject(true);
1305 List<InputDefinition> inputs = new ArrayList<>();
1306 ComponentInstance currentCompInstance = null;
1307 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1308 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
1309 InputDefinition inputDefinition = new InputDefinition();
1310 inputDefinition.setName("inputDefinitionName");
1311 inputDefinition.setType("inputDefinitionType");
1312 inputs.add(inputDefinition);
1313 currPropertiesMap.put("propertyInfoName", inputDefinition);
1314 resource.setInputs(inputs);
1315 List<ComponentInstanceInput> instPropList = new ArrayList<>();
1316 List<UploadPropInfo> propertyList = new ArrayList<>();
1317 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
1318 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
1319 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
1320 getInputValueDataDefinition.setInputName("inputDefinitionName");
1321 get_input.add(getInputValueDataDefinition);
1322 UploadPropInfo propertyInfo = new UploadPropInfo();
1323 propertyInfo.setValue("value");
1324 propertyInfo.setGet_input(get_input);
1325 propertyInfo.setName("propertyInfoName");
1326 propertyList.add(propertyInfo);
1327 Assertions.assertNotNull(resource);
1329 sIBL.processProperty(resource, allDataTypes, currPropertiesMap, instPropList, propertyList);
1333 void testProcessGetInput() {
1334 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1335 List<InputDefinition> inputs = new ArrayList<>();
1336 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1338 Assertions.assertThrows(ComponentException.class, () -> sIBL.processGetInput(getInputValues, inputs, getInputIndex));
1342 void testProcessGetInput_optional() {
1343 List<GetInputValueDataDefinition> getInputValues = new ArrayList<>();
1344 List<InputDefinition> inputs = new ArrayList<>();
1345 InputDefinition inputDefinition = new InputDefinition();
1346 inputDefinition.setUniqueId("uniqueId");
1347 inputDefinition.setName("InputName");
1348 inputs.add(inputDefinition);
1349 GetInputValueDataDefinition getInputIndex = new GetInputValueDataDefinition();
1350 getInputIndex.setInputName("InputName");
1351 Assertions.assertNotNull(inputs);
1353 sIBL.processGetInput(getInputValues, inputs, getInputIndex);
1357 void testAddPropertyValuesToRi() {
1358 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1359 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1360 Resource resource = createParseResourceObject(true);
1361 List<InputDefinition> inputs = new ArrayList<>();
1362 InputDefinition inputDefinition = new InputDefinition();
1363 inputDefinition.setName("inputDefinitionName");
1364 inputDefinition.setUniqueId("uniqueId");
1365 inputDefinition.setType("inputDefinitionType");
1366 inputs.add(inputDefinition);
1367 resource.setInputs(inputs);
1368 Resource originResource = createParseResourceObject(false);
1369 originResource.setProperties(getProperties());
1370 ComponentInstance currentCompInstance = new ComponentInstance();
1371 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1372 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1373 ResponseFormat responseFormat = new ResponseFormat();
1374 when(serviceImportParseLogic.findInputByName(eq(inputs), any(GetInputValueDataDefinition.class)))
1375 .thenReturn(inputDefinition);
1376 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1377 Assertions.assertNotNull(
1378 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource,
1379 currentCompInstance, instProperties, allDataTypes));
1383 void testAddPropertyValuesToRi_else() {
1384 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1385 Resource resource = createParseResourceObject(true);
1386 Resource originResource = createParseResourceObject(false);
1387 originResource.setProperties(getProperties());
1388 ComponentInstance currentCompInstance = new ComponentInstance();
1389 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1390 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1391 ResponseFormat responseFormat = new ResponseFormat();
1392 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1393 Assertions.assertNotNull(
1394 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, resource, originResource, currentCompInstance,
1395 instProperties, allDataTypes));
1399 void testAddPropertyValuesToRi2() {
1400 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1401 uploadComponentInstanceInfo.setProperties(getUploadPropInfoProperties());
1402 Service service = createServiceObject(true);
1403 List<InputDefinition> inputs = new ArrayList<>();
1404 InputDefinition inputDefinition = new InputDefinition();
1405 inputDefinition.setName("inputDefinitionName");
1406 inputDefinition.setUniqueId("uniqueId");
1407 inputDefinition.setType("inputDefinitionType");
1408 inputs.add(inputDefinition);
1409 service.setInputs(inputs);
1410 Resource originResource = createParseResourceObject(false);
1411 originResource.setProperties(getProperties());
1412 ComponentInstance currentCompInstance = new ComponentInstance();
1413 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1414 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1415 ResponseFormat responseFormat = new ResponseFormat();
1416 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1417 when(serviceImportParseLogic.findInputByName(anyList(), any(GetInputValueDataDefinition.class)))
1418 .thenReturn(inputDefinition);
1419 Assertions.assertNotNull(
1420 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource,
1421 currentCompInstance, instProperties, allDataTypes));
1425 void testAddPropertyValuesToRi2_else() {
1426 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1427 Service service = createServiceObject(true);
1428 Resource originResource = createParseResourceObject(false);
1429 originResource.setProperties(getProperties());
1430 ComponentInstance currentCompInstance = new ComponentInstance();
1431 Map<String, List<ComponentInstanceProperty>> instProperties = new HashMap<>();
1432 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1433 ResponseFormat responseFormat = new ResponseFormat();
1434 when(componentsUtils.getResponseFormat(any(ActionStatus.class))).thenReturn(responseFormat);
1435 Assertions.assertNotNull(
1436 sIBL.addPropertyValuesToRi(uploadComponentInstanceInfo, service, originResource, currentCompInstance,
1437 instProperties, allDataTypes));
1441 void testProcessComponentInstanceCapabilities() {
1442 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1443 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1444 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1445 uploadComponentInstanceInfo.setCapabilities(getCapabilities());
1446 ComponentInstance currentCompInstance = new ComponentInstance();
1447 Resource originResource = createParseResourceObject(false);
1448 Assertions.assertNotNull(originResource);
1449 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1454 void testProcessComponentInstanceCapabilities_null() {
1455 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1456 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> instCapabilties = new HashMap<>();
1457 UploadComponentInstanceInfo uploadComponentInstanceInfo = new UploadComponentInstanceInfo();
1458 ComponentInstance currentCompInstance = new ComponentInstance();
1459 Resource originResource = createParseResourceObject(false);
1460 Assertions.assertNotNull(originResource);
1462 sIBL.processComponentInstanceCapabilities(null, instCapabilties, uploadComponentInstanceInfo, currentCompInstance,
1467 void testUpdateCapabilityPropertiesValues() {
1468 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = null;
1469 Map<String, List<CapabilityDefinition>> originCapabilities = new HashMap<>();
1470 Map<String, Map<String, UploadPropInfo>> newPropertiesMap = new HashMap<>();
1471 Assertions.assertNull(allDataTypes);
1472 sIBL.updateCapabilityPropertiesValues(null, originCapabilities, newPropertiesMap);
1476 void testUpdatePropertyValues() {
1477 List<ComponentInstanceProperty> properties = new ArrayList<>();
1478 Map<String, UploadPropInfo> newProperties = new HashMap<>();
1479 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1480 Assertions.assertNotNull(allDataTypes);
1481 sIBL.updatePropertyValues(properties, newProperties, allDataTypes);
1485 void testUpdatePropertyValue() {
1486 ComponentInstanceProperty property = new ComponentInstanceProperty();
1487 property.setType("services");
1488 UploadPropInfo propertyInfo = new UploadPropInfo();
1489 propertyInfo.setValue("value");
1490 Map<String, DataTypeDefinition> allDataTypes = new HashMap<>();
1491 when(serviceBusinessLogic.validatePropValueBeforeCreate(any(IPropertyInputCommon.class), anyString(), anyBoolean(), anyMap())).thenReturn(
1493 Assertions.assertNotNull(sIBL.updatePropertyValue(property, propertyInfo, allDataTypes));
1497 void testGetOriginResource() {
1498 String yamlName = "group.yml";
1499 Map<String, Resource> originCompMap = new HashMap<>();
1500 ComponentInstance currentCompInstance = new ComponentInstance();
1501 currentCompInstance.setComponentUid("currentCompInstance");
1502 when(toscaOperationFacade.getToscaFullElement(anyString()))
1503 .thenReturn(Either.left(createParseResourceObject(true)));
1504 Assertions.assertNotNull(sIBL.getOriginResource(yamlName, originCompMap, currentCompInstance));
1508 void testUpdateCalculatedCapReqWithSubstitutionMappings() {
1509 Resource resource = createParseResourceObject(false);
1510 resource.setComponentInstances(creatComponentInstances());
1511 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1513 when(toscaOperationFacade.deleteAllCalculatedCapabilitiesRequirements(any())).thenReturn(StorageOperationStatus.OK);
1514 Assertions.assertNotNull(sIBL.updateCalculatedCapReqWithSubstitutionMappings(resource, uploadResInstancesMap));
1518 void testFillUpdatedInstCapabilitiesRequirements() {
1519 List<ComponentInstance> componentInstances = creatComponentInstances();
1520 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = getUploadResInstancesMap();
1521 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilities = new HashMap<>();
1522 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirement = new HashMap<>();
1523 Assertions.assertNotNull(componentInstances);
1525 sIBL.fillUpdatedInstCapabilitiesRequirements(componentInstances, uploadResInstancesMap,
1526 updatedInstCapabilities, updatedInstRequirement);
1530 void testFillUpdatedInstCapabilities() {
1531 Map<ComponentInstance, Map<String, List<CapabilityDefinition>>> updatedInstCapabilties = new HashMap<>();
1532 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
1533 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
1534 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1535 capabilityDefinition.setName("mme_ipu_vdu.feature");
1536 capabilityDefinitionList.add(capabilityDefinition);
1537 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
1538 ComponentInstance instance = new ComponentInstance();
1539 instance.setCapabilities(capabilities);
1540 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
1541 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
1542 Assertions.assertNotNull(instance);
1544 sIBL.fillUpdatedInstCapabilities(updatedInstCapabilties, instance, capabilitiesNamesToUpdate);
1548 void testFillUpdatedInstRequirements() {
1549 Map<ComponentInstance, Map<String, List<RequirementDefinition>>> updatedInstRequirements = new
1551 ComponentInstance instance = new ComponentInstance();
1552 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
1553 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
1554 RequirementDefinition requirementDefinition = new RequirementDefinition();
1555 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1556 requirementDefinitionList.add(requirementDefinition);
1557 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
1558 instance.setRequirements(requirements);
1559 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
1560 requirementsNamesToUpdate.put("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test",
1561 "requirementsNamesToUpdate");
1562 Assertions.assertNotNull(instance);
1564 sIBL.fillUpdatedInstRequirements(updatedInstRequirements, instance, requirementsNamesToUpdate);
1568 void testAddRelationsToRI() {
1569 String yamlName = "group.yml";
1570 Service service = createServiceObject(true);
1572 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1573 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1574 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1575 List<ComponentInstance> componentInstancesList = creatComponentInstances();
1576 ComponentInstance componentInstance = new ComponentInstance();
1577 componentInstance.setName("zxjTestImportServiceAb");
1578 componentInstancesList.add(componentInstance);
1579 service.setComponentInstances(componentInstancesList);
1580 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1581 RequirementDefinition requirementDefinition = new RequirementDefinition();
1582 requirementDefinition.setOwnerId("1");
1583 requirementDefinition.setUniqueId("2");
1584 requirementDefinition.setCapability("3");
1585 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1586 capabilityDefinition.setName("4");
1587 capabilityDefinition.setUniqueId("5");
1588 capabilityDefinition.setOwnerId("6");
1589 ResponseFormat responseFormat = new ResponseFormat();
1590 responseFormat.setStatus(200);
1591 when(serviceImportParseLogic.findAvailableRequirement(anyString(),
1592 anyString(), any(UploadComponentInstanceInfo.class), any(ComponentInstance.class),
1593 anyString())).thenReturn(Either.left(requirementDefinition));
1594 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1595 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1596 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1597 Assertions.assertNotNull(service);
1599 sIBL.addRelationsToRI(yamlName, service, uploadResInstancesMap, componentInstancesList, relations);
1603 void testAddRelationsToRI_null() {
1604 String yamlName = "group.yml";
1605 Service service = createServiceObject(true);
1606 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1607 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1608 uploadResInstancesMap.put("uploadComponentInstanceInfo", nodesInfoValue);
1609 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1610 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1612 Assertions.assertThrows(ComponentException.class, () -> sIBL.addRelationsToRI(yamlName,
1613 service, uploadResInstancesMap, componentInstancesList, relations));
1617 void testAddRelationToRI() {
1618 String yamlName = "group.yml";
1619 Service service = createServiceObject(true);
1620 service.setComponentInstances(creatComponentInstances());
1622 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1623 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1624 RequirementDefinition requirementDefinition = new RequirementDefinition();
1625 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
1626 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
1627 capabilityDefinition.setName("capabilityDefinitionName");
1628 capabilityDefinition.setUniqueId("capabilityDefinitionUniqueId");
1629 capabilityDefinition.setOwnerId("capabilityDefinitionOwnerId");
1630 ResponseFormat responseFormat = new ResponseFormat();
1631 when(serviceImportParseLogic.findAvailableRequirement(anyString(), anyString(), any(UploadComponentInstanceInfo.class),
1632 any(ComponentInstance.class), anyString())).thenReturn(Either.left(requirementDefinition));
1633 when(serviceImportParseLogic.findAvailableCapabilityByTypeOrName(any(RequirementDefinition.class),
1634 any(ComponentInstance.class), any(UploadReqInfo.class))).thenReturn(capabilityDefinition);
1635 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1636 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1637 Assertions.assertNotNull(relations.get(0).getRelationships().get(0).getOperations());
1641 void testAddRelationToRI_null() {
1642 String yamlName = "group.yml";
1643 Service service = createServiceObject(true);
1644 List<ComponentInstance> componentInstancesList = new ArrayList<>();
1645 service.setComponentInstances(componentInstancesList);
1646 ResponseFormat responseFormat = new ResponseFormat();
1647 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1648 List<RequirementCapabilityRelDef> relations = new ArrayList<>();
1649 when(componentsUtils.getResponseFormat(any(ActionStatus.class), anyString())).thenReturn(responseFormat);
1650 Assertions.assertNotNull(sIBL.addRelationToRI(yamlName, service, nodesInfoValue, relations));
1654 void testGetResourceAfterCreateRelations() {
1655 Service service = createServiceObject(true);
1656 ComponentParametersView componentParametersView = createComponentParametersView();
1657 when(serviceImportParseLogic.getComponentFilterAfterCreateRelations()).thenReturn(componentParametersView);
1658 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
1659 .thenReturn(Either.left(createServiceObject(true)));
1660 Assertions.assertNotNull(sIBL.getResourceAfterCreateRelations(service));
1664 void testCreateServiceInstances() {
1665 String yamlName = "group.yml";
1666 Service service = createServiceObject(true);
1667 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
1668 UploadComponentInstanceInfo nodesInfoValue = getUploadComponentInstanceInfo();
1669 uploadResInstancesMap.put("uploadResInstancesMap", nodesInfoValue);
1670 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1671 Resource resource = createParseResourceObject(true);
1672 resource.setToscaResourceName("toscaResourceName");
1673 nodeNamespaceMap.put("nodeNamespaceMap", resource);
1675 Assertions.assertThrows(ComponentException.class,
1676 () -> sIBL.createServiceInstances(yamlName, service, uploadResInstancesMap, nodeNamespaceMap));
1680 void testCreateAndAddResourceInstance() {
1681 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1682 String yamlName = "group.yml";
1683 Resource resource = createParseResourceObject(false);
1684 Resource originResource = createParseResourceObject(true);
1685 originResource.setResourceType(ResourceTypeEnum.VF);
1686 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1687 nodeNamespaceMap.put("resources", originResource);
1688 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1689 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1691 Assertions.assertThrows(ComponentException.class, () -> sIBL
1692 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, resource,
1693 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1697 void testCreateAndAddResourceInstances() {
1698 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1699 String yamlName = "group.yml";
1700 Service service = createServiceObject(true);
1701 service.setServiceType("services");
1702 Resource originResource = createParseResourceObject(true);
1703 originResource.setResourceType(ResourceTypeEnum.VF);
1704 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1705 nodeNamespaceMap.put("resources", originResource);
1706 Map<String, Resource> existingnodeTypeMap = new HashMap<>();
1707 Map<ComponentInstance, Resource> resourcesInstancesMap = new HashMap<>();
1709 Assertions.assertThrows(ComponentException.class, () -> sIBL
1710 .createAndAddResourceInstance(uploadComponentInstanceInfo, yamlName, service,
1711 nodeNamespaceMap, existingnodeTypeMap, resourcesInstancesMap));
1715 void testValidateResourceInstanceBeforeCreate() {
1716 String yamlName = "group.yml";
1717 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
1718 Resource originResource = createParseResourceObject(true);
1719 ResourceMetadataDataDefinition componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
1720 componentMetadataDataDefinition.setState(LifecycleStateEnum.CERTIFIED.name());
1721 ComponentMetadataDefinition componentMetadataDefinition = new ComponentMetadataDefinition(componentMetadataDataDefinition);
1722 originResource.setComponentMetadataDefinition(componentMetadataDefinition);
1723 originResource.setComponentType(ComponentTypeEnum.RESOURCE);
1724 originResource.setToscaResourceName("toscaResourceName");
1725 originResource.setResourceType(ResourceTypeEnum.VF);
1726 originResource.setResourceType(ResourceTypeEnum.VF);
1727 Map<String, Resource> nodeNamespaceMap = new HashMap<>();
1728 nodeNamespaceMap.put("resources", originResource);
1729 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(originResource));
1730 Assertions.assertNotNull(
1731 sIBL.validateResourceInstanceBeforeCreate(yamlName, uploadComponentInstanceInfo, nodeNamespaceMap));
1735 void testHandleServiceNodeTypes() {
1736 String yamlName = "group.yml";
1737 Service service = createServiceObject(true);
1738 String topologyTemplateYaml = getMainTemplateContent("service_import_template.yml");
1740 boolean needLock = true;
1741 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1742 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
1743 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1744 CsarInfo csarInfo = getCsarInfo();
1745 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1746 when(toscaOperationFacade.getLatestResourceByToscaResourceName(anyString())).thenReturn(Either.left(createOldResource()));
1747 Assertions.assertNotNull(service);
1749 sIBL.handleServiceNodeTypes(yamlName, service, topologyTemplateYaml, needLock, nodeTypesArtifactsToHandle,
1750 nodeTypesNewCreatedArtifacts,
1751 nodeTypesInfo, csarInfo, nodeName);
1755 void testValidateResourceNotExisted() {
1756 String type = "org.openecomp.resource.vf";
1758 Assertions.assertThrows(ComponentException.class, () -> sIBL.validateResourceNotExisted(type));
1762 void testHandleNestedVF() {
1763 Service service = createServiceObject(true);
1764 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1765 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1766 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1767 CsarInfo csarInfo = getCsarInfo();
1768 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1770 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVF(service,
1771 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1775 void testHandleNestedVfc() {
1776 Service service = createServiceObject(true);
1777 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1778 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1779 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1780 CsarInfo csarInfo = getCsarInfo();
1781 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1783 Assertions.assertThrows(ComponentException.class, () -> sIBL.handleNestedVfc(service,
1784 nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo, csarInfo, nodeName));
1788 void testHandleComplexVfc() {
1789 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1790 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1791 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1792 CsarInfo csarInfo = getCsarInfo();
1793 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1794 String yamlName = "group.yml";
1795 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1796 .thenReturn(createNewResource());
1797 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1798 .thenReturn(Either.left(createNewResource()));
1799 when(serviceImportParseLogic.validateNestedDerivedFromDuringUpdate(any(Resource.class), any(Resource.class), anyBoolean()))
1800 .thenReturn(Either.left(true));
1802 Assertions.assertThrows(ComponentException.class, () -> sIBL
1803 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1804 csarInfo, nodeName, yamlName));
1808 void testHandleComplexVfcStatus() {
1809 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1810 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1811 Map<String, NodeTypeInfo> nodesInfo = new HashMap<>();
1812 CsarInfo csarInfo = getCsarInfo();
1813 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1814 String yamlName = "group.yml";
1815 when(serviceImportParseLogic.buildValidComplexVfc(any(CsarInfo.class), anyString(), anyMap()))
1816 .thenReturn(createNewResource());
1817 when(toscaOperationFacade.getFullLatestComponentByToscaResourceName(anyString()))
1818 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
1820 Assertions.assertThrows(ComponentException.class, () -> sIBL
1821 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1822 csarInfo, nodeName, yamlName));
1826 void testHandleComplexVfc2() {
1827 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1828 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1829 Map<String, NodeTypeInfo> nodesInfo = getNodeTypesInfo();
1830 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1831 String yamlName = "group.yml";
1832 CsarInfo csarInfo = getCsarInfo();
1833 Map<String, byte[]> csar = new HashMap<>();
1834 csar.put(yamlName, yamlName.getBytes());
1835 csarInfo.setCsar(csar);
1836 Resource oldComplexVfc = createParseResourceObject(false);
1837 Resource newComplexVfc = createParseResourceObject(true);
1839 Assertions.assertThrows(ComponentException.class, () -> sIBL
1840 .handleComplexVfc(nodeTypesArtifactsToHandle, createdArtifacts, nodesInfo,
1841 csarInfo, nodeName, yamlName, oldComplexVfc, newComplexVfc));
1845 void testUpdateResourceFromYaml() throws IOException {
1846 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1847 Resource newResource = createNewResource();
1848 Resource oldResource = createOldResource();
1849 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1850 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1851 String yamlFileName = "group.yml";
1852 String yamlFileContent = getYamlFileContent();
1853 CsarInfo csarInfo = getCsarInfo();
1854 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1855 Map<String, Object> map = new HashMap<>();
1856 map.put("tosca_definitions_version", "123");
1857 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1858 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
1859 boolean isNested = true;
1861 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1862 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1863 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
1864 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
1865 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
1866 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
1867 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
1868 .thenReturn(Either.left(newResource));
1869 Assertions.assertThrows(ComponentException.class, () -> sIBL
1870 .updateResourceFromYaml(oldResource, newResource, actionEnum, createdArtifacts,
1871 yamlFileName, yamlFileContent, csarInfo, nodeTypesInfo,
1872 nodeTypesArtifactsToHandle, nodeName, isNested));
1876 void testCreateResourceFromYaml() throws IOException {
1877 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1878 Resource resource = createParseResourceObject(true);
1879 String topologyTemplateYaml = getMainTemplateContent();
1880 String yamlName = "group.yml";
1882 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1883 Map<String, Object> map = new HashMap<>();
1884 map.put("tosca_definitions_version", "123");
1885 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1887 CsarInfo csarInfo = getCsarInfo();
1888 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1889 boolean shouldLock = false;
1890 boolean inTransaction = true;
1892 when(csarBusinessLogic.getParsedToscaYamlInfo(anyString(), anyString(), anyMap(), any(CsarInfo.class),
1893 anyString(), any(Component.class))).thenReturn(getParsedToscaYamlInfo());
1894 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Component.class))).thenReturn(resource);
1895 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
1896 .thenReturn(Either.left(false));
1897 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
1898 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceFromYaml(resource,
1899 topologyTemplateYaml, yamlName, nodeTypesInfo, csarInfo,
1900 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
1904 void testCreateResourceAndRIsFromYaml() throws IOException {
1905 String yamlName = "group.yml";
1906 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
1907 Resource resource = createParseResourceObject(true);
1908 resource.setSystemName("SystemName");
1909 resource.setComponentType(ComponentTypeEnum.RESOURCE);
1910 AuditingActionEnum actionEnum = AuditingActionEnum.CREATE_RESOURCE;
1911 boolean isNormative = true;
1912 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
1913 String topologyTemplateYaml = getMainTemplateContent();
1914 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
1915 Map<String, Object> map = new HashMap<>();
1916 map.put("tosca_definitions_version", "123");
1917 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
1918 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
1920 CsarInfo csarInfo = getCsarInfo();
1921 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToCreate = new HashMap<>();
1922 boolean shouldLock = false;
1923 boolean inTransaction = true;
1924 when(serviceBusinessLogic.fetchAndSetDerivedFromGenericType(any(Resource.class)))
1925 .thenReturn(resource);
1927 when(serviceBusinessLogic.lockComponentByName(anyString(), any(), anyString()))
1928 .thenReturn(Either.left(true));
1930 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
1931 .thenReturn(Either.left(false));
1933 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
1935 Assertions.assertThrows(ComponentException.class, () -> sIBL
1936 .createResourceAndRIsFromYaml(yamlName, resource, parsedToscaYamlInfo, actionEnum,
1937 isNormative, createdArtifacts, topologyTemplateYaml, nodeTypesInfo, csarInfo,
1938 nodeTypesArtifactsToCreate, shouldLock, inTransaction, nodeName));
1942 void testCreateGroupsOnResource2() {
1943 Resource resource = createParseResourceObject(false);
1944 Map<String, GroupDefinition> groups = null;
1945 List<GroupDefinition> groupDefinitionList = new ArrayList<>();
1946 GroupDefinition groupDefinition = new GroupDefinition();
1947 groupDefinition.setUniqueId("groupDefinitionUniqueId");
1948 groupDefinition.setName("groupDefinition");
1949 groupDefinitionList.add(groupDefinition);
1951 Assertions.assertNotNull(
1952 sIBL.createGroupsOnResource(resource, groups));
1956 void testCreateGroupsOnResource2_null() {
1957 Resource resource = createParseResourceObject(false);
1958 Map<String, GroupDefinition> groups = null;
1960 Either<Resource, ResponseFormat> result = sIBL.createGroupsOnResource(resource, groups);
1961 assertEquals(result.left().value(), resource);
1965 void testUpdateGroupsMembersUsingResource2() {
1966 Resource resource = createParseResourceObject(true);
1967 Map<String, GroupDefinition> groups = getGroups();
1969 Assertions.assertNotNull(
1970 sIBL.updateGroupsMembersUsingResource(groups, resource));
1974 void testUpdateGroupsMembersUsingResource_left2() {
1975 Resource resource = createParseResourceObject(true);
1976 Map<String, GroupDefinition> groups = getGroups();
1978 Assertions.assertNotNull(
1979 sIBL.updateGroupsMembersUsingResource(groups, resource));
1983 void testUpdateGroupMembers() throws IOException {
1984 Map<String, GroupDefinition> groups = new HashMap<>();
1985 GroupDefinition updatedGroupDefinition = new GroupDefinition();
1986 Resource component = createParseResourceObject(true);
1987 List<ComponentInstance> componentInstances = creatComponentInstances();
1988 String groupName = "tosca_simple_yaml_1_1";
1989 Map<String, String> members = new HashMap<>();
1990 members.put("zxjTestImportServiceAb", getGroupsYaml());
1991 Assertions.assertNotNull(component);
1993 sIBL.updateGroupMembers(groups, updatedGroupDefinition, component, componentInstances, groupName, members);
1997 void testUpdateGroupMembers_null() throws IOException {
1998 Map<String, GroupDefinition> groups = new HashMap<>();
1999 GroupDefinition updatedGroupDefinition = new GroupDefinition();
2000 Resource component = createParseResourceObject(true);
2001 List<ComponentInstance> componentInstances = new ArrayList<>();
2002 String groupName = "tosca_simple_yaml_1_1";
2003 Map<String, String> members = new HashMap<>();
2004 members.put("zxjTestImportServiceAb", getGroupsYaml());
2006 Assertions.assertThrows(ComponentException.class, () -> sIBL.updateGroupMembers(groups,
2007 updatedGroupDefinition, component, componentInstances, groupName, members));
2011 void setCreateResourceTransaction() {
2012 Resource resource = createParseResourceObject(false);
2013 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2014 boolean isNormative = true;
2015 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(ResourceTypeEnum.class), any(ComponentTypeEnum.class)))
2016 .thenReturn(Either.right(StorageOperationStatus.BAD_REQUEST));
2018 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2022 void setCreateResourceTransaction_leftTrue() {
2023 Resource resource = createParseResourceObject(false);
2024 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2025 boolean isNormative = true;
2026 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(true));
2028 Assertions.assertThrows(ComponentException.class, () -> sIBL.createResourceTransaction(resource, user, isNormative));
2032 void setCreateResourceTransaction_Left() {
2033 Resource resource = createParseResourceObject(false);
2034 resource.setComponentType(ComponentTypeEnum.RESOURCE);
2035 when(toscaOperationFacade.validateComponentNameExists(anyString(), any(), any())).thenReturn(Either.left(false));
2036 when(toscaOperationFacade.createToscaComponent(any(Resource.class))).thenReturn(Either.left(resource));
2037 Assertions.assertNotNull(sIBL.createResourceTransaction(resource, user, false));
2041 void testUpdateExistingResourceByImport() {
2042 Resource newResource = createNewResource();
2043 Resource oldResource = createOldResource();
2044 when(serviceImportParseLogic.prepareResourceForUpdate(any(Resource.class), any(Resource.class),
2045 any(User.class), anyBoolean(), anyBoolean())).thenReturn(oldResource);
2046 when(serviceImportParseLogic.validateCapabilityTypesCreate(any(User.class), any(ICapabilityTypeOperation.class),
2047 any(Resource.class), any(AuditingActionEnum.class), anyBoolean())).thenReturn(Either.left(true));
2048 when(toscaOperationFacade.overrideComponent(any(Resource.class), any(Resource.class)))
2049 .thenReturn(Either.left(newResource));
2050 Assertions.assertNotNull(sIBL.updateExistingResourceByImport(newResource, oldResource, user, true, false, true));
2054 void testCreateNewResourceToOldResource() {
2055 Resource newResource = createNewResource();
2056 Resource oldResource = createOldResource();
2058 sIBL.createNewResourceToOldResource(newResource, oldResource, user);
2059 assertEquals(newResource.getSystemName(), oldResource.getSystemName());
2063 void testCreateResourcesFromYamlNodeTypesList() {
2064 String yamlName = "group.yml";
2065 Service service = createServiceObject(true);
2066 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2067 boolean needLock = true;
2068 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2069 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2070 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2071 CsarInfo csarInfo = getCsarInfo();
2073 Assertions.assertThrows(ComponentException.class, () -> sIBL
2074 .createResourcesFromYamlNodeTypesList(yamlName, service, mappedToscaTemplate, needLock,
2075 nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo));
2079 void testCreateNodeTypes() {
2080 String yamlName = "group.yml";
2081 Service service = createServiceObject(true);
2082 boolean needLock = true;
2083 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2084 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2085 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2086 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2087 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2088 artifactDefinition.setArtifactName("artifactName");
2089 artifactDefinitions.add(artifactDefinition);
2090 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2091 artifactDefinitions);
2092 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2093 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2094 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2095 CsarInfo csarInfo = getCsarInfo();
2096 Map<String, Object> mapToConvert = new HashMap<>();
2097 Map<String, Object> nodeTypes = new HashMap<>();
2098 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2099 nodeTypesInfo.put("nodeTyp", nodeTypeInfo);
2100 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2103 Assertions.assertThrows(ComponentException.class, () -> sIBL.createNodeTypes(yamlName,
2104 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2105 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes));
2109 void testCreateNodeTypesElse() {
2110 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2111 String yamlName = "group.yml";
2112 Service service = createServiceObject(true);
2113 boolean needLock = true;
2114 Map<String, EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle = new HashMap<>();
2115 EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> enumListEnumMap =
2116 new EnumMap<>(ArtifactsBusinessLogic.ArtifactOperationEnum.class);
2117 List<ArtifactDefinition> artifactDefinitions = new ArrayList<>();
2118 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2119 artifactDefinition.setArtifactName("artifactName");
2120 artifactDefinitions.add(artifactDefinition);
2121 enumListEnumMap.put(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
2122 artifactDefinitions);
2123 nodeTypesArtifactsToHandle.put("nodeTyp", enumListEnumMap);
2124 List<ArtifactDefinition> nodeTypesNewCreatedArtifacts = new ArrayList<>();
2125 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2126 Map<String, Object> map = new HashMap<>();
2127 map.put("tosca_definitions_version", "123");
2128 nodeTypesInfo.get(nodeName).setMappedToscaTemplate(map);
2129 ParsedToscaYamlInfo parsedToscaYamlInfo = getParsedToscaYamlInfo();
2131 CsarInfo csarInfo = getCsarInfo();
2132 Map<String, Object> mapToConvert = new HashMap<>();
2133 Map<String, Object> nodeTypes = new HashMap<>();
2134 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2135 nodeTypes.put("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test",
2137 when(serviceImportParseLogic.createNodeTypeResourceFromYaml(anyString(), any(Map.Entry.class), any(User.class),
2138 anyMap(), any(Service.class), anyBoolean(), anyMap(), anyList(), anyBoolean(), any(CsarInfo.class),
2139 anyBoolean())).thenReturn(getResourceCreated());
2140 Assertions.assertNotNull(service);
2142 sIBL.createNodeTypes(yamlName,
2143 service, needLock, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts,
2144 nodeTypesInfo, csarInfo, mapToConvert, nodeTypes);
2147 protected ImmutablePair<Resource, ActionStatus> getResourceCreated() {
2148 Resource resource = createOldResource();
2149 ImmutablePair<Resource, ActionStatus> resourceCreated = new ImmutablePair<>(resource, ActionStatus.OK);
2151 return resourceCreated;
2154 protected Resource createNewResource() {
2155 Resource newResource = createParseResourceObject(false);
2156 newResource.setVersion("1.0");
2157 newResource.setInvariantUUID("");
2158 newResource.setLifecycleState(null);
2159 newResource.setUUID("");
2160 newResource.setNormalizedName("");
2161 newResource.setSystemName("");
2162 newResource.setCsarUUID("");
2163 newResource.setImportedToscaChecksum("");
2164 newResource.setDerivedFromGenericType("");
2165 newResource.setDerivedFromGenericVersion("");
2166 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2167 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2168 artifactDefinition.setArtifactName("artifactDefinition");
2169 toscaArtifacts.put("toscaArtifactsMap", artifactDefinition);
2170 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2171 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2172 interfaceDefinition.setOwnerId("OwnerId");
2173 interfaces.put("interfacesMap", interfaceDefinition);
2174 newResource.setInterfaces(interfaces);
2175 newResource.setToscaArtifacts(toscaArtifacts);
2176 newResource.setProperties(getProperties());
2180 protected Resource createOldResource() {
2181 Resource newResource = createParseResourceObject(false);
2182 newResource.setVersion("1.0");
2183 newResource.setUniqueId("ResourceUniqueId");
2184 newResource.setInvariantUUID("552e8f6c-340c-4fb4-8a82-fe7732fd8010");
2185 newResource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
2186 newResource.setUUID("13065b80-ca96-4331-b643-d28aeaf961cb");
2187 newResource.setNormalizedName("NormalizedName");
2188 newResource.setSystemName("default");
2189 newResource.setCsarUUID("CsarUUID");
2190 newResource.setImportedToscaChecksum("ImportedToscaChecksum");
2191 newResource.setDerivedFromGenericType("DerivedFromGenericType");
2192 newResource.setDerivedFromGenericVersion("0.1");
2193 Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
2194 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
2195 artifactDefinition.setArtifactName("tosca_simple_yaml_1_1");
2196 toscaArtifacts.put("tosca_definitions_version", artifactDefinition);
2197 Map<String, InterfaceDefinition> interfaces = new HashMap<>();
2198 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
2199 interfaceDefinition.setDescription("Invoked upon receipt of an Instantiate VNF request");
2200 interfaces.put("tosca_simple_yaml_1_1", interfaceDefinition);
2201 newResource.setInterfaces(interfaces);
2202 newResource.setToscaArtifacts(toscaArtifacts);
2203 List<PropertyDefinition> properties = new ArrayList<>();
2204 PropertyDefinition propertyDefinition = new PropertyDefinition();
2205 propertyDefinition.setName("tosca_simple_yaml_1_1");
2206 properties.add(propertyDefinition);
2207 newResource.setProperties(properties);
2211 protected Map<String, InputDefinition> getCurrPropertiesMap() {
2212 Map<String, InputDefinition> currPropertiesMap = new HashMap<>();
2213 InputDefinition inputDefinition = new InputDefinition();
2214 inputDefinition.setName("inputDefinitionName");
2215 inputDefinition.setUniqueId("uniqueId");
2216 inputDefinition.setType("inputDefinitionType");
2217 currPropertiesMap.put("propertyInfoName", inputDefinition);
2218 return currPropertiesMap;
2221 protected List<UploadPropInfo> getPropertyList() {
2222 List<UploadPropInfo> propertyList = new ArrayList<>();
2223 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2224 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2225 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2226 getInputValueDataDefinition.setInputName("inputDefinitionName");
2227 get_input.add(getInputValueDataDefinition);
2228 UploadPropInfo propertyInfo = new UploadPropInfo();
2229 propertyInfo.setValue("value");
2230 propertyInfo.setGet_input(get_input);
2231 propertyInfo.setName("propertyInfoName");
2232 propertyList.add(propertyInfo);
2233 return propertyList;
2236 private Map<String, NodeTypeInfo> getNodeTypesInfo() {
2237 Map<String, NodeTypeInfo> nodeTypesInfo = new HashMap<>();
2238 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2239 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2240 nodeTypeInfo.setNested(true);
2241 nodeTypeInfo.setTemplateFileName("templateFileName");
2242 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2243 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2244 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2245 return nodeTypesInfo;
2248 private Map<String, Object> getNodeTypes() {
2249 Map<String, Object> nodeTypesInfo = new HashMap<>();
2250 NodeTypeInfo nodeTypeInfo = new NodeTypeInfo();
2251 Map<String, Object> mappedToscaTemplate = new HashMap<>();
2252 nodeTypeInfo.setNested(true);
2253 nodeTypeInfo.setTemplateFileName("templateFileName");
2254 nodeTypeInfo.setMappedToscaTemplate(mappedToscaTemplate);
2255 String nodeName = "org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test";
2256 nodeTypesInfo.put(nodeName, nodeTypeInfo);
2257 return nodeTypesInfo;
2260 private Map<String, UploadComponentInstanceInfo> getUploadResInstancesMap() {
2261 Map<String, UploadComponentInstanceInfo> uploadResInstancesMap = new HashMap<>();
2262 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2263 Map<String, String> capabilitiesNamesToUpdate = new HashMap<>();
2264 capabilitiesNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2265 Map<String, String> requirementsNamesToUpdate = new HashMap<>();
2266 requirementsNamesToUpdate.put("mme_ipu_vdu.feature", "capabilitiesNamesToUpdate");
2267 uploadResInstancesMap.put("zxjTestImportServiceAb", uploadComponentInstanceInfo);
2268 return uploadResInstancesMap;
2271 protected Map<String, List<UploadPropInfo>> getUploadPropInfoProperties() {
2272 Map<String, List<UploadPropInfo>> properties = new HashMap<>();
2273 List<UploadPropInfo> uploadPropInfoList = new ArrayList<>();
2274 UploadPropInfo uploadPropInfo = new UploadPropInfo();
2275 List<GetInputValueDataDefinition> get_input = new ArrayList<>();
2276 GetInputValueDataDefinition getInputValueDataDefinition = new GetInputValueDataDefinition();
2277 getInputValueDataDefinition.setPropName("getInputValueDataDefinitionName");
2278 get_input.add(getInputValueDataDefinition);
2279 uploadPropInfo.setName("propertiesName");
2280 uploadPropInfo.setValue("value");
2281 uploadPropInfo.setGet_input(get_input);
2282 uploadPropInfoList.add(uploadPropInfo);
2283 properties.put("uploadComponentInstanceInfo", uploadPropInfoList);
2287 protected List<PropertyDefinition> getProperties() {
2288 List<PropertyDefinition> properties = new ArrayList<>();
2289 PropertyDefinition propertyDefinition = new PropertyDefinition();
2290 propertyDefinition.setName("propertiesName");
2291 properties.add(propertyDefinition);
2295 protected Map<String, List<UploadReqInfo>> gerRequirements() {
2296 Map<String, List<UploadReqInfo>> uploadReqInfoMap = new HashMap<>();
2297 String requirementName = "tosca.capabilities.Node";
2298 List<UploadReqInfo> uploadReqInfoList = new ArrayList<>();
2299 UploadReqInfo uploadReqInfo = new UploadReqInfo();
2300 uploadReqInfo.setCapabilityName("tosca.capabilities.Node");
2301 uploadReqInfoMap.put(requirementName, uploadReqInfoList);
2302 return uploadReqInfoMap;
2305 protected ComponentParametersView createComponentParametersView() {
2306 ComponentParametersView parametersView = new ComponentParametersView();
2307 parametersView.disableAll();
2308 parametersView.setIgnoreComponentInstances(false);
2309 parametersView.setIgnoreComponentInstancesProperties(false);
2310 parametersView.setIgnoreCapabilities(false);
2311 parametersView.setIgnoreRequirements(false);
2312 parametersView.setIgnoreGroups(false);
2313 return parametersView;
2316 protected Map<String, byte[]> crateCsarFromPayload() {
2317 String payloadName = "valid_vf.csar";
2318 String rootPath = System.getProperty("user.dir");
2322 Map<String, byte[]> returnValue = null;
2324 path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2325 data = Files.readAllBytes(path);
2326 payloadData = Base64.encodeBase64String(data);
2327 UploadResourceInfo resourceInfo = new UploadResourceInfo();
2328 resourceInfo.setPayloadName(payloadName);
2329 resourceInfo.setPayloadData(payloadData);
2330 Method privateMethod = null;
2331 privateMethod = AbstractValidationsServlet.class.getDeclaredMethod("getCsarFromPayload", UploadResourceInfo.class);
2332 privateMethod.setAccessible(true);
2333 returnValue = (Map<String, byte[]>) privateMethod.invoke(servlet, resourceInfo);
2334 } catch (IOException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException |
2335 InvocationTargetException e) {
2336 e.printStackTrace();
2341 protected List<ComponentInstance> creatComponentInstances() {
2342 List<ComponentInstance> componentInstances = new ArrayList<>();
2343 ComponentInstance componentInstance = new ComponentInstance();
2344 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
2345 List<CapabilityDefinition> capabilityDefinitionList = new ArrayList<>();
2346 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
2347 capabilityDefinition.setName("mme_ipu_vdu.feature");
2348 capabilityDefinitionList.add(capabilityDefinition);
2349 capabilities.put("tosca.capabilities.Node", capabilityDefinitionList);
2351 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
2352 List<RequirementDefinition> requirementDefinitionList = new ArrayList<>();
2353 RequirementDefinition requirementDefinition = new RequirementDefinition();
2354 requirementDefinition.setName("zxjtestimportserviceab0.mme_ipu_vdu.dependency.test");
2355 requirementDefinitionList.add(requirementDefinition);
2356 requirements.put("tosca.capabilities.Node", requirementDefinitionList);
2357 componentInstance.setRequirements(requirements);
2358 componentInstance.setCapabilities(capabilities);
2359 componentInstance.setUniqueId("uniqueId");
2360 componentInstance.setComponentUid("componentUid");
2361 componentInstance.setName("zxjTestImportServiceAb");
2362 componentInstance.setNormalizedName("zxjTestImportServiceAb");
2363 componentInstance.setProperties(getProperties());
2364 componentInstances.add(componentInstance);
2365 return componentInstances;
2368 private CreateServiceFromYamlParameter getCsfyp() {
2369 CreateServiceFromYamlParameter csfyp = new CreateServiceFromYamlParameter();
2370 List<ArtifactDefinition> createdArtifacts = new ArrayList<>();
2371 Map<String, NodeTypeInfo> nodeTypesInfo = getNodeTypesInfo();
2373 csfyp.setNodeName("org.openecomp.resource.derivedFrom.zxjTestImportServiceAb.test");
2374 csfyp.setTopologyTemplateYaml(getMainTemplateContent("service_import_template.yml"));
2375 csfyp.setCreatedArtifacts(createdArtifacts);
2376 csfyp.setInTransaction(true);
2377 csfyp.setShouldLock(true);
2378 csfyp.setCsarInfo(getCsarInfo());
2379 csfyp.setParsedToscaYamlInfo(getParsedToscaYamlInfo());
2380 csfyp.setNodeTypesInfo(nodeTypesInfo);
2381 csfyp.setYamlName("group.yml");
2385 private ParsedToscaYamlInfo getParsedToscaYamlInfo() {
2386 ParsedToscaYamlInfo parsedToscaYamlInfo = new ParsedToscaYamlInfo();
2387 Map<String, InputDefinition> inputs = new HashMap<>();
2388 Map<String, UploadComponentInstanceInfo> instances = new HashMap<>();
2389 UploadComponentInstanceInfo uploadComponentInstanceInfo = getUploadComponentInstanceInfo();
2390 instances.put("instances", uploadComponentInstanceInfo);
2391 Map<String, GroupDefinition> groups = new HashMap<>();
2392 Map<String, PolicyDefinition> policies = new HashMap<>();
2393 parsedToscaYamlInfo.setGroups(groups);
2394 parsedToscaYamlInfo.setInputs(inputs);
2395 parsedToscaYamlInfo.setInstances(instances);
2396 parsedToscaYamlInfo.setPolicies(policies);
2397 return parsedToscaYamlInfo;
2400 String getMainTemplateContent(String fileName) {
2401 String mainTemplateContent = null;
2403 mainTemplateContent = loadFileNameToJsonString(fileName);
2404 } catch (IOException e) {
2405 e.printStackTrace();
2407 return mainTemplateContent;
2410 protected ServiceCsarInfo getCsarInfo() {
2411 String csarUuid = "0010";
2412 User user = new User("jh0003");
2415 File csarFile = new File(
2416 ServiceImportBusinessLogicTest.class.getClassLoader().getResource("csars/service-Ser09080002-csar.csar").toURI());
2417 Map<String, byte[]> csar = ZipUtils.readZip(csarFile, false);
2419 String vfReousrceName = "resouceName";
2420 String mainTemplateName = "Definitions/service_import_template.yml";
2422 Optional<String> keyOp = csar.keySet().stream().filter(k -> k.endsWith("service-Ser09080002-template.yml")).findAny();
2423 byte[] mainTemplateService = keyOp.map(csar::get).orElse(null);
2424 assertNotNull(mainTemplateService);
2425 final String mainTemplateContent = new String(mainTemplateService);
2427 return new ServiceCsarInfo(user, csarUuid, csar, vfReousrceName, mainTemplateName, mainTemplateContent, false);
2428 } catch (URISyntaxException | ZipException e) {
2434 protected CsarUtils.NonMetaArtifactInfo getNonMetaArtifactInfo() {
2435 String artifactName = "artifactName", path = "/src/test/resources/valid_vf.csar", artifactType = "AAI_SERVICE_MODEL";
2436 ArtifactGroupTypeEnum artifactGroupType = ArtifactGroupTypeEnum.TOSCA;
2437 String rootPath = System.getProperty("user.dir");
2439 byte[] data = new byte[0];
2440 path2 = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
2442 data = Files.readAllBytes(path2);
2443 } catch (IOException e) {
2444 e.printStackTrace();
2446 String artifactUniqueId = "artifactUniqueId";
2447 boolean isFromCsar = true;
2448 CsarUtils.NonMetaArtifactInfo nonMetaArtifactInfo = new CsarUtils.NonMetaArtifactInfo(artifactName,
2449 path, artifactType, artifactGroupType, data, artifactUniqueId, isFromCsar);
2450 return nonMetaArtifactInfo;
2454 protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
2455 ResponseFormat actualResponse = e.getResponseFormat() != null ?
2456 e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
2457 assertParseResponse(actualResponse, expectedStatus, variables);
2460 private void assertParseResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
2461 ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
2462 assertThat(expectedResponse.getStatus()).isEqualTo(actualResponse.getStatus());
2463 assertThat(expectedResponse.getFormattedMessage()).isEqualTo(actualResponse.getFormattedMessage());