public async Task Invoke_BadRequest_NotAWebSocket()
        {
            var httpContext = new DefaultHttpContext();
            var disabledWebSocketsMiddleware = new WebSocketConnectionsMiddleware(null,
                                                                                  new WebSocketConnectionsOptions(), new WebSocketConnectionsService(new FakeIWebLogger()));
            await disabledWebSocketsMiddleware.Invoke(httpContext);

            Assert.AreEqual(400, httpContext.Response.StatusCode);
        }
        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 WebSocketConnectionValidateOrigin()
        {
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Origin"] = "fake";

            var disabledWebSocketsMiddleware = new WebSocketConnectionsMiddleware(null,
                                                                                  new WebSocketConnectionsOptions
            {
                AllowedOrigins = new HashSet <string> {
                    "google"
                }
            }, new WebSocketConnectionsService(new FakeIWebLogger()));
            await disabledWebSocketsMiddleware.Invoke(httpContext);

            Assert.AreEqual(403, httpContext.Response.StatusCode);
        }
        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());
        }
 public void NullService()
 {
     var _ = new WebSocketConnectionsMiddleware(null,
                                                new WebSocketConnectionsOptions(), null);
     // expect exception
 }
 public void NullOptions()
 {
     var _ = new WebSocketConnectionsMiddleware(null,
                                                null, new WebSocketConnectionsService(new FakeIWebLogger()));
     // expect exception
 }