public async Task WebSocketConnection_MessageTooBig()
        {
            var httpContext = new FakeWebSocketHttpContext(false);

            var disabledWebSocketsMiddleware = new DisabledWebSocketsMiddleware(next: (innerHttpContext) => Task.FromResult(0));
            await disabledWebSocketsMiddleware.Invoke(httpContext);

            var socketManager = httpContext.WebSockets as FakeWebSocketManager;

            Assert.AreEqual(WebSocketCloseStatus.MessageTooBig,
                            (socketManager.FakeWebSocket as FakeWebSocket).FakeCloseOutputAsync.LastOrDefault());
        }
        public async Task WebSocketConnection_UserNotLoggedIn()
        {
            var httpContext = new FakeWebSocketHttpContext(false);

            var disabledWebSocketsMiddleware = new WebSocketConnectionsMiddleware(null,
                                                                                  new WebSocketConnectionsOptions(), new WebSocketConnectionsService(new FakeIWebLogger()));
            await disabledWebSocketsMiddleware.Invoke(httpContext);

            var socketManager = httpContext.WebSockets as FakeWebSocketManager;

            Assert.AreEqual(WebSocketCloseStatus.PolicyViolation,
                            (socketManager.FakeWebSocket as FakeWebSocket).FakeCloseOutputAsync.LastOrDefault());
        }
        public async Task WebSocketConnection()
        {
            var httpContext = new FakeWebSocketHttpContext();

            var disabledWebSocketsMiddleware = new WebSocketConnectionsMiddleware(null,
                                                                                  new WebSocketConnectionsOptions(), new WebSocketConnectionsService(new FakeIWebLogger()));
            await disabledWebSocketsMiddleware.Invoke(httpContext);

            var socketManager = httpContext.WebSockets as FakeWebSocketManager;

            if (!(socketManager?.FakeWebSocket is FakeWebSocket))
            {
                throw new  NullReferenceException(nameof(socketManager));
            }

            Assert.AreEqual(WebSocketCloseStatus.NormalClosure,
                            (socketManager.FakeWebSocket as FakeWebSocket).FakeCloseOutputAsync
                            .LastOrDefault());
        }