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 com.fasterxml.jackson.core.type.TypeReference;
25 import com.fasterxml.jackson.databind.ObjectMapper;
26 import io.joshworks.restclient.http.HttpResponse;
27 import org.apache.commons.io.IOUtils;
28 import org.jetbrains.annotations.NotNull;
29 import org.mockito.hamcrest.MockitoHamcrest;
30 import org.onap.vid.changeManagement.WorkflowRequestDetail;
31 import org.onap.vid.controller.ControllersUtils;
32 import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
33 import org.testng.annotations.BeforeClass;
34 import org.testng.annotations.Test;
35 import org.mockito.ArgumentMatcher;
36 import org.mockito.Mock;
37 import org.mockito.MockitoAnnotations;
38 import org.onap.portalsdk.core.util.SystemProperties;
39 import org.onap.vid.changeManagement.ChangeManagementRequest;
40 import org.onap.vid.controller.OperationalEnvironmentController;
41 import org.onap.vid.exceptions.GenericUncheckedException;
42 import org.onap.vid.model.RequestReferencesContainer;
43 import org.onap.vid.model.SoftDeleteRequest;
44 import org.onap.vid.mso.model.CloudConfiguration;
45 import org.onap.vid.mso.model.ModelInfo;
46 import org.onap.vid.mso.model.OperationalEnvironmentActivateInfo;
47 import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo;
48 import org.onap.vid.mso.model.RequestInfo;
49 import org.onap.vid.mso.model.RequestParameters;
50 import org.onap.vid.mso.model.RequestReferences;
51 import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails;
52 import org.onap.vid.mso.rest.Request;
53 import org.onap.vid.mso.rest.RequestDetails;
54 import org.onap.vid.mso.rest.RequestDetailsWrapper;
55 import org.onap.vid.mso.rest.Task;
56 import org.onap.vid.properties.Features;
57 import org.springframework.http.HttpStatus;
58 import org.springframework.test.context.ContextConfiguration;
59 import org.togglz.core.manager.FeatureManager;
61 import javax.ws.rs.BadRequestException;
62 import java.io.IOException;
64 import java.nio.file.Path;
65 import java.nio.file.Paths;
66 import java.util.ArrayList;
67 import java.util.HashMap;
68 import java.util.List;
70 import java.util.UUID;
71 import java.util.stream.Collectors;
73 import static org.assertj.core.api.Assertions.assertThat;
74 import static org.assertj.core.api.Assertions.tuple;
75 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
76 import static org.hamcrest.Matchers.allOf;
77 import static org.hamcrest.Matchers.hasEntry;
78 import static org.junit.Assert.assertEquals;
79 import static org.mockito.ArgumentMatchers.any;
80 import static org.mockito.ArgumentMatchers.anyBoolean;
81 import static org.mockito.ArgumentMatchers.argThat;
82 import static org.mockito.ArgumentMatchers.eq;
83 import static org.mockito.ArgumentMatchers.isA;
84 import static org.mockito.ArgumentMatchers.endsWith;
85 import static org.mockito.BDDMockito.given;
86 import static org.mockito.Mockito.doThrow;
87 import static org.mockito.Mockito.mock;
88 import static org.onap.vid.controller.MsoController.CONFIGURATION_ID;
89 import static org.onap.vid.controller.MsoController.REQUEST_TYPE;
90 import static org.onap.vid.controller.MsoController.SVC_INSTANCE_ID;
91 import static org.onap.vid.controller.MsoController.VNF_INSTANCE_ID;
92 import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath;
94 @ContextConfiguration(classes = {SystemProperties.class})
95 public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests {
97 private static final ObjectMapper objectMapper = new ObjectMapper();
100 private FeatureManager featureManager;
103 private MsoInterface msoInterface;
106 private RequestDetails msoRequest;
109 private MsoBusinessLogicImpl msoBusinessLogic;
110 private String userId = "testUserId";
111 private String operationalEnvironmentId = "testOperationalEnvironmentId";
114 public void setUp() {
115 MockitoAnnotations.initMocks(this);
116 msoBusinessLogic = new MsoBusinessLogicImpl(msoInterface, featureManager);
120 public void shouldProperlyCreateConfigurationInstanceWithCorrectServiceInstanceId() throws Exception {
122 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
123 String endpointTemplate = String.format("/serviceInstances/v6/%s/configurations", serviceInstanceId);
124 RequestDetailsWrapper requestDetailsWrapper = createRequestDetails();
125 MsoResponseWrapper expectedResponse = createOkResponse();
126 given(msoInterface.createConfigurationInstance(requestDetailsWrapper, endpointTemplate))
127 .willReturn(expectedResponse);
130 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
131 .createConfigurationInstance(requestDetailsWrapper, serviceInstanceId);
134 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
137 private RequestDetailsWrapper createRequestDetails() throws Exception {
138 final URL resource = this.getClass().getResource("/payload_jsons/mso_request_create_configuration.json");
139 RequestDetails requestDetails = objectMapper.readValue(resource, RequestDetails.class);
140 return new RequestDetailsWrapper(requestDetails);
144 public void shouldProperlyValidateEndpointPathWheEendPointIsNotEmptyAndValid() {
145 System.setProperty("TestEnv", "123");
146 String foundEndPoint = validateEndpointPath("TestEnv");
147 assertEquals("123", foundEndPoint);
151 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathEndPointIsNotEmptyAndValid() {
152 assertThatExceptionOfType(RuntimeException.class)
153 .isThrownBy(() -> validateEndpointPath("NotExists"));
157 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathWhenEndPointIsNotEmptyButDoesntExists() {
158 String endPoint = "EmptyEndPoint";
159 System.setProperty(endPoint, "");
160 assertThatExceptionOfType(GenericUncheckedException.class)
161 .isThrownBy(() -> validateEndpointPath(endPoint))
162 .withMessage(endPoint + " env variable is not defined");
166 public void shouldProperlyCreateSvcInstanceWithProperParameters() {
168 MsoResponseWrapper expectedResponse = createOkResponse();
169 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
170 given(msoInterface.createSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
172 MsoResponseWrapper response = msoBusinessLogic.createSvcInstance(msoRequest);
175 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
179 public void shouldProperlyCreateE2eSvcInstanceWithProperParameters() {
181 MsoResponseWrapper expectedResponse = createOkResponse();
182 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE);
183 given(msoInterface.createE2eSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
186 MsoResponseWrapper response = msoBusinessLogic.createE2eSvcInstance(msoRequest);
189 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
193 public void shouldProperlyCreateVnfWithProperParameters() {
195 MsoResponseWrapper expectedResponse = createOkResponse();
196 String endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE);
197 String vnfInstanceId = "testVnfInstanceTempId";
198 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
200 given(msoInterface.createVnf(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
202 MsoResponseWrapper response = msoBusinessLogic.createVnf(msoRequest, vnfInstanceId);
205 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
209 public void shouldProperlyCreateNwInstanceWithProperParameters() {
211 MsoResponseWrapper expectedResponse = createOkResponse();
212 String vnfInstanceId = "testNwInstanceTempId";
213 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
214 String nw_endpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
216 given(msoInterface.createNwInstance(msoRequest, nw_endpoint)).willReturn(expectedResponse);
218 MsoResponseWrapper response = msoBusinessLogic.createNwInstance(msoRequest, vnfInstanceId);
221 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
225 public void shouldProperlyCreateVolumeGroupInstanceWithProperParameters() {
226 MsoResponseWrapper expectedResponse = createOkResponse();
227 String serviceInstanceId = "testServiceInstanceTempId";
228 String vnfInstanceId = "testVnfInstanceTempId";
229 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
230 String vnfEndpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
231 vnfEndpoint = vnfEndpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
233 given(msoInterface.createVolumeGroupInstance(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
235 MsoResponseWrapper response = msoBusinessLogic.createVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId);
238 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
242 public void shouldProperlyCreateVfModuleInstanceWithProperParameters() {
243 MsoResponseWrapper expectedResponse = createOkResponse();
244 String serviceInstanceId = "testServiceInstanceTempId";
245 String vnfInstanceId = "testVnfInstanceTempId";
246 String partial_endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
247 String vf_module_endpoint = partial_endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
248 vf_module_endpoint = vf_module_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
250 given(msoInterface.createVfModuleInstance(msoRequest, vf_module_endpoint)).willReturn(expectedResponse);
252 MsoResponseWrapper response = msoBusinessLogic.createVfModuleInstance(msoRequest, serviceInstanceId, vnfInstanceId);
255 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
259 public void shouldProperlyDeleteE2eSvcInstanceWithProperParameters() {
260 MsoResponseWrapper expectedResponse = createOkResponse();
261 String serviceInstanceId = "testDeleteE2eSvcInstanceTempId";
262 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE) + "/" + serviceInstanceId;
264 given(msoInterface.deleteE2eSvcInstance(msoRequest, endpoint)).willReturn(expectedResponse);
266 MsoResponseWrapper response = msoBusinessLogic.deleteE2eSvcInstance(msoRequest, serviceInstanceId);
269 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
273 public void shouldProperlyDeleteSvcInstanceWithProperParametersAndFalseFeatureFlag() {
275 String endpointTemplate = "/serviceInstances/v5/%s";
276 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
277 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
278 RequestDetails requestDetails = new RequestDetails();
279 MsoResponseWrapper expectedResponse = createOkResponse();
280 given(msoInterface.deleteSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
281 given(featureManager.isActive(Features.FLAG_UNASSIGN_SERVICE)).willReturn(false);
284 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
285 .deleteSvcInstance(requestDetails, serviceInstanceId, "unAssignOrDeleteParams");
288 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
292 public void shouldProperlyDeleteSvcInstanceWithProperParametersAndTrueFeatureFlag() {
294 String endpointTemplate = "/serviceInstantiation/v5/serviceInstances/%s/unassign";
295 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
296 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
297 RequestDetails requestDetails = new RequestDetails();
298 MsoResponseWrapper expectedResponse = createOkResponse();
299 given(msoInterface.unassignSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
300 given(featureManager.isActive(Features.FLAG_UNASSIGN_SERVICE)).willReturn(true);
303 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
304 .deleteSvcInstance(requestDetails, serviceInstanceId, "assigned");
307 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
311 public void shouldProperlyDeleteVnfWithProperParameters() {
313 String endpointTemplate = "/serviceInstances/v5/%s/vnfs/%s";
314 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
315 String vnfInstanceId = "testVnfInstanceTempId";
316 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
317 RequestDetails requestDetails = new RequestDetails();
318 MsoResponseWrapper expectedResponse = createOkResponse();
319 given(msoInterface.deleteVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
322 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
323 .deleteVnf(requestDetails, serviceInstanceId, vnfInstanceId);
326 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
330 public void shouldProperlyDeleteVfModuleWithProperParameters() {
332 String endpointTemplate = "/serviceInstances/v7/%s/vnfs/%s/vfModules/%s";
333 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
334 String vnfInstanceId = "testVnfInstanceTempId";
335 String vfModuleId = "testVfModuleId";
336 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId, vfModuleId);
337 RequestDetails requestDetails = new RequestDetails();
338 MsoResponseWrapper expectedResponse = createOkResponse();
339 given(msoInterface.deleteVfModule(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
342 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
343 .deleteVfModule(requestDetails, serviceInstanceId, vnfInstanceId, vfModuleId);
345 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
349 public void shouldProperlyDeleteVolumeGroupInstanceWithProperParameters() {
350 MsoResponseWrapper expectedResponse = createOkResponse();
351 String serviceInstanceId = "testServiceInstanceTempId";
352 String vnfInstanceId = "testVnfInstanceTempId";
353 String volumeGroupId = "testvolumeGroupIdTempId";
355 String deleteVolumeGroupEndpoint = getDeleteVolumeGroupEndpoint(serviceInstanceId, vnfInstanceId, volumeGroupId);
357 given(msoInterface.deleteVolumeGroupInstance(msoRequest, deleteVolumeGroupEndpoint)).willReturn(expectedResponse);
359 MsoResponseWrapper response = msoBusinessLogic.deleteVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId, volumeGroupId);
362 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
366 private String getDeleteVolumeGroupEndpoint(String serviceInstanceId, String vnfInstanceId, String volumeGroupId) {
367 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
368 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
369 String vnfEndpoint = svc_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
370 return vnfEndpoint + "/" + volumeGroupId;
374 public void shouldProperlyDeleteNwInstanceWithProperParameters() {
375 MsoResponseWrapper expectedResponse = createOkResponse();
376 String serviceInstanceId = "testServiceInstanceTempId";
377 String networkInstanceId = "testNetworkInstanceTempId";
379 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
380 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
381 String delete_nw_endpoint = svc_endpoint + "/" + networkInstanceId;
383 given(msoInterface.deleteNwInstance(msoRequest, delete_nw_endpoint)).willReturn(expectedResponse);
385 MsoResponseWrapper response = msoBusinessLogic.deleteNwInstance(msoRequest, serviceInstanceId, networkInstanceId);
388 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
392 public void shouldProperlyGetOrchestrationRequestWithProperParameters() {
393 MsoResponseWrapper expectedResponse = createOkResponse();
394 String requestId = "testRequestTempId";
395 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
396 String path = p + "/" + requestId;
398 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
400 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequest(requestId);
401 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
404 @Test(expectedExceptions = MsoTestException.class)
405 public void shouldProperlyGetOrchestrationRequestWithWrongParameters() {
406 String requestId = "testWrongRequestTempId";
407 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
408 String path = p + "/" + requestId;
410 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
412 msoBusinessLogic.getOrchestrationRequest(requestId);
416 public void shouldProperlyGetOrchestrationRequestsWithProperParameters() {
417 MsoResponseWrapper expectedResponse = createOkResponse();
418 String filterString = "testRequestsTempId";
419 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
420 String path = url + filterString;
422 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
424 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequests(filterString);
425 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
428 @Test(expectedExceptions = MsoTestException.class)
429 public void shouldThrowExceptionWhenGetOrchestrationRequestsWithWrongParameters() {
430 String filterString = "testRequestsTempId";
431 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
432 String path = p + filterString;
434 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
436 msoBusinessLogic.getOrchestrationRequests(filterString);
440 public void shouldSendProperScaleOutRequest() throws IOException {
442 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
443 String vnfInstanceId = "testVnfInstanceTempId";
444 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s/vfModules/scaleOut";
445 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
446 org.onap.vid.changeManagement.RequestDetails requestDetails = readRequest();
447 org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> expectedRequest = readExpectedRequest();
448 MsoResponseWrapper expectedMsoResponseWrapper = createOkResponse();
451 .scaleOutVFModuleInstance(argThat(new MsoRequestWrapperMatcher(expectedRequest)),
453 .willReturn(expectedMsoResponseWrapper);
456 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
457 .scaleOutVfModuleInstance(requestDetails, serviceInstanceId, vnfInstanceId);
460 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedMsoResponseWrapper);
463 private org.onap.vid.changeManagement.RequestDetails readRequest() throws IOException {
464 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayload.json");
465 URL url = this.getClass().getClassLoader().getResource(path.toString());
466 return objectMapper.readValue(url, org.onap.vid.changeManagement.RequestDetails.class);
469 private org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> readExpectedRequest()
471 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayloadToMso.json");
472 URL url = this.getClass().getClassLoader().getResource(path.toString());
473 return objectMapper.readValue(url,
474 new TypeReference<org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails>>() {
480 public void shouldFilterOutOrchestrationRequestsNotAllowedInDashboard() throws Exception {
482 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_response.json");
483 String scaleOutActionOrchestrationRequests = getFileContentAsString("mso_action_scaleout_sample_response.json");
485 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
487 .getOrchestrationRequest(any(String.class), any(String.class), any(String.class),
488 any(RestObject.class), anyBoolean()))
489 .willReturn(msoResponseWrapperMock);
490 given(msoResponseWrapperMock.getEntity())
491 .willReturn(vnfModelTypeOrchestrationRequests, scaleOutActionOrchestrationRequests);
494 List<Request> filteredOrchestrationReqs = msoBusinessLogic.getOrchestrationRequestsForDashboard();
496 assertThat(filteredOrchestrationReqs).hasSize(3);
497 assertThat(MsoBusinessLogicImpl.DASHBOARD_ALLOWED_TYPES)
498 .containsAll(filteredOrchestrationReqs
500 .map(el -> el.getRequestType().toUpperCase())
501 .collect(Collectors.toList()));
502 assertThat(filteredOrchestrationReqs)
503 .extracting(Request::getRequestScope)
504 .containsOnly("vnf", "vfModule");
507 @Test(expectedExceptions = GenericUncheckedException.class)
508 public void shouldThrowGenericUncheckedExceptionWhenGetOrchestrationRequestsForDashboardWithWrongJsonFile_() throws Exception {
510 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_wrong_response.json");
512 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
514 .getOrchestrationRequest(any(String.class), any(String.class), any(String.class),
515 any(RestObject.class), anyBoolean()))
516 .willReturn(msoResponseWrapperMock);
517 given(msoResponseWrapperMock.getEntity())
518 .willReturn(vnfModelTypeOrchestrationRequests);
521 msoBusinessLogic.getOrchestrationRequestsForDashboard();
525 public void shouldProperlyGetManualTasksByRequestIdWithProperParameters() throws Exception {
527 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_test.json");
529 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
531 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
532 any(RestObject.class)))
533 .willReturn(msoResponseWrapperMock);
534 given(msoResponseWrapperMock.getEntity())
535 .willReturn(manualTasksList);
538 List<Task> filteredOrchestrationReqs = msoBusinessLogic.getManualTasksByRequestId("TestId");
541 assertThat(filteredOrchestrationReqs).hasSize(2);
542 assertThat(filteredOrchestrationReqs).extracting("taskId", "type").
544 tuple("123123abc", "testTask"),
545 tuple("321321abc", "testTask")
549 @Test(expectedExceptions = GenericUncheckedException.class)
550 public void shouldThrowGenericUncheckedExceptionWhenGetManualTasksByRequestIdWithWrongJsonFile() throws Exception {
552 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_wrongJson_test.json");
554 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
556 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
557 any(RestObject.class)))
558 .willReturn(msoResponseWrapperMock);
559 given(msoResponseWrapperMock.getEntity())
560 .willReturn(manualTasksList);
563 msoBusinessLogic.getManualTasksByRequestId("TestId");
566 @Test(expectedExceptions = MsoTestException.class)
567 public void getManualTasksByRequestIdWithArgument_shouldThrowException() {
570 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
571 any(RestObject.class)))
572 .willThrow(MsoTestException.class);
575 msoBusinessLogic.getManualTasksByRequestId("TestId");
579 public void shouldProperlyCompleteManualTaskWithProperParameters() {
581 MsoResponseWrapper expectedResponse = createOkResponse();
582 RequestDetails requestDetails = new RequestDetails();
583 String taskId = "testTaskId";
585 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
586 String path = url + "/" + taskId + "/complete";
588 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willReturn(expectedResponse);
591 MsoResponseWrapper response = msoBusinessLogic.completeManualTask(requestDetails, taskId);
594 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
599 public void shouldProperlyActivateServiceInstanceWithProperParameters() {
601 RequestDetails detail = new RequestDetails();
602 String taskId = "testTaskId";
604 RestObject<String> restObjStr = new RestObject<>();
606 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
609 MsoResponseWrapper response = msoBusinessLogic.activateServiceInstance(detail, taskId);
612 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
616 @Test(expectedExceptions = MsoTestException.class)
617 public void shouldThrowExceptionWhenActivateServiceInstanceWithWrongParameters() {
619 RequestDetails requestDetails = new RequestDetails();
620 String taskId = "testTaskId";
622 RestObject<String> restObjStr = new RestObject<>();
624 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
626 doThrow(new MsoTestException("testException")).
627 when(msoInterface).setServiceInstanceStatus(eq(requestDetails), any(String.class), any(String.class), any(String.class), any(RestObject.class));
630 MsoResponseWrapper response = msoBusinessLogic.activateServiceInstance(requestDetails, taskId);
633 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
636 @Test(expectedExceptions = MsoTestException.class)
637 public void shouldThrowExceptionWhenManualTaskWithWrongParameters() {
639 RequestDetails requestDetails = new RequestDetails();
642 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
643 String path = url + "/" + taskId + "/complete";
645 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willThrow(new MsoTestException("empty path"));
648 msoBusinessLogic.completeManualTask(requestDetails, taskId);
652 public void shouldProperlyUpdateVnfWithProperParameters() {
654 MsoResponseWrapper expectedResponse = createOkResponse();
655 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
657 String serviceInstanceId = "testServiceId";
658 String vnfInstanceId = "testVnfInstanceId";
660 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
661 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
662 vnfEndpoint = vnfEndpoint + '/' + vnfInstanceId;
664 given(msoInterface.updateVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
667 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnf(requestDetails, serviceInstanceId, vnfInstanceId);
670 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
674 public void shouldProperlyReplaceVnfWithProperParameters() {
676 MsoResponseWrapper expectedResponse = createOkResponse();
677 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
679 String serviceInstanceId = "testServiceId";
680 String vnfInstanceId = "testVnfInstanceId";
682 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
683 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
684 vnfEndpoint = vnfEndpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
685 vnfEndpoint = vnfEndpoint.replace(REQUEST_TYPE, ChangeManagementRequest.MsoChangeManagementRequest.REPLACE);
687 given(msoInterface.replaceVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
690 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.replaceVnf(requestDetails, serviceInstanceId, vnfInstanceId);
693 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
697 public void shouldProperlyGenerateInPlaceMsoRequestWithProperParameters() {
699 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
701 requestDetails.setVnfInstanceId("testVnfInstanceId");
702 requestDetails.setVnfName("testVnfName");
703 requestDetails.setRequestParameters(new RequestParameters());
705 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
706 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
707 "\"new_software_version\": \"testNewSoftwareParam\"," +
708 "\"operations_timeout\": \"100\"" +
711 RequestDetails inPlaceSoftwareUpdateRequest = new RequestDetails();
712 inPlaceSoftwareUpdateRequest.setCloudConfiguration(requestDetails.getCloudConfiguration());
713 inPlaceSoftwareUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
714 inPlaceSoftwareUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
715 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
716 requestDetailsWrapper.requestDetails = inPlaceSoftwareUpdateRequest;
719 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
722 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
725 @Test(expectedExceptions = BadRequestException.class)
726 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithParametersWithWrongCharacters() {
728 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
730 requestDetails.setVnfInstanceId("testVnfInstanceId");
731 requestDetails.setVnfName("testVnfName");
732 requestDetails.setRequestParameters(new RequestParameters());
734 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
735 "\"existing_software_version\": \"#####\"," +
736 "\"new_software_version\": \"testNewSoftwareParam\"" +
740 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
743 @Test(expectedExceptions = BadRequestException.class)
744 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithWrongParameters() {
746 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
748 requestDetails.setVnfInstanceId("testVnfInstanceId");
749 requestDetails.setVnfName("testVnfName");
750 requestDetails.setRequestParameters(new RequestParameters());
752 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
753 "\"test-wrong-parameter\": \"testParam\"," +
754 "\"new_software_version\": \"testNewSoftwareParam\"" +
758 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
762 public void shouldProprleyGenerateConfigMsoRequestWithProperParameters() {
764 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
766 requestDetails.setVnfInstanceId("testVnfInstanceId");
767 requestDetails.setVnfName("testVnfName");
768 requestDetails.setRequestParameters(new RequestParameters());
770 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
771 "\"request-parameters\": \"testRequestParam\"," +
772 "\"configuration-parameters\": \"testConfigParams\"" +
775 RequestDetails configUpdateRequest = new RequestDetails();
776 configUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
777 configUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
779 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
780 requestDetailsWrapper.requestDetails = configUpdateRequest;
783 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateConfigMsoRequest(requestDetails);
786 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
789 @Test(expectedExceptions = BadRequestException.class)
790 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAdditionalParameters() {
792 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
794 requestDetails.setVnfInstanceId("testVnfInstanceId");
795 requestDetails.setVnfName("testVnfName");
796 requestDetails.setRequestParameters(null);
799 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
802 @Test(expectedExceptions = BadRequestException.class)
803 public void shouldThrowExceptionWhenGenerateConfigMsoRequestWithWrongPayload() {
805 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
807 requestDetails.setVnfInstanceId("testVnfInstanceId");
808 requestDetails.setVnfName("testVnfName");
809 requestDetails.setRequestParameters(new RequestParameters());
811 requestDetails.getRequestParameters().setAdditionalProperty("payload", null);
814 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
817 @Test(expectedExceptions = BadRequestException.class)
818 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAnyParameter() {
820 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
822 requestDetails.setVnfInstanceId("testVnfInstanceId");
823 requestDetails.setVnfName("testVnfName");
824 requestDetails.setRequestParameters(new RequestParameters());
826 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
827 "\"test-wrong-parameter\": \"testParam\"," +
828 "\"configuration-parameters\": \"testConfigParam\"" +
832 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
836 public void shouldProperlyGetActivateFabricConfigurationPathWithProperParameters() {
838 String serviceInstanceId = "testServiceId";
839 String path = validateEndpointPath(MsoProperties.MSO_REST_API_SERVICE_INSTANCE_CREATE);
840 path += "/" + serviceInstanceId + "/activateFabricConfiguration";
843 String response = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
846 assertThat(response).isEqualTo(path);
850 public void shouldProperlyGetDeactivateAndCloudDeletePathWithProperParameters() {
852 String serviceInstanceId = "testServiceId";
853 String vnfInstanceId = "testVnfInstanceId";
854 String vfModuleInstanceId = "testVfModuleInstanceId";
855 String path = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
856 path = path.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
857 path = path.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
858 path += "/" + vfModuleInstanceId + "/deactivateAndCloudDelete";
861 String response = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
864 assertThat(response).isEqualTo(path);
868 public void shouldProperlyBuildRequestDetailsForSoftDeleteWithProperParameters() {
870 SoftDeleteRequest softDeleteRequest = new SoftDeleteRequest();
871 RequestDetails requestDetails = new RequestDetails();
873 String userId = "testUserID";
874 String tenantId = "testTenantId ";
875 String cloudRegionId = "testCloudId";
878 RequestInfo requestInfo = new RequestInfo();
879 requestInfo.setSource("VID");
880 requestInfo.setRequestorId(userId);
881 requestDetails.setRequestInfo(requestInfo);
883 CloudConfiguration cloudConfiguration = new CloudConfiguration();
884 cloudConfiguration.setTenantId(tenantId);
885 cloudConfiguration.setLcpCloudRegionId(cloudRegionId);
886 requestDetails.setCloudConfiguration(cloudConfiguration);
888 setModelInfoForRequestDetails(requestDetails);
890 setRequestParametersForRequestDetails(requestDetails);
892 softDeleteRequest.setLcpCloudRegionId(cloudRegionId);
893 softDeleteRequest.setTenantId(tenantId);
894 softDeleteRequest.setUserId(userId);
897 RequestDetails response = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest);
900 assertThat(response).isEqualTo(requestDetails);
903 private void setRequestParametersForRequestDetails(RequestDetails requestDetails) {
904 RequestParameters requestParameters = new RequestParameters();
905 requestParameters.setTestApi("GR_API");
906 requestDetails.setRequestParameters(requestParameters);
909 private void setModelInfoForRequestDetails(RequestDetails requestDetails) {
910 ModelInfo modelInfo = new ModelInfo();
911 modelInfo.setModelType("vfModule");
912 requestDetails.setModelInfo(modelInfo);
916 public void shouldProperlyDeactivateAndCloudDeleteWithProperParameters() {
918 String serviceInstanceId = "testServiceId";
919 String vnfInstanceId = "testVnfInstanceId";
920 String vfModuleInstanceId = "testVfModuleInstanceId";
921 RequestDetails requestDetails = new RequestDetails();
923 String path = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
925 RequestReferences requestReferences = new RequestReferences();
926 requestReferences.setInstanceId("testInstance");
927 requestReferences.setRequestId("testRequest");
929 HttpResponse<RequestReferencesContainer> expectedResponse = HttpResponse.fallback(new RequestReferencesContainer(requestReferences));
931 MsoResponseWrapper2 responseWrapped = new MsoResponseWrapper2<>(expectedResponse);
933 given(msoInterface.post(eq(path), any(org.onap.vid.changeManagement.RequestDetailsWrapper.class), eq(RequestReferencesContainer.class))).willReturn(expectedResponse);
936 MsoResponseWrapper2 response = msoBusinessLogic.deactivateAndCloudDelete(serviceInstanceId, vnfInstanceId, vfModuleInstanceId, requestDetails);
939 assertThat(response).isEqualToComparingFieldByField(responseWrapped);
943 public void shouldProperlyActivateFabricConfigurationWithProperParameters() {
945 String serviceInstanceId = "testServiceId";
946 RequestDetails requestDetails = new RequestDetails();
948 String path = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
950 RequestReferences requestReferences = new RequestReferences();
951 requestReferences.setInstanceId("testInstance");
952 requestReferences.setRequestId("testRequest");
954 HttpResponse<RequestReferencesContainer> expectedResponse = HttpResponse.fallback(new RequestReferencesContainer(requestReferences));
956 MsoResponseWrapper2 responseWrapped = new MsoResponseWrapper2<>(expectedResponse);
958 given(msoInterface.post(eq(path), any(org.onap.vid.changeManagement.RequestDetailsWrapper.class), eq(RequestReferencesContainer.class))).willReturn(expectedResponse);
961 MsoResponseWrapper2 response = msoBusinessLogic.activateFabricConfiguration(serviceInstanceId, requestDetails);
964 assertThat(response).isEqualToComparingFieldByField(responseWrapped);
968 public void shouldProperlyUpdateVnfSoftwareWithProperParameters() {
970 String serviceInstanceId = "testServiceId";
971 String vnfInstanceId = "testVnfInstanceId";
973 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
975 requestDetails.setVnfInstanceId("testVnfInstanceId");
976 requestDetails.setVnfName("testVnfName");
977 requestDetails.setRequestParameters(new RequestParameters());
979 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
980 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
981 "\"new_software_version\": \"testNewSoftwareParam\"," +
982 "\"operations_timeout\": \"100\"" +
985 MsoResponseWrapper okResponse = createOkResponse();
987 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
990 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfSoftware(requestDetails, serviceInstanceId, vnfInstanceId);
993 assertThat(response).isEqualToComparingFieldByField(okResponse);
997 public void shouldProperlyUpdateVnfConfigWithProperParameters() {
999 String serviceInstanceId = "testServiceId";
1000 String vnfInstanceId = "testVnfInstanceId";
1002 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1004 requestDetails.setVnfInstanceId("testVnfInstanceId");
1005 requestDetails.setVnfName("testVnfName");
1006 requestDetails.setRequestParameters(new RequestParameters());
1008 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
1009 "\"request-parameters\": \"testRequestParam\"," +
1010 "\"configuration-parameters\": \"testConfigParams\"" +
1013 MsoResponseWrapper okResponse = createOkResponse();
1015 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
1018 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfConfig(requestDetails, serviceInstanceId, vnfInstanceId);
1021 assertThat(response).isEqualToComparingFieldByField(okResponse);
1025 public void shouldProperlyDeleteConfigurationWithProperParameters() {
1027 String serviceInstanceId = "testServiceId";
1028 String configurationId = "testConfigurationId";
1030 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1032 requestDetails.setVnfInstanceId("testVnfInstanceId");
1033 requestDetails.setVnfName("testVnfName");
1035 MsoResponseWrapper okResponse = createOkResponse();
1036 RequestDetailsWrapper wrappedRequestDetail = new RequestDetailsWrapper(requestDetails);
1038 given(msoInterface.deleteConfiguration(eq(wrappedRequestDetail), any(String.class))).willReturn(okResponse);
1041 MsoResponseWrapper response = msoBusinessLogic.deleteConfiguration(wrappedRequestDetail, serviceInstanceId, configurationId);
1044 assertThat(response).isEqualToComparingFieldByField(okResponse);
1048 public void shouldProperlySetConfigurationActiveStatusActiveWithProperParameters() {
1050 String serviceInstanceId = "testServiceId";
1051 String configurationId = "testConfigurationId";
1053 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1055 requestDetails.setVnfInstanceId("testVnfInstanceId");
1056 requestDetails.setVnfName("testVnfName");
1058 MsoResponseWrapper okResponse = createOkResponse();
1061 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1062 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1063 .replace(CONFIGURATION_ID, configurationId)
1066 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1069 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, true);
1072 assertThat(response).isEqualToComparingFieldByField(okResponse);
1076 public void shouldProperlySetConfigurationActiveStatusDeactivateWithProperParameters() {
1078 String serviceInstanceId = "testServiceId";
1079 String configurationId = "testConfigurationId";
1081 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1083 requestDetails.setVnfInstanceId("testVnfInstanceId");
1084 requestDetails.setVnfName("testVnfName");
1086 MsoResponseWrapper okResponse = createOkResponse();
1089 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1090 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1091 .replace(CONFIGURATION_ID, configurationId)
1094 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1097 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, false);
1100 assertThat(response).isEqualToComparingFieldByField(okResponse);
1104 public void shouldProperlySetServiceInstanceStatusActiveWithProperParameters() {
1106 String serviceInstanceId = "testServiceId";
1108 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1110 RestObject<String> restObjStr = new RestObject<>();
1112 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
1115 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, true);
1118 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1123 public void shouldProperlySetServiceInstanceStatusDeactivateWithProperParameters() {
1125 String serviceInstanceId = "testServiceId";
1127 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1129 RestObject<String> restObjStr = new RestObject<>();
1131 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
1134 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, false);
1137 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1141 @Test(expectedExceptions = MsoTestException.class)
1142 public void shouldThrowExceptionWhenSetServiceInstanceStatusWithWrongParameters() {
1144 String serviceInstanceId = "testServiceId";
1146 doThrow(new MsoTestException("testException")).
1147 when(msoInterface).setServiceInstanceStatus(eq(null), any(String.class), any(String.class), any(String.class), any(RestObject.class));
1150 msoBusinessLogic.setServiceInstanceStatus(null, serviceInstanceId, true);
1154 public void shouldProperlySetPortOnConfigurationStatusEnableWithProperParameters() {
1156 String serviceInstanceId = "testServiceId";
1157 String configurationId = "testConfigurationId";
1158 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1159 requestDetails.setVnfInstanceId("testVnfInstanceId");
1160 requestDetails.setVnfName("testVnfName");
1161 MsoResponseWrapper okResponse = createOkResponse();
1163 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1164 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1165 .replace(CONFIGURATION_ID, configurationId)
1168 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1171 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, true);
1174 assertThat(response).isEqualToComparingFieldByField(okResponse);
1178 public void shouldProperlySetPortOnConfigurationStatusDisableWithProperParameters() {
1180 String serviceInstanceId = "testServiceId";
1181 String configurationId = "testConfigurationId";
1182 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1183 requestDetails.setVnfInstanceId("testVnfInstanceId");
1184 requestDetails.setVnfName("testVnfName");
1185 MsoResponseWrapper okResponse = createOkResponse();
1187 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1188 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1189 .replace(CONFIGURATION_ID, configurationId)
1192 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1195 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, false);
1198 assertThat(response).isEqualToComparingFieldByField(okResponse);
1202 public void shouldProperlyCreateOperationalEnvironmentActivationRequestDetailsWithProperParameters() {
1204 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1206 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> requestDetails = msoBusinessLogic.createOperationalEnvironmentActivationRequestDetails(details);
1209 assertThat(requestDetails.requestDetails.getRequestParameters().getAdditionalProperties().values()).contains(details.getWorkloadContext(), details.getManifest());
1210 assertThat(requestDetails.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1214 public void shouldProperlyGetOperationalEnvironmentActivationPathWithProperParameters() {
1216 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1219 String response = msoBusinessLogic.getOperationalEnvironmentActivationPath(details);
1222 assertThat(response).contains(operationalEnvironmentId);
1226 public void shouldProperlyCreateOperationalEnvironmentDeactivationRequestDetailsWithProperParameters() {
1228 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1231 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> response;
1232 response = msoBusinessLogic.createOperationalEnvironmentDeactivationRequestDetails(details);
1235 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1239 public void shouldProperlyGetCloudResourcesRequestsStatusPathWithProperParameters() {
1241 String requestId = "testRequestId";
1244 String response = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId);
1247 assertThat(response).contains(requestId);
1251 public void shouldProperlyGetOperationalEnvironmentDeactivationPathWithProperParameters() {
1253 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1256 String response = msoBusinessLogic.getOperationalEnvironmentDeactivationPath(details);
1259 assertThat(response).contains(operationalEnvironmentId);
1263 public void shouldProperlyGetOperationalEnvironmentCreationPathWithProperParameters() {
1265 String response = msoBusinessLogic.getOperationalEnvironmentCreationPath();
1268 assertThat(response).isNotBlank();
1272 public void shouldProperlyConvertParametersToRequestDetailsWithProperParameters() {
1274 OperationalEnvironmentController.OperationalEnvironmentCreateBody input = createTestOperationalEnvironmentCreateBody();
1277 org.onap.vid.changeManagement.RequestDetailsWrapper<OperationEnvironmentRequestDetails> response
1278 = msoBusinessLogic.convertParametersToRequestDetails(input, userId);
1281 assertThat(response.requestDetails.getRequestInfo().getInstanceName()).isEqualTo(input.getInstanceName());
1282 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1283 assertThat(response.requestDetails.getRequestParameters().getOperationalEnvironmentType()).isEqualTo(input.getOperationalEnvironmentType());
1284 assertThat(response.requestDetails.getRequestParameters().getTenantContext()).isEqualTo(input.getTenantContext());
1285 assertThat(response.requestDetails.getRequestParameters().getWorkloadContext()).isEqualTo(input.getWorkloadContext());
1289 public void shouldProperlyRemoveRelationshipFromServiceInstanceWithProperParameters() {
1291 MsoResponseWrapper expectedResponse = createOkResponse();
1292 String serviceInstanceId = "testServiceId";
1293 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1295 given(msoInterface.removeRelationshipFromServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/removeRelationships")))
1296 .willReturn(expectedResponse);
1299 MsoResponseWrapper response = msoBusinessLogic.removeRelationshipFromServiceInstance(requestDetails, serviceInstanceId);
1302 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1306 public void shouldProperlyAddRelationshipToServiceInstanceWithProperParameters() {
1308 MsoResponseWrapper expectedResponse = createOkResponse();
1309 String serviceInstanceId = "testServiceId";
1310 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1312 given(msoInterface.addRelationshipToServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/addRelationships")))
1313 .willReturn(expectedResponse);
1316 MsoResponseWrapper response = msoBusinessLogic.addRelationshipToServiceInstance(requestDetails, serviceInstanceId);
1319 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1323 public void shouldProperlyRequestTypeFromValueWithValidParameters() {
1325 String testValue = "createInstance";
1327 MsoBusinessLogicImpl.RequestType response = MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1330 assertThat(response.toString()).isEqualTo(testValue);
1333 @Test(expectedExceptions = IllegalArgumentException.class)
1334 public void shouldThrowExceptionWhenRequestTypeFromValueWithWrongParameter() {
1336 String testValue = "notExistingParameter";
1338 MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1342 public void shouldProperlyInvokeVnfWorkflowWithValidParameters() {
1344 MsoResponseWrapper okResponse = createOkResponse();
1345 WorkflowRequestDetail request = createWorkflowRequestDetail();
1346 UUID serviceInstanceId = new UUID(1,10);
1347 UUID vnfInstanceId = new UUID(2,20);
1348 UUID workflow_UUID = new UUID(3,30);
1349 String path = "/onap/so/infra/instanceManagement/v1/serviceInstances/"+serviceInstanceId+"/vnfs/"+vnfInstanceId+"/workflows/"+workflow_UUID;
1351 given(msoInterface.invokeWorkflow(eq(request), eq(path), MockitoHamcrest.argThat(allOf(hasEntry("X-RequestorID", "testRequester"),hasEntry("X-ONAP-PartnerName", "VID"))))).willReturn(okResponse);
1354 MsoResponseWrapper response = msoBusinessLogic.invokeVnfWorkflow(request, "testRequester", serviceInstanceId, vnfInstanceId, workflow_UUID);
1357 assertThat(response).isEqualToComparingFieldByField(okResponse);
1360 private WorkflowRequestDetail createWorkflowRequestDetail() {
1361 WorkflowRequestDetail workflowRequestDetail = new WorkflowRequestDetail();
1362 org.onap.vid.changeManagement.RequestParameters requestParameters = new org.onap.vid.changeManagement.RequestParameters();
1363 HashMap<String,String> paramsMap = new HashMap<>();
1364 paramsMap.put("testKey1","testValue1");
1365 paramsMap.put("testKey2","testValue2");
1367 List<Map<String,String>> mapArray= new ArrayList<>();
1368 mapArray.add(paramsMap);
1369 requestParameters.setUserParams(mapArray);
1371 CloudConfiguration cloudConfiguration = new CloudConfiguration();
1372 cloudConfiguration.setCloudOwner("testOwne");
1373 cloudConfiguration.setTenantId("testId");
1374 cloudConfiguration.setLcpCloudRegionId("testLcpCloudId");
1376 workflowRequestDetail.setRequestParameters(requestParameters);
1377 workflowRequestDetail.setCloudConfiguration(cloudConfiguration);
1378 return workflowRequestDetail;
1381 private OperationalEnvironmentActivateInfo createTestOperationalEnvironmentActivateInfo() {
1382 OperationalEnvironmentController.OperationalEnvironmentActivateBody operationalEnvironmentActivateBody = new OperationalEnvironmentController.OperationalEnvironmentActivateBody(
1383 "testRelatedInstanceId",
1384 "testRelatedInstanceName",
1385 "testWorkloadContext",
1386 new OperationalEnvironmentController.OperationalEnvironmentManifest()
1388 return new OperationalEnvironmentActivateInfo(operationalEnvironmentActivateBody, userId, operationalEnvironmentId);
1391 private OperationalEnvironmentDeactivateInfo createTestOperationalEnvironmentDeactivateInfo() {
1392 return new OperationalEnvironmentDeactivateInfo(userId, operationalEnvironmentId);
1395 private OperationalEnvironmentController.OperationalEnvironmentCreateBody createTestOperationalEnvironmentCreateBody() {
1396 return new OperationalEnvironmentController.OperationalEnvironmentCreateBody(
1398 "testEcompInstanceId",
1399 "testEcompInstanceName",
1400 "testOperationalEnvironmentType",
1401 "testTenantContext",
1402 "testWorkloadContext"
1406 private MsoResponseWrapper createOkResponse() {
1407 HttpStatus expectedStatus = HttpStatus.ACCEPTED;
1408 String expectedBody = " \"body\": {\n" +
1409 " \"requestReferences\": {\n" +
1410 " \"instanceId\": \" 123456 \",\n" +
1411 " \"requestId\": \"b6dc9806-b094-42f7-9386-a48de8218ce8\"\n" +
1413 MsoResponseWrapper responseWrapper = new MsoResponseWrapper();
1414 responseWrapper.setEntity(expectedBody);
1415 responseWrapper.setStatus(expectedStatus.value());
1416 return responseWrapper;
1419 private String getFileContentAsString(String resourceName) throws Exception {
1420 Path path = Paths.get("payload_jsons", resourceName);
1421 URL url = this.getClass().getClassLoader().getResource(path.toString());
1424 result = IOUtils.toString(url.toURI(), "UTF-8");
1429 private static class MsoRequestWrapperMatcher implements
1430 ArgumentMatcher<org.onap.vid.changeManagement.RequestDetailsWrapper> {
1432 private final org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest;
1434 MsoRequestWrapperMatcher(org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest) {
1435 this.expectedRequest = expectedRequest;
1439 public boolean matches(org.onap.vid.changeManagement.RequestDetailsWrapper argument) {
1440 return expectedRequest.requestDetails.equals(argument.requestDetails);
1444 private class MsoTestException extends RuntimeException {
1445 MsoTestException(String testException) {
1446 super(testException);