Home / Class/ WebSocketServerHandshaker00Test Class — netty Architecture

WebSocketServerHandshaker00Test Class — netty Architecture

Architecture documentation for the WebSocketServerHandshaker00Test class in WebSocketServerHandshaker00Test.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  d374dcfe_f835_e4de_40de_2a57e6bb4779["WebSocketServerHandshaker00Test"]
  8bcad68f_1717_77f8_931f_41a1f1c10118["WebSocketServerHandshaker00Test.java"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|defined in| 8bcad68f_1717_77f8_931f_41a1f1c10118
  15423023_f1b3_da7d_aa30_31ad3259213e["WebSocketServerHandshaker()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| 15423023_f1b3_da7d_aa30_31ad3259213e
  dbdbc56c_18bc_12ed_e702_bb100c52fe1b["WebSocketVersion()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| dbdbc56c_18bc_12ed_e702_bb100c52fe1b
  aaaca005_d141_0f10_1fcc_522dea1ac171["testPerformOpeningHandshake()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| aaaca005_d141_0f10_1fcc_522dea1ac171
  3adfbbc6_96b6_4698_9d07_3015145777e8["testPerformOpeningHandshakeSubProtocolNotSupported()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| 3adfbbc6_96b6_4698_9d07_3015145777e8
  e836ed6f_e51a_02eb_9fd2_74a0950784db["testPerformHandshakeWithoutOriginHeader()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| e836ed6f_e51a_02eb_9fd2_74a0950784db
  900ad118_c21d_71b7_c011_4971f0972efb["testPerformOpeningHandshake0()"]
  d374dcfe_f835_e4de_40de_2a57e6bb4779 -->|method| 900ad118_c21d_71b7_c011_4971f0972efb

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00Test.java lines 40–131

public class WebSocketServerHandshaker00Test extends WebSocketServerHandshakerTest {

    @Override
    protected WebSocketServerHandshaker newHandshaker(String webSocketURL, String subprotocols,
            WebSocketDecoderConfig decoderConfig) {
        return new WebSocketServerHandshaker00(webSocketURL, subprotocols, decoderConfig);
    }

    @Override
    protected WebSocketVersion webSocketVersion() {
        return WebSocketVersion.V00;
    }

    @Test
    public void testPerformOpeningHandshake() {
        testPerformOpeningHandshake0(true);
    }

    @Test
    public void testPerformOpeningHandshakeSubProtocolNotSupported() {
        testPerformOpeningHandshake0(false);
    }

    @Test
    public void testPerformHandshakeWithoutOriginHeader() {
        EmbeddedChannel ch = new EmbeddedChannel(
            new HttpObjectAggregator(42), new HttpRequestDecoder(), new HttpResponseEncoder());

        FullHttpRequest req = new DefaultFullHttpRequest(
            HTTP_1_1, HttpMethod.GET, "/chat", Unpooled.copiedBuffer("^n:ds[4U", CharsetUtil.US_ASCII));

        req.headers().set(HttpHeaderNames.HOST, "server.example.com");
        req.headers().set(HttpHeaderNames.UPGRADE, HttpHeaderValues.WEBSOCKET);
        req.headers().set(HttpHeaderNames.CONNECTION, "Upgrade");
        req.headers().set(HttpHeaderNames.SEC_WEBSOCKET_KEY1, "4 @1  46546xW%0l 1 5");
        req.headers().set(HttpHeaderNames.SEC_WEBSOCKET_PROTOCOL, "chat, superchat");

        WebSocketServerHandshaker00 handshaker00 = new WebSocketServerHandshaker00(
            "ws://example.com/chat", "chat", Integer.MAX_VALUE);
        try {
            handshaker00.handshake(ch, req);
            fail("Expecting WebSocketHandshakeException");
        } catch (WebSocketHandshakeException e) {
            assertEquals("Missing origin header, got only "
                    + "[host, upgrade, connection, sec-websocket-key1, sec-websocket-protocol]",
                e.getMessage());
        } finally {
            req.release();
        }
    }

    private static void testPerformOpeningHandshake0(boolean subProtocol) {
        EmbeddedChannel ch = new EmbeddedChannel(
                new HttpObjectAggregator(42), new HttpRequestDecoder(), new HttpResponseEncoder());

        FullHttpRequest req = new DefaultFullHttpRequest(
                HTTP_1_1, HttpMethod.GET, "/chat", Unpooled.copiedBuffer("^n:ds[4U", CharsetUtil.US_ASCII));

        req.headers().set(HttpHeaderNames.HOST, "server.example.com");
        req.headers().set(HttpHeaderNames.UPGRADE, HttpHeaderValues.WEBSOCKET);
        req.headers().set(HttpHeaderNames.CONNECTION, "Upgrade");
        req.headers().set(HttpHeaderNames.ORIGIN, "http://example.com");
        req.headers().set(HttpHeaderNames.SEC_WEBSOCKET_KEY1, "4 @1  46546xW%0l 1 5");
        req.headers().set(HttpHeaderNames.SEC_WEBSOCKET_KEY2, "12998 5 Y3 1  .P00");
        req.headers().set(HttpHeaderNames.SEC_WEBSOCKET_PROTOCOL, "chat, superchat");

        if (subProtocol) {
            new WebSocketServerHandshaker00(
                    "ws://example.com/chat", "chat", Integer.MAX_VALUE).handshake(ch, req);
        } else {
            new WebSocketServerHandshaker00(
                    "ws://example.com/chat", null, Integer.MAX_VALUE).handshake(ch, req);
        }

        EmbeddedChannel ch2 = new EmbeddedChannel(new HttpResponseDecoder());
        ch2.writeInbound(ch.<ByteBuf>readOutbound());
        HttpResponse res = ch2.readInbound();

        assertEquals("ws://example.com/chat", res.headers().get(HttpHeaderNames.SEC_WEBSOCKET_LOCATION));

        if (subProtocol) {

Frequently Asked Questions

What is the WebSocketServerHandshaker00Test class?
WebSocketServerHandshaker00Test is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00Test.java.
Where is WebSocketServerHandshaker00Test defined?
WebSocketServerHandshaker00Test is defined in codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00Test.java at line 40.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free