package com.github.kpavlov.jreactive8583.netty.pipeline; import com.github.kpavlov.jreactive8583.ConnectorConfiguration; import com.github.kpavlov.jreactive8583.ConnectorConfigurer; import com.github.kpavlov.jreactive8583.server.ServerConfiguration; import com.solab.iso8583.MessageFactory; import io.netty.bootstrap.AbstractBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; import io.netty.channel.EventLoopGroup; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.same; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class Iso8583ChannelInitializerTest { @Mock private EventLoopGroup workerGroup; @Mock private MessageFactory<com.solab.iso8583.IsoMessage> messageFactory; @Mock private ChannelHandler handlers; @Mock private Channel channel; @Mock private ChannelPipeline pipeline; private ConnectorConfigurer configurer; private ServerConfiguration.Builder configurationBuilder; @Before public void setUp() throws Exception { configurationBuilder = ServerConfiguration.newBuilder(); configurer = new ConnectorConfigurer() { }; when(channel.pipeline()).thenReturn(pipeline); } @Test public void testInitChannelWithLogger() throws Exception { //given configurationBuilder.withAddLoggingHandler(true); Iso8583ChannelInitializer<Channel, AbstractBootstrap, ConnectorConfiguration> channelInitializer = createChannelInitializer(configurer); // when channelInitializer.initChannel(channel); //then verify(pipeline).addLast(same(workerGroup), eq("logging"), any(IsoMessageLoggingHandler.class)); } @Test public void testInitChannelWithoutLogger() throws Exception { //given configurationBuilder.withAddLoggingHandler(false); Iso8583ChannelInitializer<Channel, AbstractBootstrap, ConnectorConfiguration> channelInitializer = createChannelInitializer(configurer); //when channelInitializer.initChannel(channel); //then verify(pipeline, never()).addLast(any(EventLoopGroup.class), anyString(), any(IsoMessageLoggingHandler.class)); } private Iso8583ChannelInitializer<Channel, AbstractBootstrap, ConnectorConfiguration> createChannelInitializer(ConnectorConfigurer<ConnectorConfiguration, AbstractBootstrap> configurer) { return new Iso8583ChannelInitializer<>( configurationBuilder.build(), configurer, workerGroup, messageFactory, handlers); } }