package vnet.sms.gateway.transports.serialization.incoming;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.jboss.netty.channel.MessageEvent;
import org.junit.Test;
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.common.wme.receive.ReceivedLoginRequestAcknowledgementEvent;
import vnet.sms.common.wme.receive.ReceivedLoginRequestEvent;
import vnet.sms.common.wme.receive.ReceivedPingRequestAcknowledgementEvent;
import vnet.sms.common.wme.receive.ReceivedPingRequestEvent;
import vnet.sms.common.wme.receive.ReceivedSmsEvent;
import vnet.sms.gateway.nettytest.embedded.ChannelPipelineEmbedder;
import vnet.sms.gateway.nettytest.embedded.DefaultChannelPipelineEmbedder;
import vnet.sms.gateway.transports.serialization.ReferenceableMessageContainer;
public class SerializationTransportProtocolAdaptingUpstreamChannelHandlerTest {
private final SerializationTransportProtocolAdaptingUpstreamChannelHandler objectUnderTest = new SerializationTransportProtocolAdaptingUpstreamChannelHandler();
@Test
public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest()
throws Throwable {
final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder(
this.objectUnderTest);
embeddedPipeline.connectChannel();
embeddedPipeline
.receive(ReferenceableMessageContainer
.wrap(1,
new LoginRequest(
"assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest",
"secret")));
final MessageEvent convertedPduEvent = embeddedPipeline
.upstreamMessageEvents().nextMessageEvent();
assertNotNull(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted LoginRequest to null output",
convertedPduEvent);
assertEquals(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted LoginRequest to unexpected output",
ReceivedLoginRequestEvent.class, convertedPduEvent.getClass());
}
@Test
public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginResponse()
throws Throwable {
final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder(
this.objectUnderTest);
embeddedPipeline.connectChannel();
embeddedPipeline
.receive(ReferenceableMessageContainer.wrap(
1,
LoginResponse
.accept(new LoginRequest(
"assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest",
"secret"))));
final MessageEvent convertedPduEvent = embeddedPipeline
.upstreamMessageEvents().nextMessageEvent();
assertNotNull(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted LoginResponse to null output",
convertedPduEvent);
assertEquals(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted LoginResponse to unexpected output",
ReceivedLoginRequestAcknowledgementEvent.class,
convertedPduEvent.getClass());
}
@Test
public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToPingRequest()
throws Throwable {
final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder(
this.objectUnderTest);
embeddedPipeline.connectChannel();
embeddedPipeline.receive(ReferenceableMessageContainer.wrap(1,
new PingRequest()));
final MessageEvent convertedPduEvent = embeddedPipeline
.upstreamMessageEvents().nextMessageEvent();
assertNotNull(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted PingRequest to null output",
convertedPduEvent);
assertEquals(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted PingRequest to unexpected output",
ReceivedPingRequestEvent.class, convertedPduEvent.getClass());
}
@Test
public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToPingResponse()
throws Throwable {
final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder(
this.objectUnderTest);
embeddedPipeline.connectChannel();
embeddedPipeline.receive(ReferenceableMessageContainer.wrap(1,
PingResponse.accept(new PingRequest())));
final MessageEvent convertedPduEvent = embeddedPipeline
.upstreamMessageEvents().nextMessageEvent();
assertNotNull(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted PingResponse to null output",
convertedPduEvent);
assertEquals(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted PingResponse to unexpected output",
ReceivedPingRequestAcknowledgementEvent.class,
convertedPduEvent.getClass());
}
@Test
public final void assertThatTransportProtocolAdapterCorrectlyConvertsPduToSms()
throws Throwable {
final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder(
this.objectUnderTest);
embeddedPipeline.connectChannel();
embeddedPipeline
.receive(ReferenceableMessageContainer
.wrap(1,
new Sms(new Msisdn("01686754432"), new Msisdn(
"01686754432"),
"assertThatTransportProtocolAdapterCorrectlyConvertsPduToSms")));
final MessageEvent convertedPduEvent = embeddedPipeline
.upstreamMessageEvents().nextMessageEvent();
assertNotNull(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted Sms to null output",
convertedPduEvent);
assertEquals(
"SerializationTransportProtocolAdaptingUpstreamChannelHandler converted Sms to unexpected output",
ReceivedSmsEvent.class, convertedPduEvent.getClass());
}
}