Sending workflow data from UI to SO
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / ChangeManagementServiceImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.vid.services;
22
23 import org.mockito.*;
24 import org.onap.portalsdk.core.service.DataAccessService;
25 import org.onap.vid.changeManagement.ChangeManagementRequest;
26 import org.onap.vid.changeManagement.RequestDetails;
27 import org.onap.vid.mso.MsoBusinessLogic;
28 import org.onap.vid.mso.MsoResponseWrapperInterface;
29 import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
30 import org.onap.vid.utils.SystemPropertiesWrapper;
31 import org.springframework.http.ResponseEntity;
32 import org.testng.annotations.BeforeMethod;
33 import org.testng.annotations.Test;
34
35 import static org.mockito.Mockito.verify;
36 import static org.testng.Assert.assertEquals;
37 import static org.testng.Assert.assertNull;
38
39 public class ChangeManagementServiceImplTest {
40
41     @Mock
42     private DataAccessService dataAccessServiceMock;
43
44     @Mock
45     private MsoBusinessLogic msoBusinessLogicMock;
46
47     @Mock
48     private SchedulerRestInterfaceIfc schedulerRestInterface;
49
50     @Mock
51     private CloudOwnerService cloudOwnerService;
52
53     @Mock
54     private SystemPropertiesWrapper systemPropertiesWrapper;
55
56     @BeforeMethod
57     public void initMocks(){
58         MockitoAnnotations.initMocks(this);
59     }
60
61     @Test
62     public void doChangeManagement_requestIsNull_returnsNull() throws Exception {
63         ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService, systemPropertiesWrapper);
64         ResponseEntity<String> result = changeManagementService.doChangeManagement(null,"anyString");
65         assertNull(result);
66     }
67
68     @Test
69     public void doChangeManagement_currentRequestDetailsIsNull_returnsNull() throws Exception {
70         ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService,systemPropertiesWrapper);
71
72         ChangeManagementServiceImpl changeManagementServiceSpied = Mockito.spy(changeManagementService);
73         Mockito.doReturn(null).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.anyList(),Mockito.anyString());
74
75         ResponseEntity<String> result = changeManagementServiceSpied.doChangeManagement(null,"anyString");
76
77         assertNull(result);
78     }
79
80
81     @Test
82     public void  doChangeManagement_requestTypeIsUpdate_MsoUpdateVnfIsCalled() throws Exception {
83         Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnf(Mockito.any(),Mockito.any(),Mockito.any());
84         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.UPDATE);
85
86         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
87         verify(msoBusinessLogicMock).updateVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
88         assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
89     }
90
91     @Test
92     public void  doChangeManagement_requestTypeIsReplace_MsoUpdateVnfIsCalled() throws Exception {
93         Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).replaceVnf(Mockito.any(),Mockito.any(),Mockito.any());
94         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.REPLACE);
95
96
97         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
98
99         verify(msoBusinessLogicMock).replaceVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
100         assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
101     }
102
103     @Test
104     public void  doChangeManagement_requestTypeIsInPlaceSoftwareUpdate_MsoUpdateVnfIsCalled() throws Exception {
105         Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfSoftware(Mockito.any(),Mockito.any(),Mockito.any());
106         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.VNF_IN_PLACE_SOFTWARE_UPDATE);
107
108
109         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
110
111         verify(msoBusinessLogicMock).updateVnfSoftware(argumentCaptor.capture(),Mockito.any(),Mockito.any());
112         assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
113     }
114
115     @Test
116     public void  doChangeManagement_requestTypeIsConfigUpdate_MsoUpdateVnfIsCalled() throws Exception {
117         Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfConfig(Mockito.any(),Mockito.any(),Mockito.any());
118         RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.CONFIG_UPDATE);
119
120
121         ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
122
123         verify(msoBusinessLogicMock).updateVnfConfig(argumentCaptor.capture(),Mockito.any(),Mockito.any());
124         assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
125     }
126
127     private RequestDetails callChangeManagement(String requestType) throws Exception {
128         ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService,systemPropertiesWrapper);
129         ChangeManagementServiceImpl changeManagementServiceSpied = Mockito.spy(changeManagementService);
130         ChangeManagementRequest updateRequest = new ChangeManagementRequest();
131
132         updateRequest.setRequestType(requestType);
133         RequestDetails requestDetails = new RequestDetails();
134         requestDetails.setVnfInstanceId("vnfFakeId");
135         Mockito.doReturn("fakeId").when(changeManagementServiceSpied).extractServiceInstanceId(Mockito.any(),Mockito.any());
136         Mockito.doReturn(requestDetails).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.any(),Mockito.any());
137
138         changeManagementServiceSpied.doChangeManagement(updateRequest, "anyVnfName");
139
140         return requestDetails;
141     }
142 }