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.model.SOWorkflowList;
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.anyString;
82 import static org.mockito.ArgumentMatchers.argThat;
83 import static org.mockito.ArgumentMatchers.eq;
84 import static org.mockito.ArgumentMatchers.isA;
85 import static org.mockito.ArgumentMatchers.endsWith;
86 import static org.mockito.BDDMockito.given;
87 import static org.mockito.Mockito.doThrow;
88 import static org.mockito.Mockito.mock;
89 import static org.onap.vid.controller.MsoController.CONFIGURATION_ID;
90 import static org.onap.vid.controller.MsoController.REQUEST_TYPE;
91 import static org.onap.vid.controller.MsoController.SVC_INSTANCE_ID;
92 import static org.onap.vid.controller.MsoController.VNF_INSTANCE_ID;
93 import static org.onap.vid.mso.MsoBusinessLogicImpl.validateEndpointPath;
95 @ContextConfiguration(classes = {SystemProperties.class})
96 public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests {
98 private static final ObjectMapper objectMapper = new ObjectMapper();
101 private FeatureManager featureManager;
104 private MsoInterface msoInterface;
107 private SOWorkflowList workflowList;
110 private HttpResponse<SOWorkflowList> workflowListResponse;
113 private RequestDetails msoRequest;
116 private MsoBusinessLogicImpl msoBusinessLogic;
117 private String userId = "testUserId";
118 private String operationalEnvironmentId = "testOperationalEnvironmentId";
121 public void setUp() {
122 MockitoAnnotations.initMocks(this);
123 msoBusinessLogic = new MsoBusinessLogicImpl(msoInterface, featureManager);
127 public void shouldProperlyCreateConfigurationInstanceWithCorrectServiceInstanceId() throws Exception {
129 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
130 String endpointTemplate = String.format("/serviceInstances/v6/%s/configurations", serviceInstanceId);
131 RequestDetailsWrapper requestDetailsWrapper = createRequestDetails();
132 MsoResponseWrapper expectedResponse = createOkResponse();
133 given(msoInterface.createConfigurationInstance(requestDetailsWrapper, endpointTemplate))
134 .willReturn(expectedResponse);
137 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
138 .createConfigurationInstance(requestDetailsWrapper, serviceInstanceId);
141 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
144 private RequestDetailsWrapper createRequestDetails() throws Exception {
145 final URL resource = this.getClass().getResource("/payload_jsons/mso_request_create_configuration.json");
146 RequestDetails requestDetails = objectMapper.readValue(resource, RequestDetails.class);
147 return new RequestDetailsWrapper(requestDetails);
151 public void shouldProperlyValidateEndpointPathWheEendPointIsNotEmptyAndValid() {
152 System.setProperty("TestEnv", "123");
153 String foundEndPoint = validateEndpointPath("TestEnv");
154 assertEquals("123", foundEndPoint);
158 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathEndPointIsNotEmptyAndValid() {
159 assertThatExceptionOfType(RuntimeException.class)
160 .isThrownBy(() -> validateEndpointPath("NotExists"));
164 public void shouldThrowRuntimeExceptionWhenValidateEndpointPathWhenEndPointIsNotEmptyButDoesntExists() {
165 String endPoint = "EmptyEndPoint";
166 System.setProperty(endPoint, "");
167 assertThatExceptionOfType(GenericUncheckedException.class)
168 .isThrownBy(() -> validateEndpointPath(endPoint))
169 .withMessage(endPoint + " env variable is not defined");
173 public void shouldProperlyCreateSvcInstanceWithProperParameters() {
175 MsoResponseWrapper expectedResponse = createOkResponse();
176 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
177 given(msoInterface.createSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
179 MsoResponseWrapper response = msoBusinessLogic.createSvcInstance(msoRequest);
182 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
186 public void shouldProperlyCreateE2eSvcInstanceWithProperParameters() {
188 MsoResponseWrapper expectedResponse = createOkResponse();
189 String svcEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE);
190 given(msoInterface.createE2eSvcInstance(msoRequest, svcEndpoint)).willReturn(expectedResponse);
193 MsoResponseWrapper response = msoBusinessLogic.createE2eSvcInstance(msoRequest);
196 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
200 public void shouldProperlyCreateVnfWithProperParameters() {
202 MsoResponseWrapper expectedResponse = createOkResponse();
203 String endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE);
204 String vnfInstanceId = "testVnfInstanceTempId";
205 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
207 given(msoInterface.createVnf(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
209 MsoResponseWrapper response = msoBusinessLogic.createVnf(msoRequest, vnfInstanceId);
212 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
216 public void shouldProperlyCreateNwInstanceWithProperParameters() {
218 MsoResponseWrapper expectedResponse = createOkResponse();
219 String vnfInstanceId = "testNwInstanceTempId";
220 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
221 String nw_endpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, vnfInstanceId);
223 given(msoInterface.createNwInstance(msoRequest, nw_endpoint)).willReturn(expectedResponse);
225 MsoResponseWrapper response = msoBusinessLogic.createNwInstance(msoRequest, vnfInstanceId);
228 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
232 public void shouldProperlyCreateVolumeGroupInstanceWithProperParameters() {
233 MsoResponseWrapper expectedResponse = createOkResponse();
234 String serviceInstanceId = "testServiceInstanceTempId";
235 String vnfInstanceId = "testVnfInstanceTempId";
236 String nwEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
237 String vnfEndpoint = nwEndpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
238 vnfEndpoint = vnfEndpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
240 given(msoInterface.createVolumeGroupInstance(msoRequest, vnfEndpoint)).willReturn(expectedResponse);
242 MsoResponseWrapper response = msoBusinessLogic.createVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId);
245 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
249 public void shouldProperlyCreateVfModuleInstanceWithProperParameters() {
250 MsoResponseWrapper expectedResponse = createOkResponse();
251 String serviceInstanceId = "testServiceInstanceTempId";
252 String vnfInstanceId = "testVnfInstanceTempId";
253 String partial_endpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
254 String vf_module_endpoint = partial_endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
255 vf_module_endpoint = vf_module_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
257 given(msoInterface.createVfModuleInstance(msoRequest, vf_module_endpoint)).willReturn(expectedResponse);
259 MsoResponseWrapper response = msoBusinessLogic.createVfModuleInstance(msoRequest, serviceInstanceId, vnfInstanceId);
262 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
266 public void shouldProperlyDeleteE2eSvcInstanceWithProperParameters() {
267 MsoResponseWrapper expectedResponse = createOkResponse();
268 String serviceInstanceId = "testDeleteE2eSvcInstanceTempId";
269 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE) + "/" + serviceInstanceId;
271 given(msoInterface.deleteE2eSvcInstance(msoRequest, endpoint)).willReturn(expectedResponse);
273 MsoResponseWrapper response = msoBusinessLogic.deleteE2eSvcInstance(msoRequest, serviceInstanceId);
276 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
280 public void shouldProperlyDeleteSvcInstanceWithProperParametersAndFalseFeatureFlag() {
282 String endpointTemplate = "/serviceInstances/v5/%s";
283 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
284 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
285 RequestDetails requestDetails = new RequestDetails();
286 MsoResponseWrapper expectedResponse = createOkResponse();
287 given(msoInterface.deleteSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
288 given(featureManager.isActive(Features.FLAG_UNASSIGN_SERVICE)).willReturn(false);
291 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
292 .deleteSvcInstance(requestDetails, serviceInstanceId, "unAssignOrDeleteParams");
295 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
299 public void shouldProperlyDeleteSvcInstanceWithProperParametersAndTrueFeatureFlag() {
301 String endpointTemplate = "/serviceInstantiation/v5/serviceInstances/%s/unassign";
302 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
303 String svcEndpoint = String.format(endpointTemplate, serviceInstanceId);
304 RequestDetails requestDetails = new RequestDetails();
305 MsoResponseWrapper expectedResponse = createOkResponse();
306 given(msoInterface.unassignSvcInstance(requestDetails, svcEndpoint)).willReturn(expectedResponse);
307 given(featureManager.isActive(Features.FLAG_UNASSIGN_SERVICE)).willReturn(true);
310 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
311 .deleteSvcInstance(requestDetails, serviceInstanceId, "assigned");
314 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
318 public void shouldProperlyDeleteVnfWithProperParameters() {
320 String endpointTemplate = "/serviceInstances/v5/%s/vnfs/%s";
321 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
322 String vnfInstanceId = "testVnfInstanceTempId";
323 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
324 RequestDetails requestDetails = new RequestDetails();
325 MsoResponseWrapper expectedResponse = createOkResponse();
326 given(msoInterface.deleteVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
329 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
330 .deleteVnf(requestDetails, serviceInstanceId, vnfInstanceId);
333 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
337 public void shouldProperlyDeleteVfModuleWithProperParameters() {
339 String endpointTemplate = "/serviceInstances/v7/%s/vnfs/%s/vfModules/%s";
340 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
341 String vnfInstanceId = "testVnfInstanceTempId";
342 String vfModuleId = "testVfModuleId";
343 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId, vfModuleId);
344 RequestDetails requestDetails = new RequestDetails();
345 MsoResponseWrapper expectedResponse = createOkResponse();
346 given(msoInterface.deleteVfModule(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
349 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
350 .deleteVfModule(requestDetails, serviceInstanceId, vnfInstanceId, vfModuleId);
352 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedResponse);
356 public void shouldProperlyDeleteVolumeGroupInstanceWithProperParameters() {
357 MsoResponseWrapper expectedResponse = createOkResponse();
358 String serviceInstanceId = "testServiceInstanceTempId";
359 String vnfInstanceId = "testVnfInstanceTempId";
360 String volumeGroupId = "testvolumeGroupIdTempId";
362 String deleteVolumeGroupEndpoint = getDeleteVolumeGroupEndpoint(serviceInstanceId, vnfInstanceId, volumeGroupId);
364 given(msoInterface.deleteVolumeGroupInstance(msoRequest, deleteVolumeGroupEndpoint)).willReturn(expectedResponse);
366 MsoResponseWrapper response = msoBusinessLogic.deleteVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId, volumeGroupId);
369 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
373 private String getDeleteVolumeGroupEndpoint(String serviceInstanceId, String vnfInstanceId, String volumeGroupId) {
374 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
375 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
376 String vnfEndpoint = svc_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
377 return vnfEndpoint + "/" + volumeGroupId;
381 public void shouldProperlyDeleteNwInstanceWithProperParameters() {
382 MsoResponseWrapper expectedResponse = createOkResponse();
383 String serviceInstanceId = "testServiceInstanceTempId";
384 String networkInstanceId = "testNetworkInstanceTempId";
386 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
387 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
388 String delete_nw_endpoint = svc_endpoint + "/" + networkInstanceId;
390 given(msoInterface.deleteNwInstance(msoRequest, delete_nw_endpoint)).willReturn(expectedResponse);
392 MsoResponseWrapper response = msoBusinessLogic.deleteNwInstance(msoRequest, serviceInstanceId, networkInstanceId);
395 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
399 public void shouldProperlyGetOrchestrationRequestWithProperParameters() {
400 MsoResponseWrapper expectedResponse = createOkResponse();
401 String requestId = "testRequestTempId";
402 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
403 String path = p + "/" + requestId;
405 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
407 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequest(requestId);
408 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
411 @Test(expectedExceptions = MsoTestException.class)
412 public void shouldProperlyGetOrchestrationRequestWithWrongParameters() {
413 String requestId = "testWrongRequestTempId";
414 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
415 String path = p + "/" + requestId;
417 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
419 msoBusinessLogic.getOrchestrationRequest(requestId);
423 public void shouldProperlyGetOrchestrationRequestsWithProperParameters() {
424 MsoResponseWrapper expectedResponse = createOkResponse();
425 String filterString = "testRequestsTempId";
426 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
427 String path = url + filterString;
429 given(msoInterface.getOrchestrationRequest(path)).willReturn(expectedResponse);
431 MsoResponseWrapper response = msoBusinessLogic.getOrchestrationRequests(filterString);
432 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
435 @Test(expectedExceptions = MsoTestException.class)
436 public void shouldThrowExceptionWhenGetOrchestrationRequestsWithWrongParameters() {
437 String filterString = "testRequestsTempId";
438 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
439 String path = p + filterString;
441 given(msoInterface.getOrchestrationRequest(path)).willThrow(new MsoTestException("testException"));
443 msoBusinessLogic.getOrchestrationRequests(filterString);
447 public void shouldSendProperScaleOutRequest() throws IOException {
449 String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d";
450 String vnfInstanceId = "testVnfInstanceTempId";
451 String endpointTemplate = "/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s/vfModules/scaleOut";
452 String vnfEndpoint = String.format(endpointTemplate, serviceInstanceId, vnfInstanceId);
453 org.onap.vid.changeManagement.RequestDetails requestDetails = readRequest();
454 org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> expectedRequest = readExpectedRequest();
455 MsoResponseWrapper expectedMsoResponseWrapper = createOkResponse();
458 .scaleOutVFModuleInstance(argThat(new MsoRequestWrapperMatcher(expectedRequest)),
460 .willReturn(expectedMsoResponseWrapper);
463 MsoResponseWrapper msoResponseWrapper = msoBusinessLogic
464 .scaleOutVfModuleInstance(requestDetails, serviceInstanceId, vnfInstanceId);
467 assertThat(msoResponseWrapper).isEqualToComparingFieldByField(expectedMsoResponseWrapper);
470 private org.onap.vid.changeManagement.RequestDetails readRequest() throws IOException {
471 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayload.json");
472 URL url = this.getClass().getClassLoader().getResource(path.toString());
473 return objectMapper.readValue(url, org.onap.vid.changeManagement.RequestDetails.class);
476 private org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails> readExpectedRequest()
478 Path path = Paths.get("payload_jsons", "scaleOutVfModulePayloadToMso.json");
479 URL url = this.getClass().getClassLoader().getResource(path.toString());
480 return objectMapper.readValue(url,
481 new TypeReference<org.onap.vid.changeManagement.RequestDetailsWrapper<org.onap.vid.changeManagement.RequestDetails>>() {
487 public void shouldFilterOutOrchestrationRequestsNotAllowedInDashboard() throws Exception {
489 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_response.json");
490 String scaleOutActionOrchestrationRequests = getFileContentAsString("mso_action_scaleout_sample_response.json");
492 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
494 .getOrchestrationRequest(any(String.class), any(String.class), any(String.class),
495 any(RestObject.class), anyBoolean()))
496 .willReturn(msoResponseWrapperMock);
497 given(msoResponseWrapperMock.getEntity())
498 .willReturn(vnfModelTypeOrchestrationRequests, scaleOutActionOrchestrationRequests);
501 List<Request> filteredOrchestrationReqs = msoBusinessLogic.getOrchestrationRequestsForDashboard();
503 assertThat(filteredOrchestrationReqs).hasSize(3);
504 assertThat(MsoBusinessLogicImpl.DASHBOARD_ALLOWED_TYPES)
505 .containsAll(filteredOrchestrationReqs
507 .map(el -> el.getRequestType().toUpperCase())
508 .collect(Collectors.toList()));
509 assertThat(filteredOrchestrationReqs)
510 .extracting(Request::getRequestScope)
511 .containsOnly("vnf", "vfModule");
514 @Test(expectedExceptions = GenericUncheckedException.class)
515 public void shouldThrowGenericUncheckedExceptionWhenGetOrchestrationRequestsForDashboardWithWrongJsonFile_() throws Exception {
517 String vnfModelTypeOrchestrationRequests = getFileContentAsString("mso_model_info_sample_wrong_response.json");
519 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
521 .getOrchestrationRequest(any(String.class), any(String.class), any(String.class),
522 any(RestObject.class), anyBoolean()))
523 .willReturn(msoResponseWrapperMock);
524 given(msoResponseWrapperMock.getEntity())
525 .willReturn(vnfModelTypeOrchestrationRequests);
528 msoBusinessLogic.getOrchestrationRequestsForDashboard();
532 public void shouldProperlyGetManualTasksByRequestIdWithProperParameters() throws Exception {
534 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_test.json");
536 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
538 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
539 any(RestObject.class)))
540 .willReturn(msoResponseWrapperMock);
541 given(msoResponseWrapperMock.getEntity())
542 .willReturn(manualTasksList);
545 List<Task> filteredOrchestrationReqs = msoBusinessLogic.getManualTasksByRequestId("TestId");
548 assertThat(filteredOrchestrationReqs).hasSize(2);
549 assertThat(filteredOrchestrationReqs).extracting("taskId", "type").
551 tuple("123123abc", "testTask"),
552 tuple("321321abc", "testTask")
556 @Test(expectedExceptions = GenericUncheckedException.class)
557 public void shouldThrowGenericUncheckedExceptionWhenGetManualTasksByRequestIdWithWrongJsonFile() throws Exception {
559 String manualTasksList = getFileContentAsString("manual_tasks_by_requestId_wrongJson_test.json");
561 MsoResponseWrapper msoResponseWrapperMock = mock(MsoResponseWrapper.class);
563 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
564 any(RestObject.class)))
565 .willReturn(msoResponseWrapperMock);
566 given(msoResponseWrapperMock.getEntity())
567 .willReturn(manualTasksList);
570 msoBusinessLogic.getManualTasksByRequestId("TestId");
573 @Test(expectedExceptions = MsoTestException.class)
574 public void getManualTasksByRequestIdWithArgument_shouldThrowException() {
577 .getManualTasksByRequestId(any(String.class), any(String.class), any(String.class),
578 any(RestObject.class)))
579 .willThrow(MsoTestException.class);
582 msoBusinessLogic.getManualTasksByRequestId("TestId");
586 public void shouldProperlyCompleteManualTaskWithProperParameters() {
588 MsoResponseWrapper expectedResponse = createOkResponse();
589 RequestDetails requestDetails = new RequestDetails();
590 String taskId = "testTaskId";
592 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
593 String path = url + "/" + taskId + "/complete";
595 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willReturn(expectedResponse);
598 MsoResponseWrapper response = msoBusinessLogic.completeManualTask(requestDetails, taskId);
601 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
606 public void shouldProperlyActivateServiceInstanceWithProperParameters() {
608 RequestDetails detail = new RequestDetails();
609 String taskId = "testTaskId";
611 RestObject<String> restObjStr = new RestObject<>();
613 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
616 MsoResponseWrapper response = msoBusinessLogic.activateServiceInstance(detail, taskId);
619 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
623 @Test(expectedExceptions = MsoTestException.class)
624 public void shouldThrowExceptionWhenActivateServiceInstanceWithWrongParameters() {
626 RequestDetails requestDetails = new RequestDetails();
627 String taskId = "testTaskId";
629 RestObject<String> restObjStr = new RestObject<>();
631 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
633 doThrow(new MsoTestException("testException")).
634 when(msoInterface).setServiceInstanceStatus(eq(requestDetails), any(String.class), any(String.class), any(String.class), any(RestObject.class));
637 MsoResponseWrapper response = msoBusinessLogic.activateServiceInstance(requestDetails, taskId);
640 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
643 @Test(expectedExceptions = MsoTestException.class)
644 public void shouldThrowExceptionWhenManualTaskWithWrongParameters() {
646 RequestDetails requestDetails = new RequestDetails();
649 String url = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
650 String path = url + "/" + taskId + "/complete";
652 given(msoInterface.completeManualTask(eq(requestDetails), any(String.class), any(String.class), eq(path), any(RestObject.class))).willThrow(new MsoTestException("empty path"));
655 msoBusinessLogic.completeManualTask(requestDetails, taskId);
659 public void shouldProperlyUpdateVnfWithProperParameters() {
661 MsoResponseWrapper expectedResponse = createOkResponse();
662 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
664 String serviceInstanceId = "testServiceId";
665 String vnfInstanceId = "testVnfInstanceId";
667 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
668 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
669 vnfEndpoint = vnfEndpoint + '/' + vnfInstanceId;
671 given(msoInterface.updateVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
674 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnf(requestDetails, serviceInstanceId, vnfInstanceId);
677 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
681 public void shouldProperlyReplaceVnfWithProperParameters() {
683 MsoResponseWrapper expectedResponse = createOkResponse();
684 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
686 String serviceInstanceId = "testServiceId";
687 String vnfInstanceId = "testVnfInstanceId";
689 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
690 String vnfEndpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
691 vnfEndpoint = vnfEndpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
692 vnfEndpoint = vnfEndpoint.replace(REQUEST_TYPE, ChangeManagementRequest.MsoChangeManagementRequest.REPLACE);
694 given(msoInterface.replaceVnf(requestDetails, vnfEndpoint)).willReturn(expectedResponse);
697 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.replaceVnf(requestDetails, serviceInstanceId, vnfInstanceId);
700 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
704 public void shouldProperlyGenerateInPlaceMsoRequestWithProperParameters() {
706 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
708 requestDetails.setVnfInstanceId("testVnfInstanceId");
709 requestDetails.setVnfName("testVnfName");
710 requestDetails.setRequestParameters(new RequestParameters());
712 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
713 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
714 "\"new_software_version\": \"testNewSoftwareParam\"," +
715 "\"operations_timeout\": \"100\"" +
718 RequestDetails inPlaceSoftwareUpdateRequest = new RequestDetails();
719 inPlaceSoftwareUpdateRequest.setCloudConfiguration(requestDetails.getCloudConfiguration());
720 inPlaceSoftwareUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
721 inPlaceSoftwareUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
722 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
723 requestDetailsWrapper.requestDetails = inPlaceSoftwareUpdateRequest;
726 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
729 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
732 @Test(expectedExceptions = BadRequestException.class)
733 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithParametersWithWrongCharacters() {
735 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
737 requestDetails.setVnfInstanceId("testVnfInstanceId");
738 requestDetails.setVnfName("testVnfName");
739 requestDetails.setRequestParameters(new RequestParameters());
741 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
742 "\"existing_software_version\": \"#####\"," +
743 "\"new_software_version\": \"testNewSoftwareParam\"" +
747 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
750 @Test(expectedExceptions = BadRequestException.class)
751 public void shouldThrowExceptionWhenGenerateInPlaceMsoRequestWithWrongParameters() {
753 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
755 requestDetails.setVnfInstanceId("testVnfInstanceId");
756 requestDetails.setVnfName("testVnfName");
757 requestDetails.setRequestParameters(new RequestParameters());
759 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
760 "\"test-wrong-parameter\": \"testParam\"," +
761 "\"new_software_version\": \"testNewSoftwareParam\"" +
765 msoBusinessLogic.generateInPlaceMsoRequest(requestDetails);
769 public void shouldProprleyGenerateConfigMsoRequestWithProperParameters() {
771 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
773 requestDetails.setVnfInstanceId("testVnfInstanceId");
774 requestDetails.setVnfName("testVnfName");
775 requestDetails.setRequestParameters(new RequestParameters());
777 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
778 "\"request-parameters\": \"testRequestParam\"," +
779 "\"configuration-parameters\": \"testConfigParams\"" +
782 RequestDetails configUpdateRequest = new RequestDetails();
783 configUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
784 configUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
786 org.onap.vid.changeManagement.RequestDetailsWrapper requestDetailsWrapper = new org.onap.vid.changeManagement.RequestDetailsWrapper();
787 requestDetailsWrapper.requestDetails = configUpdateRequest;
790 org.onap.vid.changeManagement.RequestDetailsWrapper response = msoBusinessLogic.generateConfigMsoRequest(requestDetails);
793 assertThat(response).isEqualToComparingFieldByField(requestDetailsWrapper);
796 @Test(expectedExceptions = BadRequestException.class)
797 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAdditionalParameters() {
799 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
801 requestDetails.setVnfInstanceId("testVnfInstanceId");
802 requestDetails.setVnfName("testVnfName");
803 requestDetails.setRequestParameters(null);
806 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
809 @Test(expectedExceptions = BadRequestException.class)
810 public void shouldThrowExceptionWhenGenerateConfigMsoRequestWithWrongPayload() {
812 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
814 requestDetails.setVnfInstanceId("testVnfInstanceId");
815 requestDetails.setVnfName("testVnfName");
816 requestDetails.setRequestParameters(new RequestParameters());
818 requestDetails.getRequestParameters().setAdditionalProperty("payload", null);
821 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
824 @Test(expectedExceptions = BadRequestException.class)
825 public void shouldThrowExceptionGenerateConfigMsoRequestWithoutAnyParameter() {
827 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
829 requestDetails.setVnfInstanceId("testVnfInstanceId");
830 requestDetails.setVnfName("testVnfName");
831 requestDetails.setRequestParameters(new RequestParameters());
833 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
834 "\"test-wrong-parameter\": \"testParam\"," +
835 "\"configuration-parameters\": \"testConfigParam\"" +
839 msoBusinessLogic.generateConfigMsoRequest(requestDetails);
843 public void shouldProperlyGetActivateFabricConfigurationPathWithProperParameters() {
845 String serviceInstanceId = "testServiceId";
846 String path = validateEndpointPath(MsoProperties.MSO_REST_API_SERVICE_INSTANCE_CREATE);
847 path += "/" + serviceInstanceId + "/activateFabricConfiguration";
850 String response = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
853 assertThat(response).isEqualTo(path);
857 public void shouldProperlyGetDeactivateAndCloudDeletePathWithProperParameters() {
859 String serviceInstanceId = "testServiceId";
860 String vnfInstanceId = "testVnfInstanceId";
861 String vfModuleInstanceId = "testVfModuleInstanceId";
862 String path = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
863 path = path.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
864 path = path.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
865 path += "/" + vfModuleInstanceId + "/deactivateAndCloudDelete";
868 String response = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
871 assertThat(response).isEqualTo(path);
875 public void shouldProperlyBuildRequestDetailsForSoftDeleteWithProperParameters() {
877 SoftDeleteRequest softDeleteRequest = new SoftDeleteRequest();
878 RequestDetails requestDetails = new RequestDetails();
880 String userId = "testUserID";
881 String tenantId = "testTenantId ";
882 String cloudRegionId = "testCloudId";
885 RequestInfo requestInfo = new RequestInfo();
886 requestInfo.setSource("VID");
887 requestInfo.setRequestorId(userId);
888 requestDetails.setRequestInfo(requestInfo);
890 CloudConfiguration cloudConfiguration = new CloudConfiguration();
891 cloudConfiguration.setTenantId(tenantId);
892 cloudConfiguration.setLcpCloudRegionId(cloudRegionId);
893 requestDetails.setCloudConfiguration(cloudConfiguration);
895 setModelInfoForRequestDetails(requestDetails);
897 setRequestParametersForRequestDetails(requestDetails);
899 softDeleteRequest.setLcpCloudRegionId(cloudRegionId);
900 softDeleteRequest.setTenantId(tenantId);
901 softDeleteRequest.setUserId(userId);
904 RequestDetails response = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest);
907 assertThat(response).isEqualTo(requestDetails);
910 private void setRequestParametersForRequestDetails(RequestDetails requestDetails) {
911 RequestParameters requestParameters = new RequestParameters();
912 requestParameters.setTestApi("GR_API");
913 requestDetails.setRequestParameters(requestParameters);
916 private void setModelInfoForRequestDetails(RequestDetails requestDetails) {
917 ModelInfo modelInfo = new ModelInfo();
918 modelInfo.setModelType("vfModule");
919 requestDetails.setModelInfo(modelInfo);
923 public void shouldProperlyDeactivateAndCloudDeleteWithProperParameters() {
925 String serviceInstanceId = "testServiceId";
926 String vnfInstanceId = "testVnfInstanceId";
927 String vfModuleInstanceId = "testVfModuleInstanceId";
928 RequestDetails requestDetails = new RequestDetails();
930 String path = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
932 RequestReferences requestReferences = new RequestReferences();
933 requestReferences.setInstanceId("testInstance");
934 requestReferences.setRequestId("testRequest");
936 HttpResponse<RequestReferencesContainer> expectedResponse = HttpResponse.fallback(new RequestReferencesContainer(requestReferences));
938 MsoResponseWrapper2 responseWrapped = new MsoResponseWrapper2<>(expectedResponse);
940 given(msoInterface.post(eq(path), any(org.onap.vid.changeManagement.RequestDetailsWrapper.class), eq(RequestReferencesContainer.class))).willReturn(expectedResponse);
943 MsoResponseWrapper2 response = msoBusinessLogic.deactivateAndCloudDelete(serviceInstanceId, vnfInstanceId, vfModuleInstanceId, requestDetails);
946 assertThat(response).isEqualToComparingFieldByField(responseWrapped);
950 public void shouldProperlyActivateFabricConfigurationWithProperParameters() {
952 String serviceInstanceId = "testServiceId";
953 RequestDetails requestDetails = new RequestDetails();
955 String path = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
957 RequestReferences requestReferences = new RequestReferences();
958 requestReferences.setInstanceId("testInstance");
959 requestReferences.setRequestId("testRequest");
961 HttpResponse<RequestReferencesContainer> expectedResponse = HttpResponse.fallback(new RequestReferencesContainer(requestReferences));
963 MsoResponseWrapper2 responseWrapped = new MsoResponseWrapper2<>(expectedResponse);
965 given(msoInterface.post(eq(path), any(org.onap.vid.changeManagement.RequestDetailsWrapper.class), eq(RequestReferencesContainer.class))).willReturn(expectedResponse);
968 MsoResponseWrapper2 response = msoBusinessLogic.activateFabricConfiguration(serviceInstanceId, requestDetails);
971 assertThat(response).isEqualToComparingFieldByField(responseWrapped);
975 public void shouldProperlyUpdateVnfSoftwareWithProperParameters() {
977 String serviceInstanceId = "testServiceId";
978 String vnfInstanceId = "testVnfInstanceId";
980 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
982 requestDetails.setVnfInstanceId("testVnfInstanceId");
983 requestDetails.setVnfName("testVnfName");
984 requestDetails.setRequestParameters(new RequestParameters());
986 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
987 "\"existing_software_version\": \"testExistingSoftwareParam\"," +
988 "\"new_software_version\": \"testNewSoftwareParam\"," +
989 "\"operations_timeout\": \"100\"" +
992 MsoResponseWrapper okResponse = createOkResponse();
994 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
997 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfSoftware(requestDetails, serviceInstanceId, vnfInstanceId);
1000 assertThat(response).isEqualToComparingFieldByField(okResponse);
1004 public void shouldProperlyUpdateVnfConfigWithProperParameters() {
1006 String serviceInstanceId = "testServiceId";
1007 String vnfInstanceId = "testVnfInstanceId";
1009 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1011 requestDetails.setVnfInstanceId("testVnfInstanceId");
1012 requestDetails.setVnfName("testVnfName");
1013 requestDetails.setRequestParameters(new RequestParameters());
1015 requestDetails.getRequestParameters().setAdditionalProperty("payload", "{" +
1016 "\"request-parameters\": \"testRequestParam\"," +
1017 "\"configuration-parameters\": \"testConfigParams\"" +
1020 MsoResponseWrapper okResponse = createOkResponse();
1022 given(msoInterface.changeManagementUpdate(isA(org.onap.vid.changeManagement.RequestDetailsWrapper.class), any(String.class))).willReturn(okResponse);
1025 MsoResponseWrapper response = (MsoResponseWrapper) msoBusinessLogic.updateVnfConfig(requestDetails, serviceInstanceId, vnfInstanceId);
1028 assertThat(response).isEqualToComparingFieldByField(okResponse);
1032 public void shouldProperlyDeleteConfigurationWithProperParameters() {
1034 String serviceInstanceId = "testServiceId";
1035 String configurationId = "testConfigurationId";
1037 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1039 requestDetails.setVnfInstanceId("testVnfInstanceId");
1040 requestDetails.setVnfName("testVnfName");
1042 MsoResponseWrapper okResponse = createOkResponse();
1043 RequestDetailsWrapper wrappedRequestDetail = new RequestDetailsWrapper(requestDetails);
1045 given(msoInterface.deleteConfiguration(eq(wrappedRequestDetail), any(String.class))).willReturn(okResponse);
1048 MsoResponseWrapper response = msoBusinessLogic.deleteConfiguration(wrappedRequestDetail, serviceInstanceId, configurationId);
1051 assertThat(response).isEqualToComparingFieldByField(okResponse);
1055 public void shouldProperlySetConfigurationActiveStatusActiveWithProperParameters() {
1057 String serviceInstanceId = "testServiceId";
1058 String configurationId = "testConfigurationId";
1060 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1062 requestDetails.setVnfInstanceId("testVnfInstanceId");
1063 requestDetails.setVnfName("testVnfName");
1065 MsoResponseWrapper okResponse = createOkResponse();
1068 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1069 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1070 .replace(CONFIGURATION_ID, configurationId)
1073 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1076 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, true);
1079 assertThat(response).isEqualToComparingFieldByField(okResponse);
1083 public void shouldProperlySetConfigurationActiveStatusDeactivateWithProperParameters() {
1085 String serviceInstanceId = "testServiceId";
1086 String configurationId = "testConfigurationId";
1088 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1090 requestDetails.setVnfInstanceId("testVnfInstanceId");
1091 requestDetails.setVnfName("testVnfName");
1093 MsoResponseWrapper okResponse = createOkResponse();
1096 validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1097 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1098 .replace(CONFIGURATION_ID, configurationId)
1101 given(msoInterface.setConfigurationActiveStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1104 MsoResponseWrapper response = msoBusinessLogic.setConfigurationActiveStatus(requestDetails, serviceInstanceId, configurationId, false);
1107 assertThat(response).isEqualToComparingFieldByField(okResponse);
1111 public void shouldProperlySetServiceInstanceStatusActiveWithProperParameters() {
1113 String serviceInstanceId = "testServiceId";
1115 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1117 RestObject<String> restObjStr = new RestObject<>();
1119 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
1122 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, true);
1125 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1130 public void shouldProperlySetServiceInstanceStatusDeactivateWithProperParameters() {
1132 String serviceInstanceId = "testServiceId";
1134 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1136 RestObject<String> restObjStr = new RestObject<>();
1138 MsoResponseWrapper expectedResponse = MsoUtil.wrapResponse(restObjStr);
1141 MsoResponseWrapper response = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, false);
1144 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1148 @Test(expectedExceptions = MsoTestException.class)
1149 public void shouldThrowExceptionWhenSetServiceInstanceStatusWithWrongParameters() {
1151 String serviceInstanceId = "testServiceId";
1153 doThrow(new MsoTestException("testException")).
1154 when(msoInterface).setServiceInstanceStatus(eq(null), any(String.class), any(String.class), any(String.class), any(RestObject.class));
1157 msoBusinessLogic.setServiceInstanceStatus(null, serviceInstanceId, true);
1161 public void shouldProperlySetPortOnConfigurationStatusEnableWithProperParameters() {
1163 String serviceInstanceId = "testServiceId";
1164 String configurationId = "testConfigurationId";
1165 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1166 requestDetails.setVnfInstanceId("testVnfInstanceId");
1167 requestDetails.setVnfName("testVnfName");
1168 MsoResponseWrapper okResponse = createOkResponse();
1170 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1171 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1172 .replace(CONFIGURATION_ID, configurationId)
1175 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1178 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, true);
1181 assertThat(response).isEqualToComparingFieldByField(okResponse);
1185 public void shouldProperlySetPortOnConfigurationStatusDisableWithProperParameters() {
1187 String serviceInstanceId = "testServiceId";
1188 String configurationId = "testConfigurationId";
1189 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1190 requestDetails.setVnfInstanceId("testVnfInstanceId");
1191 requestDetails.setVnfName("testVnfName");
1192 MsoResponseWrapper okResponse = createOkResponse();
1194 String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE)
1195 .replace(SVC_INSTANCE_ID, serviceInstanceId)
1196 .replace(CONFIGURATION_ID, configurationId)
1199 given(msoInterface.setPortOnConfigurationStatus(eq(requestDetails), eq(endpoint))).willReturn(okResponse);
1202 MsoResponseWrapper response = msoBusinessLogic.setPortOnConfigurationStatus(requestDetails, serviceInstanceId, configurationId, false);
1205 assertThat(response).isEqualToComparingFieldByField(okResponse);
1209 public void shouldProperlyCreateOperationalEnvironmentActivationRequestDetailsWithProperParameters() {
1211 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1213 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> requestDetails = msoBusinessLogic.createOperationalEnvironmentActivationRequestDetails(details);
1216 assertThat(requestDetails.requestDetails.getRequestParameters().getAdditionalProperties().values()).contains(details.getWorkloadContext(), details.getManifest());
1217 assertThat(requestDetails.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1221 public void shouldProperlyGetOperationalEnvironmentActivationPathWithProperParameters() {
1223 OperationalEnvironmentActivateInfo details = createTestOperationalEnvironmentActivateInfo();
1226 String response = msoBusinessLogic.getOperationalEnvironmentActivationPath(details);
1229 assertThat(response).contains(operationalEnvironmentId);
1233 public void shouldProperlyCreateOperationalEnvironmentDeactivationRequestDetailsWithProperParameters() {
1235 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1238 org.onap.vid.changeManagement.RequestDetailsWrapper<RequestDetails> response;
1239 response = msoBusinessLogic.createOperationalEnvironmentDeactivationRequestDetails(details);
1242 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1246 public void shouldProperlyGetCloudResourcesRequestsStatusPathWithProperParameters() {
1248 String requestId = "testRequestId";
1251 String response = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId);
1254 assertThat(response).contains(requestId);
1258 public void shouldProperlyGetOperationalEnvironmentDeactivationPathWithProperParameters() {
1260 OperationalEnvironmentDeactivateInfo details = createTestOperationalEnvironmentDeactivateInfo();
1263 String response = msoBusinessLogic.getOperationalEnvironmentDeactivationPath(details);
1266 assertThat(response).contains(operationalEnvironmentId);
1270 public void shouldProperlyGetOperationalEnvironmentCreationPathWithProperParameters() {
1272 String response = msoBusinessLogic.getOperationalEnvironmentCreationPath();
1275 assertThat(response).isNotBlank();
1279 public void shouldProperlyConvertParametersToRequestDetailsWithProperParameters() {
1281 OperationalEnvironmentController.OperationalEnvironmentCreateBody input = createTestOperationalEnvironmentCreateBody();
1284 org.onap.vid.changeManagement.RequestDetailsWrapper<OperationEnvironmentRequestDetails> response
1285 = msoBusinessLogic.convertParametersToRequestDetails(input, userId);
1288 assertThat(response.requestDetails.getRequestInfo().getInstanceName()).isEqualTo(input.getInstanceName());
1289 assertThat(response.requestDetails.getRequestInfo().getRequestorId()).isEqualTo(userId);
1290 assertThat(response.requestDetails.getRequestParameters().getOperationalEnvironmentType()).isEqualTo(input.getOperationalEnvironmentType());
1291 assertThat(response.requestDetails.getRequestParameters().getTenantContext()).isEqualTo(input.getTenantContext());
1292 assertThat(response.requestDetails.getRequestParameters().getWorkloadContext()).isEqualTo(input.getWorkloadContext());
1296 public void shouldProperlyRemoveRelationshipFromServiceInstanceWithProperParameters() {
1298 MsoResponseWrapper expectedResponse = createOkResponse();
1299 String serviceInstanceId = "testServiceId";
1300 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1302 given(msoInterface.removeRelationshipFromServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/removeRelationships")))
1303 .willReturn(expectedResponse);
1306 MsoResponseWrapper response = msoBusinessLogic.removeRelationshipFromServiceInstance(requestDetails, serviceInstanceId);
1309 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1313 public void shouldProperlyAddRelationshipToServiceInstanceWithProperParameters() {
1315 MsoResponseWrapper expectedResponse = createOkResponse();
1316 String serviceInstanceId = "testServiceId";
1317 org.onap.vid.changeManagement.RequestDetails requestDetails = new org.onap.vid.changeManagement.RequestDetails();
1319 given(msoInterface.addRelationshipToServiceInstance(eq(requestDetails), endsWith("/" + serviceInstanceId + "/addRelationships")))
1320 .willReturn(expectedResponse);
1323 MsoResponseWrapper response = msoBusinessLogic.addRelationshipToServiceInstance(requestDetails, serviceInstanceId);
1326 assertThat(response).isEqualToComparingFieldByField(expectedResponse);
1330 public void shouldProperlyRequestTypeFromValueWithValidParameters() {
1332 String testValue = "createInstance";
1334 MsoBusinessLogicImpl.RequestType response = MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1337 assertThat(response.toString()).isEqualTo(testValue);
1340 @Test(expectedExceptions = IllegalArgumentException.class)
1341 public void shouldThrowExceptionWhenRequestTypeFromValueWithWrongParameter() {
1343 String testValue = "notExistingParameter";
1345 MsoBusinessLogicImpl.RequestType.fromValue(testValue);
1349 public void shouldProperlyInvokeVnfWorkflowWithValidParameters() {
1351 MsoResponseWrapper okResponse = createOkResponse();
1352 WorkflowRequestDetail request = createWorkflowRequestDetail();
1353 UUID serviceInstanceId = new UUID(1,10);
1354 UUID vnfInstanceId = new UUID(2,20);
1355 UUID workflow_UUID = new UUID(3,30);
1356 String path = "/onap/so/infra/instanceManagement/v1/serviceInstances/"+serviceInstanceId+"/vnfs/"+vnfInstanceId+"/workflows/"+workflow_UUID;
1358 given(msoInterface.invokeWorkflow(eq(request), eq(path), MockitoHamcrest.argThat(allOf(hasEntry("X-RequestorID", "testRequester"),hasEntry("X-ONAP-PartnerName", "VID"))))).willReturn(okResponse);
1361 MsoResponseWrapper response = msoBusinessLogic.invokeVnfWorkflow(request, "testRequester", serviceInstanceId, vnfInstanceId, workflow_UUID);
1364 assertThat(response).isEqualToComparingFieldByField(okResponse);
1369 public void shouldReturnWorkflowListForGivenModelId() {
1370 given(msoInterface.getWorkflowListByModelId(anyString())).willReturn(workflowListResponse);
1371 given(workflowListResponse.getBody()).willReturn(workflowList);
1372 given(workflowListResponse.getStatus()).willReturn(HttpStatus.ACCEPTED.value());
1374 SOWorkflowList workflows = msoBusinessLogic.getWorkflowListByModelId("sampleModelId");
1376 assertThat(workflows).isEqualTo(workflowList);
1379 @Test(expectedExceptions = {MsoBusinessLogicImpl.WorkflowListException.class})
1380 public void shouldRaiseExceptionWhenRetrievingWorkflowsFailed() {
1381 given(msoInterface.getWorkflowListByModelId(anyString())).willReturn(workflowListResponse);
1382 given(workflowListResponse.getStatus()).willReturn(HttpStatus.INTERNAL_SERVER_ERROR.value());
1384 msoBusinessLogic.getWorkflowListByModelId("sampleModelId");
1387 private WorkflowRequestDetail createWorkflowRequestDetail() {
1388 WorkflowRequestDetail workflowRequestDetail = new WorkflowRequestDetail();
1389 org.onap.vid.changeManagement.RequestParameters requestParameters = new org.onap.vid.changeManagement.RequestParameters();
1390 HashMap<String,String> paramsMap = new HashMap<>();
1391 paramsMap.put("testKey1","testValue1");
1392 paramsMap.put("testKey2","testValue2");
1394 List<Map<String,String>> mapArray= new ArrayList<>();
1395 mapArray.add(paramsMap);
1396 requestParameters.setUserParams(mapArray);
1398 CloudConfiguration cloudConfiguration = new CloudConfiguration();
1399 cloudConfiguration.setCloudOwner("testOwne");
1400 cloudConfiguration.setTenantId("testId");
1401 cloudConfiguration.setLcpCloudRegionId("testLcpCloudId");
1403 workflowRequestDetail.setRequestParameters(requestParameters);
1404 workflowRequestDetail.setCloudConfiguration(cloudConfiguration);
1405 return workflowRequestDetail;
1408 private OperationalEnvironmentActivateInfo createTestOperationalEnvironmentActivateInfo() {
1409 OperationalEnvironmentController.OperationalEnvironmentActivateBody operationalEnvironmentActivateBody = new OperationalEnvironmentController.OperationalEnvironmentActivateBody(
1410 "testRelatedInstanceId",
1411 "testRelatedInstanceName",
1412 "testWorkloadContext",
1413 new OperationalEnvironmentController.OperationalEnvironmentManifest()
1415 return new OperationalEnvironmentActivateInfo(operationalEnvironmentActivateBody, userId, operationalEnvironmentId);
1418 private OperationalEnvironmentDeactivateInfo createTestOperationalEnvironmentDeactivateInfo() {
1419 return new OperationalEnvironmentDeactivateInfo(userId, operationalEnvironmentId);
1422 private OperationalEnvironmentController.OperationalEnvironmentCreateBody createTestOperationalEnvironmentCreateBody() {
1423 return new OperationalEnvironmentController.OperationalEnvironmentCreateBody(
1425 "testEcompInstanceId",
1426 "testEcompInstanceName",
1427 "testOperationalEnvironmentType",
1428 "testTenantContext",
1429 "testWorkloadContext"
1433 private MsoResponseWrapper createOkResponse() {
1434 HttpStatus expectedStatus = HttpStatus.ACCEPTED;
1435 String expectedBody = " \"body\": {\n" +
1436 " \"requestReferences\": {\n" +
1437 " \"instanceId\": \" 123456 \",\n" +
1438 " \"requestId\": \"b6dc9806-b094-42f7-9386-a48de8218ce8\"\n" +
1440 MsoResponseWrapper responseWrapper = new MsoResponseWrapper();
1441 responseWrapper.setEntity(expectedBody);
1442 responseWrapper.setStatus(expectedStatus.value());
1443 return responseWrapper;
1446 private String getFileContentAsString(String resourceName) throws Exception {
1447 Path path = Paths.get("payload_jsons", resourceName);
1448 URL url = this.getClass().getClassLoader().getResource(path.toString());
1451 result = IOUtils.toString(url.toURI(), "UTF-8");
1456 private static class MsoRequestWrapperMatcher implements
1457 ArgumentMatcher<org.onap.vid.changeManagement.RequestDetailsWrapper> {
1459 private final org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest;
1461 MsoRequestWrapperMatcher(org.onap.vid.changeManagement.RequestDetailsWrapper expectedRequest) {
1462 this.expectedRequest = expectedRequest;
1466 public boolean matches(org.onap.vid.changeManagement.RequestDetailsWrapper argument) {
1467 return expectedRequest.requestDetails.equals(argument.requestDetails);
1471 private class MsoTestException extends RuntimeException {
1472 MsoTestException(String testException) {
1473 super(testException);