Пример #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;
        }
Пример #2
0
        private static JsonWebSocketHttpResponse SimulateCall(SimulatedWebSocket webSocket,
                                                              JsonWebSocketHttpRequest request)
        {
            webSocket.SimulateSend(JsonConvert.SerializeObject(request));
            var response = webSocket.SentFromServerQueue.Take();

            Assert.IsNull(webSocket.CloseStatus, "Socket Closed Unexpectedly");

            Assert.IsNotNull(response);

            var parsedResponse =
                JsonConvert.DeserializeObject <JsonWebSocketHttpResponse>(Encoding.UTF8.GetString(response.Data));

            Assert.IsNotNull(parsedResponse);
            Assert.AreEqual(request.Id, parsedResponse.Id);

            return(parsedResponse);
        }