public async Task GivenHttpContext_AndIsWebSocketRequest_WhenCreate_ThenWebSocketAccepted_AndWebSocketTerminalServiceReturned()
        {
            // Arrange
            var webSocketTerminalServiceConfiguration = new WebSocketTerminalServiceConfiguration
            {
                ReceiveBufferSize = 1024
            };
            var sut = new WebSocketConnectionService(
                webSocketTerminalServiceConfiguration,
                Mock.Of <ILogger <WebSocketTerminalService> >());
            var mockHttpContext = new Mock <HttpContext>();
            var mockWebSocket   = new Mock <WebSocket>();

            mockWebSocket.Setup(x => x.SendAsync(
                                    It.IsAny <ArraySegment <byte> >(),
                                    It.IsAny <WebSocketMessageType>(),
                                    It.IsAny <bool>(),
                                    It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(true));
            var mockWebSocketManager = new Mock <WebSocketManager>();

            mockWebSocketManager
            .Setup(x => x.AcceptWebSocketAsync())
            .Returns(Task.FromResult(mockWebSocket.Object));
            mockWebSocketManager.SetupGet(x => x.IsWebSocketRequest)
            .Returns(true);
            mockHttpContext.SetupGet(x => x.WebSockets)
            .Returns(mockWebSocketManager.Object);

            // Act
            var result = await sut.Create(mockHttpContext.Object);

            // Assert
            Assert.NotNull(result);
        }
Beispiel #2
0
        public async Task GivenSerialPortCommunicationService_AndCancellationToken_WhenRunCommsLoopAsync_ThenDataReceivedFromWebSocket_AndWrittenToSerialPort()
        {
            // Arrange
            var webSocketTerminalServiceConfiguration = new WebSocketTerminalServiceConfiguration
            {
                ReceiveBufferSize = 1024
            };
            var sut = new WebSocketTerminalService(
                webSocketTerminalServiceConfiguration,
                Mock.Of <ILogger <WebSocketTerminalService> >());
            var mockSerialPortCommunicationService = new Mock <ISerialPortCommunicationService>();
            var mockWebSocket           = new Mock <WebSocket>();
            var mockSerialPort          = new Mock <ISerialPort>();
            var cancellationTokenSource = new CancellationTokenSource();

            var readFromSocket = false;

            mockWebSocket.Setup(x => x.ReceiveAsync(
                                    It.IsAny <ArraySegment <byte> >(),
                                    It.IsAny <CancellationToken>()))
            .ReturnsAsync((ArraySegment <byte> data, CancellationToken ct) =>
            {
                var result = new WebSocketReceiveResult(
                    0,
                    WebSocketMessageType.Text,
                    readFromSocket,
                    readFromSocket ? WebSocketCloseStatus.NormalClosure : null,
                    null);
                readFromSocket = true;
                return(result);
            });

            mockSerialPortCommunicationService.Setup(x => x.Write(
                                                         It.IsAny <byte[]>(),
                                                         It.IsAny <int>(),
                                                         It.IsAny <int>()));

            mockSerialPortCommunicationService.SetupGet(x => x.SerialPort)
            .Returns(mockSerialPort.Object);

            mockSerialPort.SetupGet(x => x.Encoding)
            .Returns(Encoding.ASCII);

            sut.WebSocket = mockWebSocket.Object;

            // Act
            await sut.RunCommsLoopAsync(
                mockSerialPortCommunicationService.Object,
                cancellationTokenSource.Token);

            // Assert
            mockWebSocket.Verify(x => x.ReceiveAsync(
                                     It.IsAny <ArraySegment <byte> >(),
                                     It.IsAny <CancellationToken>()), Times.Exactly(2));
            mockSerialPortCommunicationService.Verify(x => x.Write(
                                                          It.IsAny <byte[]>(),
                                                          It.IsAny <int>(),
                                                          It.IsAny <int>()), Times.Once);
        }
        public async Task GivenHttpContext_AndNotWebSocketRequest_WhenCreate_ThenNullReturned()
        {
            // Arrange
            var webSocketTerminalServiceConfiguration = new WebSocketTerminalServiceConfiguration
            {
                ReceiveBufferSize = 1024
            };
            var sut = new WebSocketConnectionService(
                webSocketTerminalServiceConfiguration,
                Mock.Of <ILogger <WebSocketTerminalService> >());
            var mockHttpContext      = new Mock <HttpContext>();
            var mockWebSocketManager = new Mock <WebSocketManager>();

            mockWebSocketManager.SetupGet(x => x.IsWebSocketRequest)
            .Returns(false);
            mockHttpContext.SetupGet(x => x.WebSockets)
            .Returns(mockWebSocketManager.Object);

            // Act
            var result = await sut.Create(mockHttpContext.Object);

            // Assert
            Assert.Null(result);
        }