public void CustomHandshake() { var handshaker = new PerMessageDeflateServerExtensionHandshaker(6, true, 10, true, true); var parameters = new Dictionary <string, string> { { ClientMaxWindow, null }, { ServerMaxWindow, "12" }, { ClientNoContext, null }, { ServerNoContext, null } }; IWebSocketServerExtension extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, parameters)); Assert.NotNull(extension); Assert.Equal(WebSocketRsv.Rsv1, extension.Rsv); Assert.IsType <PerMessageDeflateDecoder>(extension.NewExtensionDecoder()); Assert.IsType <PerMessageDeflateEncoder>(extension.NewExtensionEncoder()); WebSocketExtensionData data = extension.NewReponseData(); Assert.Equal(PerMessageDeflateExtension, data.Name); Assert.Contains(ClientMaxWindow, data.Parameters.Keys); Assert.Equal("10", data.Parameters[ClientMaxWindow]); Assert.Contains(ServerMaxWindow, data.Parameters.Keys); Assert.Equal("12", data.Parameters[ServerMaxWindow]); parameters = new Dictionary <string, string> { { ServerMaxWindow, "12" }, { ServerNoContext, null } }; extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, parameters)); Assert.NotNull(extension); Assert.Equal(WebSocketRsv.Rsv1, extension.Rsv); Assert.IsType <PerMessageDeflateDecoder>(extension.NewExtensionDecoder()); Assert.IsType <PerMessageDeflateEncoder>(extension.NewExtensionEncoder()); data = extension.NewReponseData(); Assert.Equal(PerMessageDeflateExtension, data.Name); Assert.Equal(2, data.Parameters.Count); Assert.Contains(ServerMaxWindow, data.Parameters.Keys); Assert.Equal("12", data.Parameters[ServerMaxWindow]); Assert.Contains(ServerNoContext, data.Parameters.Keys); parameters = new Dictionary <string, string>(); extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, parameters)); Assert.NotNull(extension); data = extension.NewReponseData(); Assert.Equal(PerMessageDeflateExtension, data.Name); Assert.Empty(data.Parameters); }
public void NormalHandshake() { var handshaker = new PerMessageDeflateServerExtensionHandshaker(); IWebSocketServerExtension extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, new Dictionary <string, string>())); Assert.NotNull(extension); Assert.Equal(WebSocketRsv.Rsv1, extension.Rsv); Assert.IsType <PerMessageDeflateDecoder>(extension.NewExtensionDecoder()); Assert.IsType <PerMessageDeflateEncoder>(extension.NewExtensionEncoder()); WebSocketExtensionData data = extension.NewReponseData(); Assert.Equal(PerMessageDeflateExtension, data.Name); Assert.Empty(data.Parameters); var parameters = new Dictionary <string, string> { { ClientMaxWindow, null }, { ClientNoContext, null } }; extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, parameters)); Assert.NotNull(extension); Assert.Equal(WebSocketRsv.Rsv1, extension.Rsv); Assert.IsType <PerMessageDeflateDecoder>(extension.NewExtensionDecoder()); Assert.IsType <PerMessageDeflateEncoder>(extension.NewExtensionEncoder()); data = extension.NewReponseData(); Assert.Equal(PerMessageDeflateExtension, data.Name); Assert.Empty(data.Parameters); parameters = new Dictionary <string, string> { { ServerMaxWindow, "12" }, { ServerNoContext, null } }; extension = handshaker.HandshakeExtension( new WebSocketExtensionData(PerMessageDeflateExtension, parameters)); Assert.Null(extension); }