2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019 Nokia. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.vid.mso;
24 import static org.assertj.core.api.Assertions.assertThat;
25 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
26 import static org.assertj.core.api.Assertions.tuple;
27 import static org.hamcrest.Matchers.allOf;
28 import static org.hamcrest.Matchers.containsString;
29 import static org.hamcrest.Matchers.equalTo;
30 import static org.hamcrest.Matchers.hasEntry;
31 import static org.hamcrest.Matchers.instanceOf;
32 import static org.hamcrest.Matchers.is;
33 import static org.hamcrest.Matchers.startsWith;
34 import static org.junit.Assert.assertEquals;
35 import static org.mockito.ArgumentMatchers.any;
36 import static org.mockito.ArgumentMatchers.anyBoolean;
37 import static org.mockito.ArgumentMatchers.anyString;
38 import static org.mockito.ArgumentMatchers.argThat;
39 import static org.mockito.ArgumentMatchers.endsWith;
40 import static org.mockito.ArgumentMatchers.eq;
41 import static org.mockito.ArgumentMatchers.isA;
42 import static org.mockito.BDDMockito.given;
43 import static org.mockito.Mockito.doThrow;
44 import static org.mockito.Mockito.mock;
45 import static org.mockito.Mockito.verify;
46 import static org.mockito.Mockito.when;
47 import static org.onap.vid.controller.MsoController.CONFIGURATION_ID;
48 import static org.onap.vid.controller.MsoController.REQUEST_TYPE;
49 import static org.onap.vid.controller.MsoController.SVC_INSTANCE_ID;
50 import static org.onap.vid.controller.MsoController.VNF_INSTANCE_ID;
51 import static org.onap.vid.model.probes.ExternalComponentStatus.Component.MSO;
52 import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath;
54 import com.fasterxml.jackson.core.type.TypeReference;
55 import com.fasterxml.jackson.databind.ObjectMapper;
56 import io.joshworks.restclient.http.HttpResponse;
57 import java.io.IOException;
59 import java.nio.file.Path;
60 import java.nio.file.Paths;
61 import java.util.ArrayList;
62 import java.util.HashMap;
63 import java.util.List;
65 import java.util.UUID;
66 import java.util.stream.Collectors;
67 import javax.ws.rs.BadRequestException;
68 import org.apache.commons.io.IOUtils;
69 import org.apache.http.HttpException;
70 import org.hamcrest.Matcher;
71 import org.hamcrest.MatcherAssert;
72 import org.jetbrains.annotations.NotNull;
73 import org.mockito.ArgumentMatcher;
74 import org.mockito.Mock;
75 import org.mockito.Mockito;
76 import org.mockito.MockitoAnnotations;
77 import org.mockito.hamcrest.MockitoHamcrest;
78 import org.onap.portalsdk.core.util.SystemProperties;
79 import org.onap.vid.aai.ExceptionWithRequestInfo;
80 import org.onap.vid.aai.HttpResponseWithRequestInfo;
81 import org.onap.vid.changeManagement.ChangeManagementRequest;
82 import org.onap.vid.changeManagement.WorkflowRequestDetail;
83 import org.onap.vid.controller.OperationalEnvironmentController;
84 import org.onap.vid.exceptions.GenericUncheckedException;
85 import org.onap.vid.model.SOWorkflowList;
86 import org.onap.vid.model.SoftDeleteRequest;
87 import org.onap.vid.model.probes.ErrorMetadata;
88 import org.onap.vid.model.probes.ExternalComponentStatus;
89 import org.onap.vid.model.probes.HttpRequestMetadata;
90 import org.onap.vid.mso.model.CloudConfiguration;
91 import org.onap.vid.mso.model.ModelInfo;
92 import org.onap.vid.mso.model.OperationalEnvironmentActivateInfo;
93 import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo;
94 import org.onap.vid.mso.model.RequestInfo;
95 import org.onap.vid.mso.model.RequestParameters;
96 import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails;
97 import org.onap.vid.mso.rest.Request;
98 import org.onap.vid.mso.rest.RequestDetails;
99 import org.onap.vid.mso.rest.RequestDetailsWrapper;
100 import org.onap.vid.mso.rest.Task;
101 import org.onap.vid.testUtils.TestUtils;
102 import org.springframework.http.HttpMethod;
103 import org.springframework.http.HttpStatus;
104 import org.springframework.test.context.ContextConfiguration;
105 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
106 import org.testng.annotations.BeforeClass;
107 import org.testng.annotations.DataProvider;
108 import org.testng.annotations.Test;
110 @ContextConfiguration(classes = {SystemProperties.class})
111 public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests {
113 private static final ObjectMapper objectMapper = new ObjectMapper();
114 private static final String MY_PRETTY_URL = "my pretty url";
117 private MsoInterface msoInterface;
120 private SOWorkflowList workflowList;
123 private HttpResponse<SOWorkflowList> workflowListResponse;
126 private RequestDetails msoRequest;
129 private MsoBusinessLogicImpl msoBusinessLogic;
130 private String userId = "testUserId";
131 private String operationalEnvironmentId = "testOperationalEnvironmentId";
134 public void setUp() {
135 MockitoAnnotations.initMocks(this);
136 msoBusinessLogic = new MsoBusinessLogicImpl(msoInterface);
140 public void shouldProperlyCreateConfigurationInstanceWithCorrectServiceInstanceId() throws Exception {
142 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
143 String endpointTemplate = String.format("/serviceInstances/v6/%s/configurations", serviceInstanceId);
144 RequestDetailsWrapper requestDetailsWrapper = createRequestDetails();
145 MsoResponseWrapper expectedResponse = createOkResponse();
146 given(msoInterface.createConfigurationInstance(requestDetailsWrapper, endpointTemplate))
147 .willReturn(expectedResponse);
150 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
151 .createConfigurationInstance(requestDetailsWrapper, serviceInstanceId);
154 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
157 private RequestDetailsWrapper createRequestDetails() throws Exception {
158 final URL resource = this.getClass().getResource("/payload_jsons/mso_request_create_configuration.json");
159 RequestDetails requestDetails = objectMapper.readValue(resource, RequestDetails.class);
160 return new RequestDetailsWrapper(requestDetails);
164 public void shouldProperlyValidateEndpointPathWheEendPointIsNotEmptyAndValid() {
165 System.setProperty("TestEnv", "123");
166 String foundEndPoint = validateEndpointPath("TestEnv");
167 assertEquals("123", foundEndPoint);
171 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathEndPointIsNotEmptyAndValid() {
172 assertThatExceptionOfType(RuntimeException.class)
173 .isThrownBy(() -> validateEndpointPath("NotExists"));
177 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathWhenEndPointIsNotEmptyButDoesntExists() {
178 String endPoint = "EmptyEndPoint";
179 System.setProperty(endPoint, "");
180 assertThatExceptionOfType(GenericUncheckedException.class)
181 .isThrownBy(() -> validateEndpointPath(endPoint))
182 .withMessage(endPoint + " env variable is not defined");
186 public void shouldProperlyCreateSvcInstanceWithProperParameters() {
188 MsoResponseWrapper expectedResponse = createOkResponse();
189 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
190 given(msoInterface.createSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
192 MsoResponseWrapper response = msoBusinessLogic.createSvcInstance(msoRequest);
195 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
199 public void shouldProperlyCreateE2eSvcInstanceWithProperParameters() {
201 MsoResponseWrapper expectedResponse = createOkResponse();
202 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE);
203 given(msoInterface.createE2eSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
206 MsoResponseWrapper response = msoBusinessLogic.createE2eSvcInstance(msoRequest);
209 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
213 public void shouldProperlyCreateVnfWithProperParameters() {
215 MsoResponseWrapper expectedResponse = createOkResponse();
216 String endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE);
217 String vnfInstanceId = "testVnfInstanceTempId";
218 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
220 given(msoInterface.createVnf(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
222 MsoResponseWrapper response = msoBusinessLogic.createVnf(msoRequest, vnfInstanceId);
225 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
229 public void shouldProperlyCreateNwInstanceWithProperParameters() {
231 MsoResponseWrapper expectedResponse = createOkResponse();
232 String vnfInstanceId = "testNwInstanceTempId";
233 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
234 String nw_endpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
236 given(msoInterface.createNwInstance(msoRequest, nw_endpoint)).willReturn(expectedResponse);
238 MsoResponseWrapper response = msoBusinessLogic.createNwInstance(msoRequest, vnfInstanceId);
241 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
245 public void shouldProperlyCreateVolumeGroupInstanceWithProperParameters() {
246 MsoResponseWrapper expectedResponse = createOkResponse();
247 String serviceInstanceId = "testServiceInstanceTempId";
248 String vnfInstanceId = "testVnfInstanceTempId";
249 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
250 String vnfEndpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
251 vnfEndpoint = vnfEndpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
253 given(msoInterface.createVolumeGroupInstance(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
255 MsoResponseWrapper response = msoBusinessLogic.createVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId);
258 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
262 public void shouldProperlyCreateVfModuleInstanceWithProperParameters() {
263 MsoResponseWrapper expectedResponse = createOkResponse();
264 String serviceInstanceId = "testServiceInstanceTempId";
265 String vnfInstanceId = "testVnfInstanceTempId";
266 String partial_endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
267 String vf_module_endpoint = partial_endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
268 vf_module_endpoint = vf_module_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
270 given(msoInterface.createVfModuleInstance(msoRequest, vf_module_endpoint)).willReturn(expectedResponse);
272 MsoResponseWrapper response = msoBusinessLogic.createVfModuleInstance(msoRequest, serviceInstanceId, vnfInstanceId);
275 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
279 public void shouldProperlyDeleteE2eSvcInstanceWithProperParameters() {
280 MsoResponseWrapper expectedResponse = createOkResponse();
281 String serviceInstanceId = "testDeleteE2eSvcInstanceTempId";
282 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE) + "/" + serviceInstanceId;
284 given(msoInterface.deleteE2eSvcInstance(msoRequest, endpoint)).willReturn(expectedResponse);
286 MsoResponseWrapper response = msoBusinessLogic.deleteE2eSvcInstance(msoRequest, serviceInstanceId);
289 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
293 public Object[][] deleteSvcInstanceShouldDelete() {
294 return new Object[][]{{"Active"}, {"unexpected-status"}};
298 public Object[][] deleteSvcInstanceShouldUnassign() {
299 return new Object[][]{{"Created"}, {"Pendingdelete"}, {"pending-Delete"}, {"Assigned"}};
303 @Test(dataProvider = "deleteSvcInstanceShouldDelete")
304 public void shouldProperlyDeleteSvcInstanceWithProperParametersShouldDelete(String status) {
306 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s";
307 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
308 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
309 RequestDetails requestDetails = new RequestDetails();
310 MsoResponseWrapper expectedResponse = createOkResponse();
311 given(msoInterface.deleteSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
314 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
315 .deleteSvcInstance(requestDetails, serviceInstanceId, status);
318 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
321 @Test(dataProvider = "deleteSvcInstanceShouldUnassign")
322 public void shouldProperlyDeleteSvcInstanceWithProperParametersShouldUnassign(String status) {
324 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/unassign";
325 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
326 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
327 RequestDetails requestDetails = new RequestDetails();
328 MsoResponseWrapper expectedResponse = createOkResponse();
329 given(msoInterface.unassignSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
332 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
333 .deleteSvcInstance(requestDetails, serviceInstanceId, status);
336 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
340 public void shouldProperlyDeleteVnfWithProperParameters() {
342 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s";
343 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
344 String vnfInstanceId = "testVnfInstanceTempId";
345 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
346 RequestDetails requestDetails = new RequestDetails();
347 MsoResponseWrapper expectedResponse = createOkResponse();
348 given(msoInterface.deleteVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
351 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
352 .deleteVnf(requestDetails, serviceInstanceId, vnfInstanceId);
355 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
359 public void shouldProperlyDeleteVfModuleWithProperParameters() {
361 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s/vfModules/%s";
362 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
363 String vnfInstanceId = "testVnfInstanceTempId";
364 String vfModuleId = "testVfModuleId";
365 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId, vfModuleId);
366 RequestDetails requestDetails = new RequestDetails();
367 MsoResponseWrapper expectedResponse = createOkResponse();
368 given(msoInterface.deleteVfModule(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
371 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
372 .deleteVfModule(requestDetails, serviceInstanceId, vnfInstanceId, vfModuleId);
374 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
378 public void shouldProperlyDeleteVolumeGroupInstanceWithProperParameters() {
379 MsoResponseWrapper expectedResponse = createOkResponse();
380 String serviceInstanceId = "testServiceInstanceTempId";
381 String vnfInstanceId = "testVnfInstanceTempId";
382 String volumeGroupId = "testvolumeGroupIdTempId";
384 String deleteVolumeGroupEndpoint = getDeleteVolumeGroupEndpoint(serviceInstanceId, vnfInstanceId, volumeGroupId);
386 given(msoInterface.deleteVolumeGroupInstance(msoRequest, deleteVolumeGroupEndpoint)).willReturn(expectedResponse);
388 MsoResponseWrapper response = msoBusinessLogic.deleteVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId, volumeGroupId);
391 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
395 private String getDeleteVolumeGroupEndpoint(String serviceInstanceId, String vnfInstanceId, String volumeGroupId) {
396 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
397 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
398 String vnfEndpoint = svc_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
399 return vnfEndpoint + "/" + volumeGroupId;
403 public void shouldProperlyDeleteNwInstanceWithProperParameters() {
404 MsoResponseWrapper expectedResponse = createOkResponse();
405 String serviceInstanceId = "testServiceInstanceTempId";
406 String networkInstanceId = "testNetworkInstanceTempId";
408 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
409 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
410 String delete_nw_endpoint = svc_endpoint + "/" + networkInstanceId;
412 given(msoInterface.deleteNwInstance(msoRequest, delete_nw_endpoint)).willReturn(expectedResponse);
414 MsoResponseWrapper response = msoBusinessLogic.deleteNwInstance(msoRequest, serviceInstanceId, networkInstanceId);
417 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
421 public void shouldProperlyGetOrchestrationRequestWithProperParameters() {
422 MsoResponseWrapper expectedResponse = createOkResponse();
423 String requestId = "testRequestTempId";
424 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
425 String path = p + "/" + requestId;
427 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
429 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequest(requestId);
430 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
433 @Test(expectedExceptions = MsoTestException.class)
434 public void shouldProperlyGetOrchestrationRequestWithWrongParameters() {
435 String requestId = "testWrongRequestTempId";
436 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
437 String path = p + "/" + requestId;
439 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
441 msoBusinessLogic.getOrchestrationRequest(requestId);
445 public void shouldProperlyGetOrchestrationRequestsWithProperParameters() {
446 MsoResponseWrapper expectedResponse = createOkResponse();
447 String filterString = "testRequestsTempId";
448 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
449 String path = url + filterString;
451 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
453 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequests(filterString);
454 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
457 @Test(expectedExceptions = MsoTestException.class)
458 public void shouldThrowExceptionWhenGetOrchestrationRequestsWithWrongParameters() {
459 String filterString = "testRequestsTempId";
460 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
461 String path = p + filterString;
463 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
465 msoBusinessLogic.getOrchestrationRequests(filterString);
469 public void shouldSendProperScaleOutRequest() throws IOException {
471 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
472 String vnfInstanceId = "testVnfInstanceTempId";
473 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s/vfModules/scaleOut";
474 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
475 org.onap.vid.changeManagement.RequestDetails requestDetails = readRequest();
476 org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> expectedRequest = readExpectedRequest();
477 MsoResponseWrapper expectedMsoResponseWrapper = createOkResponse();
480 .scaleOutVFModuleInstance(argThat(new MsoRequestWrapperMatcher(expectedRequest)),
482 .willReturn(expectedMsoResponseWrapper);
485 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
486 .scaleOutVfModuleInstance(requestDetails, serviceInstanceId, vnfInstanceId);
489 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedMsoResponseWrapper);
492 private org.onap.vid.changeManagement.RequestDetails readRequest() throws IOException {
493 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayload.json");
494 URL url = this.getClass().getClassLoader().getResource(path.toString());
495 return objectMapper.readValue(url, org.onap.vid.changeManagement.RequestDetails.class);
498 private org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> readExpectedRequest()
500 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayloadToMso.json");
501 URL url = this.getClass().getClassLoader().getResource(path.toString());
502 return objectMapper.readValue(url,
503 new TypeReference<org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails>>() {
509 public void shouldFilterOutOrchestrationRequestsNotAllowedInDashboard() throws Exception {
511 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_response.json");
512 String scaleOutActionOrchestrationRequests = getFileContentAsString("mso_action_scaleout_sample_response.json");
514 HttpResponse<String> httpResponse = mockForGetOrchestrationRequest();
515 given(httpResponse.getBody())
516 .willReturn(vnfModelTypeOrchestrationRequests, scaleOutActionOrchestrationRequests);
519 List<Request> filteredOrchestrationReqs = msoBusinessLogic.getOrchestrationRequestsForDashboard();
521 assertThat(filteredOrchestrationReqs).hasSize(3);
522 assertThat(MsoBusinessLogicImpl.DASHBOARD_ALLOWED_TYPES)
523 .containsAll(filteredOrchestrationReqs
525 .map(el -> el.getRequestType().toUpperCase())
526 .collect(Collectors.toList()));
527 assertThat(filteredOrchestrationReqs)
528 .extracting(Request::getRequestScope)
529 .containsOnly("vnf", "vfModule");
532 @Test(expectedExceptions = GenericUncheckedException.class)
533 public void shouldThrowGenericUncheckedExceptionWhenGetOrchestrationRequestsForDashboardWithWrongJsonFile_() throws Exception {
535 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_wrong_response.json");
537 mockForGetOrchestrationRequest(200, vnfModelTypeOrchestrationRequests);
540 msoBusinessLogic.getOrchestrationRequestsForDashboard();
544 public void shouldProperlyGetManualTasksByRequestIdWithProperParameters() throws Exception {
546 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_test.json");
548 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
550 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
551 any(RestObject.class)))
552 .willReturn(msoResponseWrapperMock);
553 given(msoResponseWrapperMock.getEntity())
554 .willReturn(manualTasksList);
557 List<Task> filteredOrchestrationReqs = msoBusinessLogic.getManualTasksByRequestId("TestId");
560 assertThat(filteredOrchestrationReqs).hasSize(2);
561 assertThat(filteredOrchestrationReqs).extracting("taskId", "type").
563 tuple("123123abc", "testTask"),
564 tuple("321321abc", "testTask")
568 @Test(expectedExceptions = GenericUncheckedException.class)
569 public void shouldThrowGenericUncheckedExceptionWhenGetManualTasksByRequestIdWithWrongJsonFile() throws Exception {
571 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_wrongJson_test.json");
573 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
575 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
576 any(RestObject.class)))
577 .willReturn(msoResponseWrapperMock);
578 given(msoResponseWrapperMock.getEntity())
579 .willReturn(manualTasksList);
582 msoBusinessLogic.getManualTasksByRequestId("TestId");
585 @Test(expectedExceptions = MsoTestException.class)
586 public void getManualTasksByRequestIdWithArgument_shouldThrowException() {
589 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
590 any(RestObject.class)))
591 .willThrow(MsoTestException.class);
594 msoBusinessLogic.getManualTasksByRequestId("TestId");
598 public void shouldProperlyCompleteManualTaskWithProperParameters() {
600 MsoResponseWrapper expectedResponse = createOkResponse();
601 RequestDetails requestDetails = new RequestDetails();
602 String taskId = "testTaskId";
604 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
605 String path = url + "/" + taskId + "/complete";
607 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willReturn(expectedResponse);
610 MsoResponseWrapper response = msoBusinessLogic.completeManualTask(requestDetails, taskId);
613 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
618 public void shouldProperlyActivateServiceInstanceWithProperParameters() {
620 RequestDetails detail = new RequestDetails();
621 String taskId = "testTaskId";
623 RestObject<String> restObjStr = new RestObject<>();
625 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
628 MsoResponseWrapper response = msoBusinessLogic.activateServiceInstance(detail, taskId);
631 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
635 @Test(expectedExceptions = MsoTestException.class)
636 public void shouldThrowExceptionWhenManualTaskWithWrongParameters() {
638 RequestDetails requestDetails = new RequestDetails();
641 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
642 String path = url + "/" + taskId + "/complete";
644 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willThrow(new MsoTestException("empty path"));
647 msoBusinessLogic.completeManualTask(requestDetails, taskId);
651 public void shouldProperlyUpdateVnfWithProperParameters() {
653 MsoResponseWrapper expectedResponse = createOkResponse();
654 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
656 String serviceInstanceId = "testServiceId";
657 String vnfInstanceId = "testVnfInstanceId";
659 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
660 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
661 vnfEndpoint = vnfEndpoint + '/' + vnfInstanceId;
663 given(msoInterface.updateVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
666 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnf(requestDetails, serviceInstanceId, vnfInstanceId);
669 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
673 public void shouldProperlyReplaceVnfWithProperParameters() {
675 MsoResponseWrapper expectedResponse = createOkResponse();
676 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
678 String serviceInstanceId = "testServiceId";
679 String vnfInstanceId = "testVnfInstanceId";
681 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
682 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
683 vnfEndpoint = vnfEndpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
684 vnfEndpoint = vnfEndpoint.replace(REQUEST_TYPE, ChangeManagementRequest.MsoChangeManagementRequest.REPLACE);
686 given(msoInterface.replaceVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
689 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.replaceVnf(requestDetails, serviceInstanceId, vnfInstanceId);
692 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
696 public void shouldProperlyGenerateInPlaceMsoRequestWithProperParameters() {
698 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
700 requestDetails.setVnfInstanceId("testVnfInstanceId");
701 requestDetails.setVnfName("testVnfName");
702 requestDetails.setRequestParameters(new RequestParameters());
704 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
705 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
706 "\"new_software_version\": \"testNewSoftwareParam\"," +
707 "\"operations_timeout\": \"100\"" +
710 RequestDetails inPlaceSoftwareUpdateRequest = new RequestDetails();
711 inPlaceSoftwareUpdateRequest.setCloudConfiguration(requestDetails.getCloudConfiguration());
712 inPlaceSoftwareUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
713 inPlaceSoftwareUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
714 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
715 requestDetailsWrapper.requestDetails = inPlaceSoftwareUpdateRequest;
718 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
721 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
724 @Test(expectedExceptions = BadRequestException.class)
725 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithParametersWithWrongCharacters() {
727 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
729 requestDetails.setVnfInstanceId("testVnfInstanceId");
730 requestDetails.setVnfName("testVnfName");
731 requestDetails.setRequestParameters(new RequestParameters());
733 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
734 "\"existing_software_version\": \"#####\"," +
735 "\"new_software_version\": \"testNewSoftwareParam\"" +
739 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
742 @Test(expectedExceptions = BadRequestException.class)
743 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithWrongParameters() {
745 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
747 requestDetails.setVnfInstanceId("testVnfInstanceId");
748 requestDetails.setVnfName("testVnfName");
749 requestDetails.setRequestParameters(new RequestParameters());
751 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
752 "\"test-wrong-parameter\": \"testParam\"," +
753 "\"new_software_version\": \"testNewSoftwareParam\"" +
757 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
761 public void shouldProprleyGenerateConfigMsoRequestWithProperParameters() {
763 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
765 requestDetails.setVnfInstanceId("testVnfInstanceId");
766 requestDetails.setVnfName("testVnfName");
767 requestDetails.setRequestParameters(new RequestParameters());
769 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
770 "\"request-parameters\": \"testRequestParam\"," +
771 "\"configuration-parameters\": \"testConfigParams\"" +
774 RequestDetails configUpdateRequest = new RequestDetails();
775 configUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
776 configUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
778 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
779 requestDetailsWrapper.requestDetails = configUpdateRequest;
782 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateConfigMsoRequest(requestDetails);
785 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
788 @Test(expectedExceptions = BadRequestException.class)
789 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAdditionalParameters() {
791 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
793 requestDetails.setVnfInstanceId("testVnfInstanceId");
794 requestDetails.setVnfName("testVnfName");
795 requestDetails.setRequestParameters(null);
798 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
801 @Test(expectedExceptions = BadRequestException.class)
802 public void shouldThrowExceptionWhenGenerateConfigMsoRequestWithWrongPayload() {
804 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
806 requestDetails.setVnfInstanceId("testVnfInstanceId");
807 requestDetails.setVnfName("testVnfName");
808 requestDetails.setRequestParameters(new RequestParameters());
810 requestDetails.getRequestParameters().setAdditionalProperty("payload", null);
813 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
816 @Test(expectedExceptions = BadRequestException.class)
817 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAnyParameter() {
819 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
821 requestDetails.setVnfInstanceId("testVnfInstanceId");
822 requestDetails.setVnfName("testVnfName");
823 requestDetails.setRequestParameters(new RequestParameters());
825 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
826 "\"test-wrong-parameter\": \"testParam\"," +
827 "\"configuration-parameters\": \"testConfigParam\"" +
831 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
835 public void shouldProperlyGetActivateFabricConfigurationPathWithProperParameters() {
837 String serviceInstanceId = "testServiceId";
838 String path = validateEndpointPath(MsoProperties.MSO_REST_API_SERVICE_INSTANCE_CREATE);
839 path += "/" + serviceInstanceId + "/activateFabricConfiguration";
842 String response = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
845 assertThat(response).isEqualTo(path);
849 public void shouldProperlyGetDeactivateAndCloudDeletePathWithProperParameters() {
851 String serviceInstanceId = "testServiceId";
852 String vnfInstanceId = "testVnfInstanceId";
853 String vfModuleInstanceId = "testVfModuleInstanceId";
854 String path = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
855 path = path.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
856 path = path.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
857 path += "/" + vfModuleInstanceId + "/deactivateAndCloudDelete";
860 String response = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
863 assertThat(response).isEqualTo(path);
867 public void shouldProperlyBuildRequestDetailsForSoftDeleteWithProperParameters() {
869 SoftDeleteRequest softDeleteRequest = new SoftDeleteRequest();
870 RequestDetails requestDetails = new RequestDetails();
872 String userId = "testUserID";
873 String tenantId = "testTenantId ";
874 String cloudRegionId = "testCloudId";
877 RequestInfo requestInfo = new RequestInfo();
878 requestInfo.setSource("VID");
879 requestInfo.setRequestorId(userId);
880 requestDetails.setRequestInfo(requestInfo);
882 CloudConfiguration cloudConfiguration = new CloudConfiguration();
883 cloudConfiguration.setTenantId(tenantId);
884 cloudConfiguration.setLcpCloudRegionId(cloudRegionId);
885 requestDetails.setCloudConfiguration(cloudConfiguration);
887 setModelInfoForRequestDetails(requestDetails);
889 setRequestParametersForRequestDetails(requestDetails);
891 softDeleteRequest.setLcpCloudRegionId(cloudRegionId);
892 softDeleteRequest.setTenantId(tenantId);
893 softDeleteRequest.setUserId(userId);
896 RequestDetails response = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest);
899 assertThat(response).isEqualTo(requestDetails);
902 private void setRequestParametersForRequestDetails(RequestDetails requestDetails) {
903 RequestParameters requestParameters = new RequestParameters();
904 requestParameters.setTestApi("GR_API");
905 requestDetails.setRequestParameters(requestParameters);
908 private void setModelInfoForRequestDetails(RequestDetails requestDetails) {
909 ModelInfo modelInfo = new ModelInfo();
910 modelInfo.setModelType("vfModule");
911 requestDetails.setModelInfo(modelInfo);
915 public void shouldProperlyUpdateVnfSoftwareWithProperParameters() {
917 String serviceInstanceId = "testServiceId";
918 String vnfInstanceId = "testVnfInstanceId";
920 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
922 requestDetails.setVnfInstanceId("testVnfInstanceId");
923 requestDetails.setVnfName("testVnfName");
924 requestDetails.setRequestParameters(new RequestParameters());
926 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
927 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
928 "\"new_software_version\": \"testNewSoftwareParam\"," +
929 "\"operations_timeout\": \"100\"" +
932 MsoResponseWrapper okResponse = createOkResponse();
934 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
937 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfSoftware(requestDetails, serviceInstanceId, vnfInstanceId);
940 assertThat(response).isEqualToComparingFieldByField(okResponse);
944 public void shouldProperlyUpdateVnfConfigWithProperParameters() {
946 String serviceInstanceId = "testServiceId";
947 String vnfInstanceId = "testVnfInstanceId";
949 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
951 requestDetails.setVnfInstanceId("testVnfInstanceId");
952 requestDetails.setVnfName("testVnfName");
953 requestDetails.setRequestParameters(new RequestParameters());
955 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
956 "\"request-parameters\": \"testRequestParam\"," +
957 "\"configuration-parameters\": \"testConfigParams\"" +
960 MsoResponseWrapper okResponse = createOkResponse();
962 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
965 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfConfig(requestDetails, serviceInstanceId, vnfInstanceId);
968 assertThat(response).isEqualToComparingFieldByField(okResponse);
972 public void shouldProperlyDeleteConfigurationWithProperParameters() {
974 String serviceInstanceId = "testServiceId";
975 String configurationId = "testConfigurationId";
977 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
979 requestDetails.setVnfInstanceId("testVnfInstanceId");
980 requestDetails.setVnfName("testVnfName");
982 MsoResponseWrapper okResponse = createOkResponse();
983 RequestDetailsWrapper wrappedRequestDetail = new RequestDetailsWrapper(requestDetails);
985 given(msoInterface.deleteConfiguration(eq(wrappedRequestDetail), any(String.class))).willReturn(okResponse);
988 MsoResponseWrapper response = msoBusinessLogic.deleteConfiguration(wrappedRequestDetail, serviceInstanceId, configurationId);
991 assertThat(response).isEqualToComparingFieldByField(okResponse);
995 public void shouldProperlySetConfigurationActiveStatusActiveWithProperParameters() {
997 String serviceInstanceId = "testServiceId";
998 String configurationId = "testConfigurationId";
1000 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1002 requestDetails.setVnfInstanceId("testVnfInstanceId");
1003 requestDetails.setVnfName("testVnfName");
1005 MsoResponseWrapper okResponse = createOkResponse();
1008 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1009 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1010 .replace(CONFIGURATION_ID, configurationId)
1013 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1016 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, true);
1019 assertThat(response).isEqualToComparingFieldByField(okResponse);
1023 public void shouldProperlySetConfigurationActiveStatusDeactivateWithProperParameters() {
1025 String serviceInstanceId = "testServiceId";
1026 String configurationId = "testConfigurationId";
1028 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1030 requestDetails.setVnfInstanceId("testVnfInstanceId");
1031 requestDetails.setVnfName("testVnfName");
1033 MsoResponseWrapper okResponse = createOkResponse();
1036 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1037 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1038 .replace(CONFIGURATION_ID, configurationId)
1041 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1044 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, false);
1047 assertThat(response).isEqualToComparingFieldByField(okResponse);
1051 public void shouldProperlySetServiceInstanceStatusActiveWithProperParameters() {
1053 String serviceInstanceId = "testServiceId";
1054 MsoResponseWrapper okResponse = createOkResponse();
1056 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1058 given(msoInterface.setServiceInstanceStatus(eq(requestDetails), endsWith(serviceInstanceId + "/activate"))).willReturn(okResponse);
1061 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, true);
1064 assertThat(response).isEqualToComparingFieldByField(okResponse);
1068 public void shouldProperlySetServiceInstanceStatusDeactivateWithProperParameters() {
1070 String serviceInstanceId = "testServiceId";
1071 MsoResponseWrapper okResponse = createOkResponse();
1073 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1075 given(msoInterface.setServiceInstanceStatus(eq(requestDetails), endsWith(serviceInstanceId + "/deactivate"))).willReturn(okResponse);
1078 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, false);
1081 assertThat(response).isEqualToComparingFieldByField(okResponse);
1084 @Test(expectedExceptions = MsoTestException.class)
1085 public void shouldThrowExceptionWhenSetServiceInstanceStatusWithWrongParameters() {
1087 String serviceInstanceId = "testServiceId";
1089 doThrow(new MsoTestException("testException")).
1090 when(msoInterface).setServiceInstanceStatus(eq(null), any(String.class));
1093 msoBusinessLogic.setServiceInstanceStatus(null, serviceInstanceId, true);
1097 public void shouldProperlySetPortOnConfigurationStatusEnableWithProperParameters() {
1099 String serviceInstanceId = "testServiceId";
1100 String configurationId = "testConfigurationId";
1101 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1102 requestDetails.setVnfInstanceId("testVnfInstanceId");
1103 requestDetails.setVnfName("testVnfName");
1104 MsoResponseWrapper okResponse = createOkResponse();
1106 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1107 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1108 .replace(CONFIGURATION_ID, configurationId)
1111 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1114 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, true);
1117 assertThat(response).isEqualToComparingFieldByField(okResponse);
1121 public void shouldProperlySetPortOnConfigurationStatusDisableWithProperParameters() {
1123 String serviceInstanceId = "testServiceId";
1124 String configurationId = "testConfigurationId";
1125 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1126 requestDetails.setVnfInstanceId("testVnfInstanceId");
1127 requestDetails.setVnfName("testVnfName");
1128 MsoResponseWrapper okResponse = createOkResponse();
1130 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1131 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1132 .replace(CONFIGURATION_ID, configurationId)
1135 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1138 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, false);
1141 assertThat(response).isEqualToComparingFieldByField(okResponse);
1145 public void shouldProperlyCreateOperationalEnvironmentActivationRequestDetailsWithProperParameters() {
1147 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1149 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> requestDetails = msoBusinessLogic.createOperationalEnvironmentActivationRequestDetails(details);
1152 assertThat(requestDetails.requestDetails.getRequestParameters().getAdditionalProperties().values()).contains(details.getWorkloadContext(), details.getManifest());
1153 assertThat(requestDetails.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1157 public void shouldProperlyGetOperationalEnvironmentActivationPathWithProperParameters() {
1159 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1162 String response = msoBusinessLogic.getOperationalEnvironmentActivationPath(details);
1165 assertThat(response).contains(operationalEnvironmentId);
1169 public void shouldProperlyCreateOperationalEnvironmentDeactivationRequestDetailsWithProperParameters() {
1171 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1174 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> response;
1175 response = msoBusinessLogic.createOperationalEnvironmentDeactivationRequestDetails(details);
1178 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1182 public void shouldProperlyGetCloudResourcesRequestsStatusPathWithProperParameters() {
1184 String requestId = "testRequestId";
1187 String response = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId);
1190 assertThat(response).contains(requestId);
1194 public void shouldProperlyGetOperationalEnvironmentDeactivationPathWithProperParameters() {
1196 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1199 String response = msoBusinessLogic.getOperationalEnvironmentDeactivationPath(details);
1202 assertThat(response).contains(operationalEnvironmentId);
1206 public void shouldProperlyGetOperationalEnvironmentCreationPathWithProperParameters() {
1208 String response = msoBusinessLogic.getOperationalEnvironmentCreationPath();
1211 assertThat(response).isNotBlank();
1215 public void shouldProperlyConvertParametersToRequestDetailsWithProperParameters() {
1217 OperationalEnvironmentController.OperationalEnvironmentCreateBody input = createTestOperationalEnvironmentCreateBody();
1220 org.onap.vid.changeManagement.RequestDetailsWrapper<OperationEnvironmentRequestDetails> response
1221 = msoBusinessLogic.convertParametersToRequestDetails(input, userId);
1224 assertThat(response.requestDetails.getRequestInfo().getInstanceName()).isEqualTo(input.getInstanceName());
1225 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1226 assertThat(response.requestDetails.getRequestParameters().getOperationalEnvironmentType()).isEqualTo(input.getOperationalEnvironmentType());
1227 assertThat(response.requestDetails.getRequestParameters().getTenantContext()).isEqualTo(input.getTenantContext());
1228 assertThat(response.requestDetails.getRequestParameters().getWorkloadContext()).isEqualTo(input.getWorkloadContext());
1232 public void shouldProperlyRemoveRelationshipFromServiceInstanceWithProperParameters() {
1234 MsoResponseWrapper expectedResponse = createOkResponse();
1235 String serviceInstanceId = "testServiceId";
1236 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1238 given(msoInterface.removeRelationshipFromServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/removeRelationships")))
1239 .willReturn(expectedResponse);
1242 MsoResponseWrapper response = msoBusinessLogic.removeRelationshipFromServiceInstance(requestDetails, serviceInstanceId);
1245 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1249 public void shouldProperlyAddRelationshipToServiceInstanceWithProperParameters() {
1251 MsoResponseWrapper expectedResponse = createOkResponse();
1252 String serviceInstanceId = "testServiceId";
1253 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1255 given(msoInterface.addRelationshipToServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/addRelationships")))
1256 .willReturn(expectedResponse);
1259 MsoResponseWrapper response = msoBusinessLogic.addRelationshipToServiceInstance(requestDetails, serviceInstanceId);
1262 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1266 public void shouldProperlyRequestTypeFromValueWithValidParameters() {
1268 String testValue = "createInstance";
1270 MsoBusinessLogicImpl.RequestType response = MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1273 assertThat(response.toString()).isEqualTo(testValue);
1276 @Test(expectedExceptions = IllegalArgumentException.class)
1277 public void shouldThrowExceptionWhenRequestTypeFromValueWithWrongParameter() {
1279 String testValue = "notExistingParameter";
1281 MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1285 public void shouldProperlyInvokeVnfWorkflowWithValidParameters() {
1287 MsoResponseWrapper okResponse = createOkResponse();
1288 WorkflowRequestDetail request = createWorkflowRequestDetail();
1289 UUID serviceInstanceId = new UUID(1,10);
1290 UUID vnfInstanceId = new UUID(2,20);
1291 UUID workflow_UUID = new UUID(3,30);
1292 String path = "/instanceManagement/v1/serviceInstances/"+serviceInstanceId+"/vnfs/"+vnfInstanceId+"/workflows/"+workflow_UUID;
1294 given(msoInterface.invokeWorkflow(eq(request), eq(path), MockitoHamcrest.argThat(allOf(hasEntry("X-RequestorID", "testRequester"),hasEntry("X-ONAP-PartnerName", "VID"))))).willReturn(okResponse);
1297 MsoResponseWrapper response = msoBusinessLogic.invokeVnfWorkflow(request, "testRequester", serviceInstanceId, vnfInstanceId, workflow_UUID);
1300 assertThat(response).isEqualToComparingFieldByField(okResponse);
1305 public void shouldReturnWorkflowListForGivenModelId() {
1306 given(msoInterface.getWorkflowListByModelId(anyString())).willReturn(workflowListResponse);
1307 given(workflowListResponse.getBody()).willReturn(workflowList);
1308 given(workflowListResponse.getStatus()).willReturn(HttpStatus.ACCEPTED.value());
1310 SOWorkflowList workflows = msoBusinessLogic.getWorkflowListByModelId("sampleModelId");
1312 assertThat(workflows).isEqualTo(workflowList);
1315 @Test(expectedExceptions = {MsoBusinessLogicImpl.WorkflowListException.class})
1316 public void shouldRaiseExceptionWhenRetrievingWorkflowsFailed() {
1317 given(msoInterface.getWorkflowListByModelId(anyString())).willReturn(workflowListResponse);
1318 given(workflowListResponse.getStatus()).willReturn(HttpStatus.INTERNAL_SERVER_ERROR.value());
1320 msoBusinessLogic.getWorkflowListByModelId("sampleModelId");
1325 public void probeShouldReturnOrchestrationRequestsAndConnectionStatus(){
1328 + " \"requestList\":"
1330 + " \"request\": {}"
1334 mockForGetOrchestrationRequest(200, body);
1336 ExternalComponentStatus externalComponentStatus = msoBusinessLogic.probeComponent();
1338 assertThat(externalComponentStatus.isAvailable()).isTrue();
1339 assertThat(externalComponentStatus.getComponent()).isEqualTo(ExternalComponentStatus.Component.MSO);
1342 private WorkflowRequestDetail createWorkflowRequestDetail() {
1343 WorkflowRequestDetail workflowRequestDetail = new WorkflowRequestDetail();
1344 org.onap.vid.changeManagement.RequestParameters requestParameters = new org.onap.vid.changeManagement.RequestParameters();
1345 HashMap<String,String> paramsMap = new HashMap<>();
1346 paramsMap.put("testKey1","testValue1");
1347 paramsMap.put("testKey2","testValue2");
1349 List<Map<String,String>> mapArray= new ArrayList<>();
1350 mapArray.add(paramsMap);
1351 requestParameters.setUserParams(mapArray);
1353 CloudConfiguration cloudConfiguration = new CloudConfiguration();
1354 cloudConfiguration.setCloudOwner("testOwne");
1355 cloudConfiguration.setTenantId("testId");
1356 cloudConfiguration.setLcpCloudRegionId("testLcpCloudId");
1358 workflowRequestDetail.setRequestParameters(requestParameters);
1359 workflowRequestDetail.setCloudConfiguration(cloudConfiguration);
1360 return workflowRequestDetail;
1363 private OperationalEnvironmentActivateInfo createTestOperationalEnvironmentActivateInfo() {
1364 OperationalEnvironmentController.OperationalEnvironmentActivateBody operationalEnvironmentActivateBody = new OperationalEnvironmentController.OperationalEnvironmentActivateBody(
1365 "testRelatedInstanceId",
1366 "testRelatedInstanceName",
1367 "testWorkloadContext",
1368 new OperationalEnvironmentController.OperationalEnvironmentManifest()
1370 return new OperationalEnvironmentActivateInfo(operationalEnvironmentActivateBody, userId, operationalEnvironmentId);
1373 private OperationalEnvironmentDeactivateInfo createTestOperationalEnvironmentDeactivateInfo() {
1374 return new OperationalEnvironmentDeactivateInfo(userId, operationalEnvironmentId);
1377 private OperationalEnvironmentController.OperationalEnvironmentCreateBody createTestOperationalEnvironmentCreateBody() {
1378 return new OperationalEnvironmentController.OperationalEnvironmentCreateBody(
1380 "testEcompInstanceId",
1381 "testEcompInstanceName",
1382 "testOperationalEnvironmentType",
1383 "testTenantContext",
1384 "testWorkloadContext"
1388 private MsoResponseWrapper createOkResponse() {
1389 HttpStatus expectedStatus = HttpStatus.ACCEPTED;
1390 String expectedBody = " \"body\": {\n" +
1391 " \"requestReferences\": {\n" +
1392 " \"instanceId\": \" 123456 \",\n" +
1393 " \"requestId\": \"b6dc9806-b094-42f7-9386-a48de8218ce8\"\n" +
1395 MsoResponseWrapper responseWrapper = new MsoResponseWrapper();
1396 responseWrapper.setEntity(expectedBody);
1397 responseWrapper.setStatus(expectedStatus.value());
1398 return responseWrapper;
1401 private String getFileContentAsString(String resourceName) throws Exception {
1402 Path path = Paths.get("payload_jsons", resourceName);
1403 URL url = this.getClass().getClassLoader().getResource(path.toString());
1406 result = IOUtils.toString(url.toURI(), "UTF-8");
1411 private static class MsoRequestWrapperMatcher implements
1412 ArgumentMatcher<org.onap.vid.changeManagement.RequestDetailsWrapper> {
1414 private final org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest;
1416 MsoRequestWrapperMatcher(org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest) {
1417 this.expectedRequest = expectedRequest;
1421 public boolean matches(org.onap.vid.changeManagement.RequestDetailsWrapper argument) {
1422 return expectedRequest.requestDetails.equals(argument.requestDetails);
1426 private class MsoTestException extends RuntimeException {
1427 MsoTestException(String testException) {
1428 super(testException);
1432 //you need to add mocks to httpResponse
1433 private HttpResponse<String> mockForGetOrchestrationRequest() {
1435 HttpResponse<String> httpResponse = mock(HttpResponse.class);
1436 HttpResponseWithRequestInfo<String> httpResponseWithRequestInfo = new HttpResponseWithRequestInfo<>(httpResponse, MY_PRETTY_URL, HttpMethod.GET);
1437 when(msoInterface.getOrchestrationRequest(any(String.class),anyBoolean()))
1438 .thenReturn(httpResponseWithRequestInfo);
1439 return httpResponse;
1442 private HttpResponse<String> mockForGetOrchestrationRequest(int statusCode, String body) {
1444 HttpResponse<String> httpResponse = mockForGetOrchestrationRequest();
1445 when(httpResponse.getStatus()).thenReturn(statusCode);
1446 when(httpResponse.getBody()).thenReturn(body);
1447 TestUtils.mockGetRawBodyWithStringBody(httpResponse, body);
1448 return httpResponse;
1452 public void probeComponent_verifyGoodRequest(){
1453 String responseString = "" +
1455 " \"requestList\": [{ " +
1456 " \"request\": { " +
1457 " \"requestDetails\": { " +
1458 " \"cloudConfiguration\": { " +
1459 " \"lcpCloudRegionId\": \"hvf6\", " +
1460 " \"cloudOwner\": \"irma-aic\", " +
1461 " \"tenantId\": \"ffdf52b5e5104b0e8f329b0b1637ee2e\" " +
1463 " \"modelInfo\": { " +
1464 " \"modelCustomizationName\": \"VSP1710PID298109_vWINIFRED 0\", " +
1465 " \"modelCustomizationId\": \"24d43fdb-9aa6-4287-a68e-1e702ea89d13\", " +
1466 " \"modelInvariantId\": \"e7961100-cde6-4b5a-bcda-b8945086950a\", " +
1467 " \"modelVersionId\": \"959a7ba0-89ee-4984-9af6-65d5bdda4b0e\", " +
1468 " \"modelName\": \"VSP1710PID298109_vWINIFRED\", " +
1469 " \"modelType\": \"vnf\", " +
1470 " \"modelVersion\": \"1.0\" " +
1472 " \"relatedModelList\": [{ " +
1473 " \"relatedInstance\": { " +
1474 " \"instanceId\": \"6dd0f8de-93c7-48a2-914b-1a8d58e0eb48\", " +
1475 " \"modelInfo\": { " +
1476 " \"modelInvariantId\": \"57e00952-0af7-4f0f-b19a-408a6f73c8df\", " +
1477 " \"modelType\": \"service\", " +
1478 " \"modelName\": \"ServicevWINIFREDPID298109\", " +
1479 " \"modelVersion\": \"1.0\", " +
1480 " \"modelVersionId\": \"fe6985cd-ea33-3346-ac12-ab121484a3fe\" " +
1485 " \"requestInfo\": { " +
1486 " \"source\": \"VID\", " +
1487 " \"suppressRollback\": false, " +
1488 " \"requestorId\": \"ds828e\" " +
1490 " \"requestParameters\": { " +
1491 " \"userParams\": [ " +
1493 " \"aLaCarte\": false, " +
1494 " \"usePreload\": true, " +
1495 " \"rebuildVolumeGroups\": false, " +
1496 " \"autoBuildVfModules\": false, " +
1497 " \"cascadeDelete\": false " +
1499 " \"relatedInstanceList\": [{ " +
1500 " \"relatedInstance\": { " +
1501 " \"instanceId\": \"6dd0f8de-93c7-48a2-914b-1a8d58e0eb48\", " +
1502 " \"modelInfo\": { " +
1503 " \"modelInvariantId\": \"57e00952-0af7-4f0f-b19a-408a6f73c8df\", " +
1504 " \"modelType\": \"service\", " +
1505 " \"modelName\": \"ServicevWINIFREDPID298109\", " +
1506 " \"modelVersion\": \"1.0\", " +
1507 " \"modelVersionId\": \"fe6985cd-ea33-3346-ac12-ab121484a3fe\" " +
1513 " \"requestId\": \"d352c70d-5ef8-4977-9ea8-4c8cbe860422\", " +
1514 " \"requestScope\": \"vnf\", " +
1515 " \"requestStatus\": { " +
1516 " \"percentProgress\": 100.0, " +
1517 " \"requestState\": \"Some Unknown Value\", " +
1518 " \"statusMessage\": \"Update Is In Progress\", " +
1519 " \"finishTime\": \"Fri, 08 Sep 2017 19:34:33 GMT\" " +
1521 " \"requestType\": \"updateInstance\", " +
1522 " \"startTime\": \"<IN_PROGRESS_DATE>\", " +
1523 " \"instanceReferences\": { " +
1524 " \"serviceInstanceId\": \"6dd0f8de-93c7-48a2-914b-1a8d58e0eb48\", " +
1525 " \"vnfInstanceId\": \"7c00cc1e-6425-4fc3-afc3-0289db288d4c\", " +
1526 " \"requestorId\": \"ds828e\" " +
1533 mockForGetOrchestrationRequest(200, responseString);
1535 final ExternalComponentStatus msoStatus = msoBusinessLogic.probeComponent();
1537 assertMsoStatus(msoStatus, true);
1538 assertMetadata(msoStatus, 200, startsWith(responseString.substring(0, 400)), MY_PRETTY_URL, equalTo("OK"));
1542 public void probeComponent_response200OkButEmptyPayload_shouldDescribeCorrectly() {
1543 String responseString = "" +
1545 " \"requestList\": []" +
1548 mockForGetOrchestrationRequest(200, responseString);
1550 final ExternalComponentStatus msoStatus = msoBusinessLogic.probeComponent();
1552 assertMsoStatus(msoStatus, true);
1554 assertMetadata(msoStatus, 200, equalTo(responseString), MY_PRETTY_URL, containsString("OK"));
1558 public void probeComponent_response200OkButInvalidPayload_shouldDescribeCorrectly() {
1559 String responseString = "this payload is an invalid json";
1561 mockForGetOrchestrationRequest(200, responseString);
1563 final ExternalComponentStatus msoStatus = msoBusinessLogic.probeComponent();
1565 assertMsoStatus(msoStatus, false);
1567 assertMetadata(msoStatus, 200, equalTo(responseString), MY_PRETTY_URL, containsString("JsonParseException: Unrecognized token"));
1571 public void probeComponent_verifyResponse406() {
1572 String responseString = "my raw data";
1574 when(msoInterface.getOrchestrationRequest(any(), eq(true))).thenThrow(
1575 new ExceptionWithRequestInfo(HttpMethod.GET, MY_PRETTY_URL, responseString, 406,
1576 new GenericUncheckedException(
1577 new HttpException("Simulating as 406 was returned (200 or 202 expected)"))));
1579 final ExternalComponentStatus msoStatus = msoBusinessLogic.probeComponent();
1581 assertMsoStatus(msoStatus, false);
1583 assertMetadata(msoStatus, 406, equalTo(responseString), MY_PRETTY_URL, containsString("HttpException: Simulating as 406 was returned"));
1588 public void probeComponent_throwNullPointerException_resultIsWithErrorMetadata() {
1589 when(msoInterface.getOrchestrationRequest(any(), eq(true))).thenThrow(new NullPointerException());
1591 final ExternalComponentStatus msoStatus = msoBusinessLogic.probeComponent();
1593 MatcherAssert.assertThat(msoStatus.isAvailable(), is(false));
1594 MatcherAssert.assertThat(msoStatus.getComponent(), is(MSO));
1595 MatcherAssert.assertThat(msoStatus.getMetadata(), instanceOf(ErrorMetadata.class));
1597 final ErrorMetadata metadata = ((ErrorMetadata) msoStatus.getMetadata());
1598 org.junit.Assert.assertThat(metadata.getDescription(), containsString("NullPointerException"));
1601 private void assertMsoStatus(ExternalComponentStatus msoStatus, boolean isAvailable) {
1602 MatcherAssert.assertThat(msoStatus.isAvailable(), is(isAvailable));
1603 MatcherAssert.assertThat(msoStatus.getComponent(), is(MSO));
1604 MatcherAssert.assertThat(msoStatus.getMetadata(), instanceOf(HttpRequestMetadata.class));
1607 private void assertMetadata(ExternalComponentStatus msoStatus, int httpCode, Matcher<String> rawData, String url, Matcher<String> descriptionMatcher) {
1608 final HttpRequestMetadata metadata = ((HttpRequestMetadata) msoStatus.getMetadata());
1609 org.junit.Assert.assertThat(metadata.getHttpMethod(), equalTo(HttpMethod.GET));
1610 org.junit.Assert.assertThat(metadata.getHttpCode(), equalTo(httpCode));
1611 org.junit.Assert.assertThat(metadata.getUrl(), equalTo(url));
1612 org.junit.Assert.assertThat(metadata.getRawData(), rawData);
1613 org.junit.Assert.assertThat(metadata.getDescription(), descriptionMatcher);
1616 @Test(dataProvider = "unAssignOrDeleteParams")
1617 public void deleteSvcInstance_verifyEndPointPathConstructing(String status) {
1618 Mockito.reset(msoInterface);
1619 String endpoint = validateEndpointPath(MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE);
1620 RequestDetails requestDetails = new RequestDetails();
1623 msoBusinessLogic.deleteSvcInstance(requestDetails, "tempId", status);
1625 verify(msoInterface).deleteSvcInstance(requestDetails, endpoint + "/tempId");
1629 public Object[][] unAssignOrDeleteParams() {
1630 return new Object[][]{
1632 {"unexpected-status"},
1636 @Test(dataProvider = "unAssignStatus")
1637 public void deleteSvcInstance_verifyEndPointPathConstructing_unAssignFeatureOn(String status) {
1638 Mockito.reset(msoInterface);
1639 String endpoint = validateEndpointPath(MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE);
1640 RequestDetails requestDetails = new RequestDetails();
1642 msoBusinessLogic.deleteSvcInstance(requestDetails, "tempId", status);
1644 verify(msoInterface).unassignSvcInstance(requestDetails, endpoint + "/tempId/unassign");
1648 public Object[][] unAssignStatus() {
1649 return new Object[][]{
1658 public void deleteVnf_verifyEndPointPathConstructing() {
1659 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
1660 RequestDetails requestDetails = new RequestDetails();
1662 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId");
1664 msoBusinessLogic.deleteVnf(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId");
1665 verify(msoInterface).deleteVnf(requestDetails, vnf_endpoint + "/vnfInstanceTempId");
1669 public void deleteVfModule_verifyEndPointPathConstructing() {
1670 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
1671 RequestDetails requestDetails = new RequestDetails();
1673 String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId").replaceFirst(VNF_INSTANCE_ID, "vnfInstanceTempId");
1675 msoBusinessLogic.deleteVfModule(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId", "vfModuleTempId");
1676 verify(msoInterface).deleteVfModule(requestDetails, vf__modules_endpoint + "/vfModuleTempId");