Пример #1
0
  @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();
  }
Пример #2
0
  @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();
  }
Пример #3
0
 @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);
 }
Пример #4
0
  @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();
  }
Пример #5
0
  @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();
  }
Пример #6
0
  @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();
  }
Пример #7
0
  @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();
  }
Пример #8
0
  @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();
  }
Пример #9
0
  @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();
  }
Пример #10
0
  @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();
  }
Пример #11
0
  @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();
  }