public async Task CanCloseTheChannel() { var webSocket = Mock.Of <WebSocket>(ws => ws.State == WebSocketState.Open); var channel = new ServerWebSocketChannel(webSocket, Mock.Of <EndPoint>()); var loop = new SingleThreadEventLoop(); await loop.RegisterAsync(channel); await channel.CloseAsync(); Assert.False(channel.Active); Mock.Get(webSocket).Verify( ws => ws.CloseAsync(WebSocketCloseStatus.NormalClosure, It.IsAny <string>(), It.IsAny <CancellationToken>())); }
public async Task DoesNotCloseAnAlreadyClosedWebSocket() { var webSocket = Mock.Of <WebSocket>(ws => ws.State == WebSocketState.Open); var channel = new ServerWebSocketChannel(webSocket, Mock.Of <EndPoint>()); var loop = new SingleThreadEventLoop(); await loop.RegisterAsync(channel); Mock <WebSocket> wsMock = Mock.Get(webSocket); wsMock.Setup(ws => ws.State).Returns(WebSocketState.Closed); wsMock.Setup(ws => ws.CloseAsync(It.IsAny <WebSocketCloseStatus>(), It.IsAny <string>(), It.IsAny <CancellationToken>())) .Throws(new Exception("WebSocket.CloseAsync should not be called")); await channel.CloseAsync(); }