Пример #1
0
        private void RunWebSocketScenario(Action <SimulatedWebSocket> performCalls)
        {
            var config = new WebSocketApiActionConfiguration();

            var app = CreateApp(s =>
            {
                s.AddApiActions(GetType().Assembly, "ApiActions.WebSockets");
                s.AddApiActionsWebSockets();
            },
                                a => { a.UseWebSocketApiActions(); });

            var simulatedWebSocket = new SimulatedWebSocket();

            var mockWebSocketFeature = new Mock <IHttpWebSocketFeature>();

            mockWebSocketFeature.Setup(c => c.IsWebSocketRequest).Returns(true);
            mockWebSocketFeature.Setup(c => c.AcceptAsync(It.IsAny <WebSocketAcceptContext>()))
            .ReturnsAsync(simulatedWebSocket);

            var executeTask = app.ExecuteAsync(new HttpRequestFeature
            {
                Path = config.SocketTunnelUrl,
            }, features => { features.Set <IHttpWebSocketFeature>(mockWebSocketFeature.Object); });

            performCalls?.Invoke(simulatedWebSocket);

            simulatedWebSocket.SimulateClose(WebSocketCloseStatus.NormalClosure, "closed");

            executeTask.Wait();
            var resultContext = executeTask.Result;
        }