package vnet.sms.gateway.nettysupport.transport.incoming; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.jboss.netty.handler.codec.embedder.CodecEmbedderException; import org.jboss.netty.handler.codec.embedder.DecoderEmbedder; import org.junit.Test; import vnet.sms.common.messages.GsmPdu; import vnet.sms.common.messages.LoginRequest; import vnet.sms.common.messages.LoginResponse; import vnet.sms.common.messages.Msisdn; import vnet.sms.common.messages.PingRequest; import vnet.sms.common.messages.PingResponse; import vnet.sms.common.messages.Sms; import vnet.sms.gateway.nettysupport.test.ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler; public class TransportProtocolAdaptingUpstreamChannelHandlerTest { private final TransportProtocolAdaptingUpstreamChannelHandler<Integer, GsmPdu> objectUnderTest = new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(); @Test public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); embeddedPipeline .offer(new LoginRequest( "assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest", "secret")); final GsmPdu convertedPdu = embeddedPipeline.poll(); embeddedPipeline.finish(); assertNotNull( "IncomingMessagesMonitoringChannelHandler converted LoginRequest to null output", convertedPdu); assertEquals( "IncomingMessagesMonitoringChannelHandler converted LoginRequest to unexpected output", LoginRequest.class, convertedPdu.getClass()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginResponse() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); embeddedPipeline .offer(LoginResponse .accept(new LoginRequest( "assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest", "secret"))); final GsmPdu convertedPdu = embeddedPipeline.poll(); assertNotNull( "IncomingMessagesMonitoringChannelHandler converted LoginResponse to null output", convertedPdu); assertEquals( "IncomingMessagesMonitoringChannelHandler converted LoginResponse to unexpected output", LoginResponse.class, convertedPdu.getClass()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToPingRequest() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); embeddedPipeline.offer(new PingRequest()); final GsmPdu convertedPdu = embeddedPipeline.poll(); assertNotNull( "IncomingMessagesMonitoringChannelHandler converted PingRequest to null output", convertedPdu); assertEquals( "IncomingMessagesMonitoringChannelHandler converted PingRequest to unexpected output", PingRequest.class, convertedPdu.getClass()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToPingResponse() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); embeddedPipeline.offer(PingResponse.accept(new PingRequest())); final GsmPdu convertedPdu = embeddedPipeline.poll(); assertNotNull( "IncomingMessagesMonitoringChannelHandler converted PingResponse to null output", convertedPdu); assertEquals( "IncomingMessagesMonitoringChannelHandler converted PingResponse to unexpected output", PingResponse.class, convertedPdu.getClass()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToSms() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); embeddedPipeline.offer(new Sms(new Msisdn("01686754432"), new Msisdn( "01686754432"), "assertThatTransportProtocolAdapterCorrectlyConvertsPduToSms")); final GsmPdu convertedPdu = embeddedPipeline.poll(); assertNotNull( "IncomingMessagesMonitoringChannelHandler converted Sms to null output", convertedPdu); assertEquals( "IncomingMessagesMonitoringChannelHandler converted Sms to unexpected output", Sms.class, convertedPdu.getClass()); } @Test(expected = CodecEmbedderException.class) public final void assertThatTransportProtocolAdapterRejectsUnknownPduType() { final DecoderEmbedder<GsmPdu> embeddedPipeline = new DecoderEmbedder<GsmPdu>( this.objectUnderTest); final Object unknownPdu = new Object(); embeddedPipeline.offer(unknownPdu); } }