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); }
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); }