Home / Class/ WebSocketServerExtensionHandlerTest Class — netty Architecture

WebSocketServerExtensionHandlerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a4ffc697_3118_3b10_73a5_b883db644471["WebSocketServerExtensionHandlerTest"]
  5a577a80_31c6_30f2_167f_9f8613cd8b49["WebSocketServerExtensionHandlerTest.java"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|defined in| 5a577a80_31c6_30f2_167f_9f8613cd8b49
  1aa14b95_2638_6143_b9d0_154cff49a541["testMainSuccess()"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|method| 1aa14b95_2638_6143_b9d0_154cff49a541
  ea7283b6_ce52_7986_bcb2_606f7ed92046["testCompatibleExtensionTogetherSuccess()"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|method| ea7283b6_ce52_7986_bcb2_606f7ed92046
  6cfeb89e_f41b_4a8b_24d5_26c2512ce866["testNoneExtensionMatchingSuccess()"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|method| 6cfeb89e_f41b_4a8b_24d5_26c2512ce866
  87c04081_ef58_cefe_54ad_ee7222d46372["testExtensionHandlerNotRemovedByFailureWritePromise()"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|method| 87c04081_ef58_cefe_54ad_ee7222d46372
  5c3eb4cb_658e_19ab_bb4b_870cbe7a6013["testExtensionMultipleRequests()"]
  a4ffc697_3118_3b10_73a5_b883db644471 -->|method| 5c3eb4cb_658e_19ab_bb4b_870cbe7a6013

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/http/websocketx/extensions/WebSocketServerExtensionHandlerTest.java lines 39–287

public class WebSocketServerExtensionHandlerTest {

    WebSocketServerExtensionHandshaker mainHandshakerMock =
            mock(WebSocketServerExtensionHandshaker.class, "mainHandshaker");
    WebSocketServerExtensionHandshaker fallbackHandshakerMock =
            mock(WebSocketServerExtensionHandshaker.class, "fallbackHandshaker");

    WebSocketServerExtensionHandshaker main2HandshakerMock =
            mock(WebSocketServerExtensionHandshaker.class, "main2Handshaker");
    WebSocketServerExtension mainExtensionMock =
            mock(WebSocketServerExtension.class, "mainExtension");

    WebSocketServerExtension fallbackExtensionMock =
            mock(WebSocketServerExtension.class, "fallbackExtension");

    WebSocketServerExtension main2ExtensionMock =
            mock(WebSocketServerExtension.class, "main2Extension");

    @Test
    public void testMainSuccess() {
        // initialize
        when(mainHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("main"))).
                thenReturn(mainExtensionMock);
        when(mainHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("fallback"))).
                thenReturn(null);

        when(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("fallback"))).
                thenReturn(fallbackExtensionMock);
        when(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("main"))).
                thenReturn(null);

        when(mainExtensionMock.rsv()).thenReturn(WebSocketExtension.RSV1);
        when(mainExtensionMock.newReponseData()).thenReturn(
                new WebSocketExtensionData("main", Collections.<String, String>emptyMap()));
        when(mainExtensionMock.newExtensionEncoder()).thenReturn(new DummyEncoder());
        when(mainExtensionMock.newExtensionDecoder()).thenReturn(new DummyDecoder());

        when(fallbackExtensionMock.rsv()).thenReturn(WebSocketExtension.RSV1);

        // execute
        WebSocketServerExtensionHandler extensionHandler =
                new WebSocketServerExtensionHandler(mainHandshakerMock, fallbackHandshakerMock);
        EmbeddedChannel ch = new EmbeddedChannel(extensionHandler);

        HttpRequest req = newUpgradeRequest("main, fallback");
        ch.writeInbound(req);

        HttpResponse res = newUpgradeResponse(null);
        ch.writeOutbound(res);

        HttpResponse res2 = ch.readOutbound();
        List<WebSocketExtensionData> resExts = WebSocketExtensionUtil.extractExtensions(
                res2.headers().get(HttpHeaderNames.SEC_WEBSOCKET_EXTENSIONS));

        // test
        assertNull(ch.pipeline().context(extensionHandler));
        assertEquals(1, resExts.size());
        assertEquals("main", resExts.get(0).name());
        assertTrue(resExts.get(0).parameters().isEmpty());
        assertNotNull(ch.pipeline().get(DummyDecoder.class));
        assertNotNull(ch.pipeline().get(DummyEncoder.class));

        verify(mainHandshakerMock, atLeastOnce()).handshakeExtension(webSocketExtensionDataMatcher("main"));
        verify(mainHandshakerMock, atLeastOnce()).handshakeExtension(webSocketExtensionDataMatcher("fallback"));
        verify(fallbackHandshakerMock, atLeastOnce()).handshakeExtension(webSocketExtensionDataMatcher("fallback"));

        verify(mainExtensionMock, atLeastOnce()).rsv();
        verify(mainExtensionMock).newReponseData();
        verify(mainExtensionMock).newExtensionEncoder();
        verify(mainExtensionMock).newExtensionDecoder();
        verify(fallbackExtensionMock, atLeastOnce()).rsv();
    }

    @Test
    public void testCompatibleExtensionTogetherSuccess() {
        // initialize
        when(mainHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("main"))).
                thenReturn(mainExtensionMock);
        when(mainHandshakerMock.handshakeExtension(webSocketExtensionDataMatcher("fallback"))).
                thenReturn(null);

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free