package com.tacitknowledge.slowlight.proxyserver.handler; import io.netty.channel.Channel; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; /** * @author Alexandr Donciu (adonciu@tacitknowledge.com) */ public class EchoChannelHandlerTest extends BaseChannelHandlerTest { private EchoChannelHandler echoChannelHandler; @Before public void setup() { super.setup(); echoChannelHandler = new EchoChannelHandler(handlerConfig); } @Test public void handlerShouldEnableReadOnChannelActivation() throws Exception { echoChannelHandler.channelActive(channelHandlerContext); verify(channelHandlerContext).read(); } @Test public void handlerShouldWriteRequestToResponse() throws Exception { echoChannelHandler.channelRead(channelHandlerContext, msg); verify(channel).writeAndFlush(msg); } @Test public void listenerShouldRequestChannelRead() throws Exception { doReturn(true).when(channelFuture).isSuccess(); final EchoChannelHandler.EchoMessageListener listener = echoChannelHandler.new EchoMessageListener(channelHandlerContext); listener.operationComplete(channelFuture); verify(channel).read(); } @Test public void listenerShouldCloseChannelIfWriteFutureCompletedUnsuccessfully() throws Exception { doReturn(false).when(channelFuture).isSuccess(); final Channel futureChannel = mock(Channel.class); doReturn(futureChannel).when(channelFuture).channel(); final EchoChannelHandler.EchoMessageListener listener = echoChannelHandler.new EchoMessageListener(channelHandlerContext); listener.operationComplete(channelFuture); verify(futureChannel).close(); } }