@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(); }
@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 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(); }