@Test public void testCompatibleExtensionTogetherSuccess() { // initialize expect(mainHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("main"))) .andReturn(mainExtensionMock) .anyTimes(); expect(mainHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("fallback"))) .andReturn(null) .anyTimes(); replay(mainHandshakerMock); expect(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("fallback"))) .andReturn(fallbackExtensionMock) .anyTimes(); expect(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("main"))) .andReturn(null) .anyTimes(); replay(fallbackHandshakerMock); expect(mainExtensionMock.rsv()).andReturn(WebSocketExtension.RSV1).anyTimes(); expect(mainExtensionMock.newReponseData()) .andReturn(new WebSocketExtensionData("main", Collections.<String, String>emptyMap())) .once(); expect(mainExtensionMock.newExtensionEncoder()).andReturn(new DummyEncoder()).once(); expect(mainExtensionMock.newExtensionDecoder()).andReturn(new DummyDecoder()).once(); replay(mainExtensionMock); expect(fallbackExtensionMock.rsv()).andReturn(WebSocketExtension.RSV2).anyTimes(); expect(fallbackExtensionMock.newReponseData()) .andReturn(new WebSocketExtensionData("fallback", Collections.<String, String>emptyMap())) .once(); expect(fallbackExtensionMock.newExtensionEncoder()).andReturn(new Dummy2Encoder()).once(); expect(fallbackExtensionMock.newExtensionDecoder()).andReturn(new Dummy2Decoder()).once(); replay(fallbackExtensionMock); // execute EmbeddedChannel ch = new EmbeddedChannel( new WebSocketServerExtensionHandler(mainHandshakerMock, fallbackHandshakerMock)); 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().getAndConvert(HttpHeaderNames.SEC_WEBSOCKET_EXTENSIONS)); // test assertEquals(2, resExts.size()); assertEquals("main", resExts.get(0).name()); assertEquals("fallback", resExts.get(1).name()); assertNotNull(ch.pipeline().get(DummyDecoder.class)); assertNotNull(ch.pipeline().get(DummyEncoder.class)); assertNotNull(ch.pipeline().get(Dummy2Decoder.class)); assertNotNull(ch.pipeline().get(Dummy2Encoder.class)); }
@Test public void testNoneExtensionMatchingSuccess() { // initialize expect(mainHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("unknown"))) .andReturn(null) .anyTimes(); expect(mainHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("unknown2"))) .andReturn(null) .anyTimes(); replay(mainHandshakerMock); expect(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("unknown"))) .andReturn(null) .anyTimes(); expect(fallbackHandshakerMock.handshakeExtension(webSocketExtensionDataEqual("unknown2"))) .andReturn(null) .anyTimes(); replay(fallbackHandshakerMock); // execute EmbeddedChannel ch = new EmbeddedChannel( new WebSocketServerExtensionHandler(mainHandshakerMock, fallbackHandshakerMock)); HttpRequest req = newUpgradeRequest("unknown, unknown2"); ch.writeInbound(req); HttpResponse res = newUpgradeResponse(null); ch.writeOutbound(res); HttpResponse res2 = ch.readOutbound(); // test assertFalse(res2.headers().contains(HttpHeaderNames.SEC_WEBSOCKET_EXTENSIONS)); }