Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / ChangeManagementServiceImplTest.java
index e73838c..47411e2 100644 (file)
 package org.onap.vid.services;
 
-import static org.junit.Assert.*;
-import java.util.*;
-
-import org.json.simple.JSONArray;
-import org.junit.Assert;
-import org.junit.Test;
+import org.mockito.*;
+import org.onap.portalsdk.core.service.DataAccessService;
 import org.onap.vid.changeManagement.ChangeManagementRequest;
 import org.onap.vid.changeManagement.RequestDetails;
-import org.onap.vid.mso.rest.Request;
+import org.onap.vid.mso.MsoBusinessLogic;
+import org.onap.vid.mso.MsoResponseWrapperInterface;
+import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
 import org.springframework.http.ResponseEntity;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
 
 public class ChangeManagementServiceImplTest {
 
-       /*TODO: fix private ChangeManagementServiceImpl createTestSubject() {
-               return new ChangeManagementServiceImpl();
-       }*/
-
-       
-       /*@Test
-       public void testGetMSOChangeManagements() throws Exception {
-               ChangeManagementServiceImpl testSubject;
-               Collection<Request> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getMSOChangeManagements();
-       }
-
-       
-       @Test
-       public void testFindRequestByVnfName() throws Exception {
-       ChangeManagementServiceImpl testSubject;List<RequestDetails> requests = null;
-       String vnfName = "";
-       RequestDetails result;
-       
-       // test 1
-       testSubject=createTestSubject();requests = null;
-       result=Deencapsulation.invoke(testSubject, "findRequestByVnfName", new Object[]{List<RequestDetails>.class, vnfName});
-       Assert.assertEquals(null, result);
-       }*/
-/*
-       
-       @Test
-       public void testDoChangeManagement() throws Exception {
-               ChangeManagementServiceImpl testSubject;
-               ChangeManagementRequest request = null;
-               String vnfName = "";
-               ResponseEntity<String> result;
-
-               // test 1
-               testSubject = createTestSubject();
-               request = null;
-               result = testSubject.doChangeManagement(request, vnfName);
-               Assert.assertEquals(null, result);
-       }
-
-       
-       @Test
-       public void testGetSchedulerChangeManagements() throws Exception {
-               ChangeManagementServiceImpl testSubject;
-               JSONArray result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getSchedulerChangeManagements();
-       }*/
-}
\ No newline at end of file
+    @Mock
+    DataAccessService dataAccessServiceMock;
+
+    @Mock
+    MsoBusinessLogic msoBusinessLogicMock;
+
+    @Mock
+    SchedulerRestInterfaceIfc schedulerRestInterface;
+
+    @Mock
+    CloudOwnerService cloudOwnerService;
+
+    @BeforeMethod
+    public void initMocks(){
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void doChangeManagement_requestIsNull_returnsNull() throws Exception {
+        ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService);
+        ResponseEntity<String> result = changeManagementService.doChangeManagement(null,"anyString");
+        assertNull(result);
+    }
+
+    @Test
+    public void doChangeManagement_currentRequestDetailsIsNull_returnsNull() throws Exception {
+        ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService);
+
+        ChangeManagementServiceImpl changeManagementServiceSpied = Mockito.spy(changeManagementService);
+        Mockito.doReturn(null).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.anyList(),Mockito.anyString());
+
+        ResponseEntity<String> result = changeManagementServiceSpied.doChangeManagement(null,"anyString");
+
+        assertNull(result);
+    }
+
+
+    @Test
+    public void  doChangeManagement_requestTypeIsUpdate_MsoUpdateVnfIsCalled() throws Exception {
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnf(Mockito.any(),Mockito.any(),Mockito.any());
+        RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.UPDATE);
+
+        ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
+        verify(msoBusinessLogicMock).updateVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
+        assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
+    }
+
+    @Test
+    public void  doChangeManagement_requestTypeIsReplace_MsoUpdateVnfIsCalled() throws Exception {
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).replaceVnf(Mockito.any(),Mockito.any(),Mockito.any());
+        RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.REPLACE);
+
+
+        ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
+
+        verify(msoBusinessLogicMock).replaceVnf(argumentCaptor.capture(),Mockito.any(),Mockito.any());
+        assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
+    }
+
+    @Test
+    public void  doChangeManagement_requestTypeIsInPlaceSoftwareUpdate_MsoUpdateVnfIsCalled() throws Exception {
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfSoftware(Mockito.any(),Mockito.any(),Mockito.any());
+        RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.VNF_IN_PLACE_SOFTWARE_UPDATE);
+
+
+        ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
+
+        verify(msoBusinessLogicMock).updateVnfSoftware(argumentCaptor.capture(),Mockito.any(),Mockito.any());
+        assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
+    }
+
+    @Test
+    public void  doChangeManagement_requestTypeIsConfigUpdate_MsoUpdateVnfIsCalled() throws Exception {
+        Mockito.doReturn(Mockito.mock(MsoResponseWrapperInterface.class)).when(msoBusinessLogicMock).updateVnfConfig(Mockito.any(),Mockito.any(),Mockito.any());
+        RequestDetails requestDetails = callChangeManagement(ChangeManagementRequest.CONFIG_UPDATE);
+
+
+        ArgumentCaptor<RequestDetails> argumentCaptor = ArgumentCaptor.forClass(RequestDetails.class);
+
+        verify(msoBusinessLogicMock).updateVnfConfig(argumentCaptor.capture(),Mockito.any(),Mockito.any());
+        assertEquals(argumentCaptor.getValue().getVnfInstanceId(), requestDetails.getVnfInstanceId());
+    }
+
+    private RequestDetails callChangeManagement(String requestType) throws Exception {
+        ChangeManagementServiceImpl changeManagementService = new ChangeManagementServiceImpl(dataAccessServiceMock, msoBusinessLogicMock, schedulerRestInterface, cloudOwnerService);
+        ChangeManagementServiceImpl changeManagementServiceSpied = Mockito.spy(changeManagementService);
+        ChangeManagementRequest updateRequest = new ChangeManagementRequest();
+
+        updateRequest.setRequestType(requestType);
+        RequestDetails requestDetails = new RequestDetails();
+        requestDetails.setVnfInstanceId("vnfFakeId");
+        Mockito.doReturn("fakeId").when(changeManagementServiceSpied).extractServiceInstanceId(Mockito.any(),Mockito.any());
+        Mockito.doReturn(requestDetails).when(changeManagementServiceSpied).findRequestByVnfName(Matchers.any(),Mockito.any());
+
+        changeManagementServiceSpied.doChangeManagement(updateRequest, "anyVnfName");
+
+        return requestDetails;
+    }
+}