Search in sources :

Example 6 with RPC

use of com.google.gwt.user.server.rpc.RPC in project pentaho-platform by pentaho.

the class AbstractGwtRpcTest method testInvokeServiceClassDoesNotNeedToImplementServiceInterface.

@Test
public void testInvokeServiceClassDoesNotNeedToImplementServiceInterface() throws NoSuchMethodException, SerializationException {
    ServiceClassWhichDoesNotImplementInterface target = new ServiceClassWhichDoesNotImplementInterface();
    Method targetMethod = target.getClass().getMethod("method", String.class);
    ClassLoader targetClassLoader = mock(ClassLoader.class);
    Method serviceMethod = ServiceInterface.class.getMethod("method", String.class);
    Object[] rpcParameters = new Object[] { "id1" };
    SerializationPolicy policy = mock(SerializationPolicy.class);
    RPCRequest rpcRequest = new RPCRequest(serviceMethod, rpcParameters, policy, 0);
    HttpServletRequest httpRequestMock = mock(HttpServletRequest.class);
    String response = "rpc response";
    TestGwtRpc gwtRpcSpy = spy(new TestGwtRpc(httpRequestMock));
    doReturn(target).when(gwtRpcSpy).getTarget();
    doReturn(targetClassLoader).when(gwtRpcSpy).getTargetClassLoader();
    doReturn(rpcRequest).when(gwtRpcSpy).getRequest();
    // Proven if the correct targetMethod is received at this call.
    try (MockedStatic<RPC> rpc = Mockito.mockStatic(RPC.class)) {
        rpc.when(() -> RPC.invokeAndEncodeResponse(target, targetMethod, rpcParameters, policy)).thenReturn(response);
        String result = gwtRpcSpy.invoke();
        assertEquals(response, result);
        rpc.verify(() -> RPC.invokeAndEncodeResponse(target, targetMethod, rpcParameters, policy));
        RPC.invokeAndEncodeResponse(target, targetMethod, rpcParameters, policy);
    }
}
Also used : SerializationPolicy(com.google.gwt.user.server.rpc.SerializationPolicy) HttpServletRequest(javax.servlet.http.HttpServletRequest) RPC(com.google.gwt.user.server.rpc.RPC) RPCRequest(com.google.gwt.user.server.rpc.RPCRequest) Method(java.lang.reflect.Method) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString)

Example 7 with RPC

use of com.google.gwt.user.server.rpc.RPC in project pentaho-platform by pentaho.

the class AbstractGwtRpcTest method testGetRequestLogsAndWrapsThrownIncompatibleRemoteServiceException.

@Test
public void testGetRequestLogsAndWrapsThrownIncompatibleRemoteServiceException() {
    String requestPayload = "REQUEST_PAYLOAD";
    // new Object would have a null class loader!
    Object target = this;
    IncompatibleRemoteServiceException error = new IncompatibleRemoteServiceException();
    HttpServletRequest httpRequestMock = mock(HttpServletRequest.class);
    TestGwtRpc gwtRpcSpy = spy(new TestGwtRpc(httpRequestMock));
    doReturn(requestPayload).when(gwtRpcSpy).getRequestPayload();
    doReturn(target).when(gwtRpcSpy).resolveTarget();
    try (MockedStatic<RPC> rpc = Mockito.mockStatic(RPC.class)) {
        rpc.when(() -> RPC.decodeRequest(eq(requestPayload), eq(null), any())).thenThrow(error);
        try {
            gwtRpcSpy.getRequest();
            fail();
        } catch (GwtRpcProxyException ex) {
            assertEquals(error, ex.getCause());
            verify(loggerMock).error(nullable(String.class), eq(error));
        }
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) RPC(com.google.gwt.user.server.rpc.RPC) IncompatibleRemoteServiceException(com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) GwtRpcProxyException(org.pentaho.platform.web.servlet.GwtRpcProxyException)

Example 8 with RPC

use of com.google.gwt.user.server.rpc.RPC in project pentaho-platform by pentaho.

the class AbstractGwtRpcTest method testGetDefaultSerializationPolicyDelegatesToRPCClass.

// endregion
// region static getDefaultSerializationPolicy
@Test
public void testGetDefaultSerializationPolicyDelegatesToRPCClass() {
    SerializationPolicy defaultPolicyMock = mock(SerializationPolicy.class);
    try (MockedStatic<RPC> rpc = Mockito.mockStatic(RPC.class)) {
        rpc.when(RPC::getDefaultSerializationPolicy).thenReturn(defaultPolicyMock);
        SerializationPolicy result = AbstractGwtRpc.getDefaultSerializationPolicy();
        assertEquals(defaultPolicyMock, result);
    }
}
Also used : SerializationPolicy(com.google.gwt.user.server.rpc.SerializationPolicy) RPC(com.google.gwt.user.server.rpc.RPC)

Example 9 with RPC

use of com.google.gwt.user.server.rpc.RPC in project pentaho-platform by pentaho.

the class AbstractGwtRpcTest method testGetRequestFirstTime.

// endregion
// region Request
@Test
public void testGetRequestFirstTime() {
    String requestPayload = "REQUEST_PAYLOAD";
    // new Object would have a null class loader!
    Object target = this;
    RPCRequest rpcRequest = new RPCRequest(null, null, null, 0);
    HttpServletRequest httpRequestMock = mock(HttpServletRequest.class);
    TestGwtRpc gwtRpcSpy = spy(new TestGwtRpc(httpRequestMock));
    doReturn(requestPayload).when(gwtRpcSpy).getRequestPayload();
    doReturn(target).when(gwtRpcSpy).resolveTarget();
    try (MockedStatic<RPC> rpc = Mockito.mockStatic(RPC.class)) {
        rpc.when(() -> RPC.decodeRequest(eq(requestPayload), eq(null), any())).thenReturn(rpcRequest);
        RPCRequest result = gwtRpcSpy.getRequest();
        assertEquals(rpcRequest, result);
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) RPC(com.google.gwt.user.server.rpc.RPC) RPCRequest(com.google.gwt.user.server.rpc.RPCRequest) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString)

Aggregations

RPC (com.google.gwt.user.server.rpc.RPC)9 HttpServletRequest (javax.servlet.http.HttpServletRequest)8 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)7 RPCRequest (com.google.gwt.user.server.rpc.RPCRequest)6 SerializationPolicy (com.google.gwt.user.server.rpc.SerializationPolicy)5 Method (java.lang.reflect.Method)4 GwtRpcProxyException (org.pentaho.platform.web.servlet.GwtRpcProxyException)4 IncompatibleRemoteServiceException (com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException)2 SerializationException (com.google.gwt.user.client.rpc.SerializationException)2 RemoteService (com.google.gwt.user.client.rpc.RemoteService)1 RPCServletUtils (com.google.gwt.user.server.rpc.RPCServletUtils)1 SerializationPolicyLoader (com.google.gwt.user.server.rpc.SerializationPolicyLoader)1 NonNull (edu.umd.cs.findbugs.annotations.NonNull)1 Nullable (edu.umd.cs.findbugs.annotations.Nullable)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 MalformedURLException (java.net.MalformedURLException)1 ParseException (java.text.ParseException)1 Function (java.util.function.Function)1 ServletContext (javax.servlet.ServletContext)1