Warp and Mockito
malk182 Feb 17, 2014 5:18 PMThis error happens when use mock.
The login action on website goes OK, but after the @AfterServlet i got this:
org.jboss.arquillian.warp.exception.ServerWarpExecutionException: failed to retrieve a response payloade: java.lang.ClassNotFoundException: org.arquillian.example.model.ILogin$$EnhancerByMockitoWithCGLIB$$84cbfdcb at org.jboss.arquillian.warp.impl.client.execution.DefaultResponseDeenrichmentService.retrieveResponsePayload(DefaultResponseDeenrichmentService.java:124) at org.jboss.arquillian.warp.impl.client.execution.DefaultResponseDeenrichmentService.deenrichResponse(DefaultResponseDeenrichmentService.java:83) at org.jboss.arquillian.warp.impl.client.execution.EnrichmentObserver.deenrichResponse(EnrichmentObserver.java:113) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115) at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) at org.jboss.arquillian.warp.impl.client.execution.EnrichmentObserver.tryDeenrichResponse(EnrichmentObserver.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115) at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) at org.jboss.arquillian.warp.impl.client.execution.DefaultResponseDeenrichmentFilter.filterResponse(DefaultResponseDeenrichmentFilter.java:55) at org.jboss.arquillian.warp.impl.client.proxy.DefaultProxyService$4.performInContext(DefaultProxyService.java:124) at org.jboss.arquillian.warp.impl.client.proxy.DefaultProxyService$4.performInContext(DefaultProxyService.java:121) at org.jboss.arquillian.warp.impl.client.context.operation.Contextualizer$2.performInContext(Contextualizer.java:54) at org.jboss.arquillian.warp.impl.client.proxy.DefaultProxyService$7.filterResponse(DefaultProxyService.java:149) at org.littleshoot.proxy.HttpRelayingHandler.messageReceived(HttpRelayingHandler.java:190) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.channel.SimpleChannelHandler.messageReceived(SimpleChannelHandler.java:149) at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:95) at org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:43) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:294) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.codec.http.HttpChunkAggregator.messageReceived(HttpChunkAggregator.java:149) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.codec.http.HttpContentDecoder.messageReceived(HttpContentDecoder.java:100) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:455) at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:538) at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:437) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:91) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:373) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:247) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: org.arquillian.example.model.ILogin$$EnhancerByMockitoWithCGLIB$$84cbfdcb at org.jboss.arquillian.warp.impl.utils.SerializationUtils.deserializeFromBytes(SerializationUtils.java:54) at org.jboss.arquillian.warp.impl.client.execution.DefaultResponseDeenrichmentService$RetrievePayloadFromServer.getResponsePayload(DefaultResponseDeenrichmentService.java:162) at org.jboss.arquillian.warp.impl.client.execution.DefaultResponseDeenrichmentService.retrieveResponsePayload(DefaultResponseDeenrichmentService.java:119) ... 67 more Caused by: java.lang.ClassNotFoundException: org.arquillian.example.model.ILogin$$EnhancerByMockitoWithCGLIB$$84cbfdcb at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) at java.util.ArrayList.readObject(ArrayList.java:593) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) at org.jboss.arquillian.warp.impl.utils.SerializationUtils.deserializeFromBytes(SerializationUtils.java:50) ... 69 more
@Test @RunAsClient public void dummyTest() { browser.navigate().to(contextPath + "login.jsf"); Warp.initiate(new Activity() { public void perform() { WebElement userName = browser.findElement(By .id("loginForm:userName")); WebElement password = browser.findElement(By .id("loginForm:password")); WebElement loginButton = browser.findElement(By .id("loginForm:login")); userName.sendKeys("demo"); // 3. control the page password.sendKeys("demo"); guardHttp(loginButton).click(); } }) .inspect(new Inspection() { private static final long serialVersionUID = 1L; @ArquillianResource HttpServletRequest request; @Inject private LoginController loginController; private ILogin loginFacade; @BeforeServlet public void verifyRequestMethod() { loginFacade = Mockito.mock(ILogin.class, Mockito.withSettings() .serializable() .verboseLogging()); System.out.println(loginFacade.doLogin("demo", "demo")); Mockito.when(loginFacade.doLogin("demo", "demo")).thenReturn(true); Mockito.when(loginFacade.getUsername()).thenReturn("demo"); System.out.println(loginFacade.doLogin("demo", "demo")); loginController.setLoginFacade(loginFacade); } @AfterServlet public void verifyAfter() { if (loginController.getCurrentUser() != null) { System.out.println(loginController.getCurrentUser() .getUsername()); } } }); }