Migrate servicehandler module to JUnit5
[transportpce.git] / servicehandler / src / test / java / org / opendaylight / transportpce / servicehandler / service / PCEServiceWrapperTest.java
index 53ac744649bf745e5eaf338415da809b2176c24b..beda4b29696bcba481b90eb9e415a40c498e2e4a 100644 (file)
  */
 package org.opendaylight.transportpce.servicehandler.service;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.transportpce.common.ResponseCodes;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
-import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
 import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.RpcActions;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeader;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeaderBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.CancelResourceReserveOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ServiceNotificationTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommon;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInputBuilder;
 
+@ExtendWith(MockitoExtension.class)
 public class PCEServiceWrapperTest extends AbstractTest {
 
-    private PathComputationService pathComputationService;
-    private PCEServiceWrapper pceServiceWrapper;
-    private Method method;
-    private static String METHOD_NAME = "mappingCancelResourceReserve";
-    private Class[] parameterTypes;
-    private Object[] parameters;
+    @Mock
+    private PathComputationService pathComputationServiceMock;
+    @Mock
+    private NotificationPublishService notificationPublishServiceMock;
+    @InjectMocks
+    private PCEServiceWrapper pceServiceWrapperMock;
 
 
+    @Test
+    void performPCENullSdncRequestHeader() {
+        ServiceCreateInput input =  ServiceDataUtils.buildServiceCreateInput();
+        input = new ServiceCreateInputBuilder(input).setSdncRequestHeader(null).build();
+        PathComputationRequestOutput pceResponse = this.pceServiceWrapperMock.performPCE(input, true);
+        assertEquals(ResponseCodes.FINAL_ACK_YES, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_FAILED, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        verifyNoInteractions(this.pathComputationServiceMock);
+    }
 
-    public PCEServiceWrapperTest() {
-        NotificationPublishService notificationPublishService = new NotificationPublishServiceMock();
-        this.pathComputationService = new PathComputationServiceImpl(getDataBroker(), notificationPublishService);
+    @Test
+    void performPCENullServiceName() {
+        ServiceCreateInput input = ServiceDataUtils.buildServiceCreateInput();
+        input = new ServiceCreateInputBuilder(input).setServiceName(null).build();
+        PathComputationRequestOutput pceResponse = this.pceServiceWrapperMock.performPCE(input, true);
+        assertEquals(ResponseCodes.FINAL_ACK_YES, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_FAILED, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        verifyNoInteractions(this.pathComputationServiceMock);
     }
 
-    @Before
-    public void init() throws NoSuchMethodException {
-        this.pceServiceWrapper = new PCEServiceWrapper(this.pathComputationService);
-        this.parameterTypes = new Class[2];
-        this.parameterTypes[0] = java.lang.String.class;
-        this.parameterTypes[1] = SdncRequestHeader.class;
-        this.method = this.pceServiceWrapper.getClass().getDeclaredMethod(METHOD_NAME, this.parameterTypes);
-        this.method.setAccessible(true);
-        this.parameters = new Object[2];
+    @Test
+    void performPCENullCommonId() {
+        TempServiceCreateInput input = ServiceDataUtils.buildTempServiceCreateInput();
+        input = new TempServiceCreateInputBuilder(input).setCommonId(null).build();
+        PathComputationRequestOutput pceResponse = this.pceServiceWrapperMock.performPCE(input, true);
+        assertEquals(ResponseCodes.FINAL_ACK_YES, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_FAILED, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        verifyNoInteractions(this.pathComputationServiceMock);
     }
 
+
     @Test
-    public void performPCENullSdncRequestHeader() {
-        ServiceCreateInput input =  ServiceDataUtils.buildServiceCreateInput();
-        input = new ServiceCreateInputBuilder(input).setSdncRequestHeader(null).build();
-        PathComputationRequestOutput pceResponse = this.pceServiceWrapper.performPCE(input, true);
-        Assert.assertEquals(ResponseCodes.FINAL_ACK_YES, pceResponse.getConfigurationResponseCommon()
-                .getAckFinalIndicator());
+    void cancelPCEResourceNullServiceName() {
+        CancelResourceReserveOutput pceResponse =
+                this.pceServiceWrapperMock.cancelPCEResource(null, ServiceNotificationTypes.ServiceDeleteResult);
+        assertEquals(ResponseCodes.FINAL_ACK_YES, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_FAILED, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        verifyNoInteractions(this.pathComputationServiceMock);
     }
 
     @Test
-    public void mappingCancelResourceReserveNullSdncRequestHeader()
-        throws InvocationTargetException, IllegalAccessException {
-        this.parameters[0] = "service 1";
-        this.parameters[1] = null;
-        CancelResourceReserveInput result = (CancelResourceReserveInput)this.method.invoke(this.pceServiceWrapper,
-                this.parameters);
-        Assert.assertEquals("service 1", result.getServiceName());
+    void cancelPCEResourceValid() {
+        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+                .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
+        CancelResourceReserveOutput output = new CancelResourceReserveOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon).build();
+        ListenableFuture<CancelResourceReserveOutput> response = ServiceDataUtils.returnFuture(output);
+        when(this.pathComputationServiceMock.cancelResourceReserve(any(CancelResourceReserveInput.class)))
+            .thenReturn(response);
+        CancelResourceReserveOutput pceResponse = this.pceServiceWrapperMock
+            .cancelPCEResource("service 1", ServiceNotificationTypes.ServiceDeleteResult);
+        assertEquals(ResponseCodes.FINAL_ACK_NO, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_OK, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        assertEquals("PCE calculation in progress", pceResponse.getConfigurationResponseCommon().getResponseMessage());
+        verify(this.pathComputationServiceMock).cancelResourceReserve(any(CancelResourceReserveInput.class));
+    }
+
+    @Test
+    void performPCEValid() {
+        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+                .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
+        PathComputationRequestOutput output = new PathComputationRequestOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon).build();
+        ListenableFuture<PathComputationRequestOutput> response = ServiceDataUtils.returnFuture(output);
+        when(this.pathComputationServiceMock.pathComputationRequest(any(PathComputationRequestInput.class)))
+            .thenReturn(response);
+        ServiceCreateInput input =  ServiceDataUtils.buildServiceCreateInput();
+        PathComputationRequestOutput pceResponse = this.pceServiceWrapperMock.performPCE(input, true);
+        assertEquals(ResponseCodes.FINAL_ACK_NO, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_OK, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        assertEquals("PCE calculation in progress", pceResponse.getConfigurationResponseCommon().getResponseMessage());
+        verify(this.pathComputationServiceMock).pathComputationRequest((any(PathComputationRequestInput.class)));
     }
 
     @Test
-    public void mappingCancelResourceReserveValidSdncRequestHeader()
-        throws InvocationTargetException, IllegalAccessException {
-        this.parameters[0] = "service 1";
-        this.parameters[1] = new SdncRequestHeaderBuilder().setRequestId("request 1")
-            .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build();
-        CancelResourceReserveInput result = (CancelResourceReserveInput)this.method.invoke(this.pceServiceWrapper,
-                this.parameters);
-        Assert.assertEquals("service 1", result.getServiceName());
-        Assert.assertEquals("request 1", result.getServiceHandlerHeader().getRequestId());
+    void performPCETempValid() {
+        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+                .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
+        PathComputationRequestOutput output = new PathComputationRequestOutputBuilder()
+                .setConfigurationResponseCommon(configurationResponseCommon).build();
+        ListenableFuture<PathComputationRequestOutput> response = ServiceDataUtils.returnFuture(output);
+        when(this.pathComputationServiceMock.pathComputationRequest(any(PathComputationRequestInput.class)))
+            .thenReturn(response);
+        TempServiceCreateInput input = ServiceDataUtils.buildTempServiceCreateInput();
+        PathComputationRequestOutput pceResponse = this.pceServiceWrapperMock.performPCE(input, true);
+        assertEquals(ResponseCodes.FINAL_ACK_NO, pceResponse.getConfigurationResponseCommon().getAckFinalIndicator());
+        assertEquals(ResponseCodes.RESPONSE_OK, pceResponse.getConfigurationResponseCommon().getResponseCode());
+        assertEquals("PCE calculation in progress", pceResponse.getConfigurationResponseCommon().getResponseMessage());
+        verify(this.pathComputationServiceMock).pathComputationRequest((any(PathComputationRequestInput.class)));
     }
-}
+}
\ No newline at end of file