@Test public void shouldReceiveEscapedTextMessage() throws Exception { final WsTextMessage escape = new WsTextMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(CONTROL_BYTES))); final WsTextMessage message = new WsTextMessage(BUFFER_ALLOCATOR.wrap(PAYLOAD_STARTING_WITH_CONTROL_BYTES)); final WsTextMessage normal = new WsTextMessage(BUFFER_ALLOCATOR.wrap(BYTES)); context.checking( new Expectations() { { oneOf(nextFilter).messageReceived(session, message); oneOf(nextFilter).messageReceived(session, normal); } }); filter.messageReceived(nextFilter, session, escape); filter.messageReceived(nextFilter, session, message); filter.messageReceived(nextFilter, session, normal); context.assertIsSatisfied(); }
@Test public void shouldReceiveEmulatedPongAsPong() throws Exception { final WsPongMessage pong = new WsPongMessage(); context.checking( new Expectations() { { oneOf(nextFilter).messageReceived(with(session), with(pong)); } }); filter.messageReceived(nextFilter, session, EMULATED_PONG); context.assertIsSatisfied(); }
@Before public void before() throws Exception { filter = new PingPongFilter(); context.checking( new Expectations() { { oneOf(filterChain).getSession(); will(returnValue(session)); allowing(session).getBufferAllocator(); will(returnValue(BUFFER_ALLOCATOR)); } }); filter.onPreAdd(filterChain, "x-kaazing-ping-ping", nextFilter); }
@Test public void shouldReceiveAndSwallowNativePong() throws Exception { final WsMessage message = new WsPongMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(new byte[] {0x41}))); context.checking( new Expectations() { { } }); filter.messageReceived(nextFilter, session, message); context.assertIsSatisfied(); }
@Test public void shouldReceiveTextMessage() throws Exception { final WsTextMessage message = new WsTextMessage(BUFFER_ALLOCATOR.wrap(BYTES)); context.checking( new Expectations() { { oneOf(nextFilter).messageReceived(session, message); } }); filter.messageReceived(nextFilter, session, message); context.assertIsSatisfied(); }
@Test public void shouldReceiveBinaryMessageConsistingOfControlBytes() throws Exception { final WsBinaryMessage message = new WsBinaryMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(CONTROL_BYTES))); context.checking( new Expectations() { { oneOf(nextFilter).messageReceived(session, message); } }); filter.messageReceived(nextFilter, session, message); context.assertIsSatisfied(); }
@Test public void shouldReplyNativePongToNativePing() throws Exception { final WsMessage message = new WsPingMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(new byte[] {0x41}))); final WsMessage reply = new WsPongMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(new byte[] {0x41}))); context.checking( new Expectations() { { oneOf(nextFilter).filterWrite(with(session), with(hasMessage(reply))); } }); filter.messageReceived(nextFilter, session, message); context.assertIsSatisfied(); }
@Test public void shouldRejectUnescapedTextMessageStartingWithControlBytes() throws Exception { final WsTextMessage message = new WsTextMessage(BUFFER_ALLOCATOR.wrap(PAYLOAD_STARTING_WITH_CONTROL_BYTES)); final WsCloseMessage close = WsCloseMessage.PROTOCOL_ERROR; context.checking( new Expectations() { { oneOf(nextFilter).filterWrite(with(session), with(hasMessage(close))); oneOf(session).close(true); } }); filter.messageReceived(nextFilter, session, message); context.assertIsSatisfied(); }
@Test public void shouldWriteWriteTextMessage() throws Exception { final WriteRequestEx writeRequest = context.mock(WriteRequestEx.class); final WsTextMessage message = new WsTextMessage(BUFFER_ALLOCATOR.wrap(BYTES)); context.checking( new Expectations() { { allowing(writeRequest).getMessage(); will(returnValue(message)); oneOf(nextFilter).filterWrite(session, writeRequest); } }); filter.filterWrite(nextFilter, session, writeRequest); context.assertIsSatisfied(); }
@Test public void shouldWriteEscapeTextMessageConsistingOfControlBytes() throws Exception { final WriteRequestEx writeRequest = context.mock(WriteRequestEx.class); final WsTextMessage message = new WsTextMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(CONTROL_BYTES))); context.checking( new Expectations() { { allowing(writeRequest).getMessage(); will(returnValue(message)); oneOf(nextFilter).filterWrite(with(session), with(hasMessage(ESCAPE_MESSAGE))); oneOf(nextFilter).filterWrite(session, writeRequest); } }); filter.filterWrite(nextFilter, session, writeRequest); context.assertIsSatisfied(); }
@Test public void shouldRejectTextMessageNotStartingWithControlBytesPrecededByEscapeFrame() throws Exception { final WsTextMessage escape = new WsTextMessage(BUFFER_ALLOCATOR.wrap(ByteBuffer.wrap(CONTROL_BYTES))); final WsTextMessage normal = new WsTextMessage(BUFFER_ALLOCATOR.wrap(BYTES)); final WsCloseMessage close = WsCloseMessage.PROTOCOL_ERROR; context.checking( new Expectations() { { oneOf(nextFilter).filterWrite(with(session), with(hasMessage(close))); oneOf(session).close(true); } }); filter.messageReceived(nextFilter, session, escape); filter.messageReceived(nextFilter, session, normal); context.assertIsSatisfied(); }