public async Task PtyMessageHandler_Handle_ResizeTabRequestLogsErrorMessageWhenProcessIsNotFound()
        {
            // Given
            var terminal = new Terminal
            {
                Id      = Guid.NewGuid().ToString(),
                Command = "bash",
            };
            var mockProcess = new Mock <IProcess>();
            var process     = mockProcess.Object;

            MockEngine
            .Setup(e => e.TryGetProcess(terminal.Id, out process)).Returns(false);

            // When
            var request = new ResizeTabRequest(tabId: terminal.Id);
            var handler = new PtyMessageHandler(MockEngine.Object, MockConfig.Object, MockLogger.Object);

            await handler.Handle(request);

            // Then
            MockLogger.Verify(
                l => l.LogError("Error ({messageName}): can't find terminal with id {terminalId}", nameof(ResizeTabRequest), terminal.Id)
                );
        }
        public async Task PtyMessageHandler_Handle_ResizesThePtyOnResizeTabRequest()
        {
            // Given
            var terminal = new Terminal
            {
                Id      = Guid.NewGuid().ToString(),
                Command = "bash",
            };
            var mockProcess = new Mock <IProcess>();
            var process     = mockProcess.Object;

            MockEngine
            .Setup(e => e.TryGetProcess(terminal.Id, out process)).Returns(true);

            // When
            var request = new ResizeTabRequest(tabId: terminal.Id);
            var handler = new PtyMessageHandler(MockEngine.Object, MockConfig.Object, MockLogger.Object);

            await handler.Handle(request);

            // Then
            mockProcess.Verify(
                p => p.SetWindowSize(24, 80)
                );
        }
Beispiel #3
0
        public async Task PtyEndpoint_Handles_ResizeTabRequest()
        {
            // Given
            var mockEngine = _testHost.MockEngine;

            var terminal = new Terminal
            {
                Id      = Guid.NewGuid().ToString(),
                Command = "bash",
            };
            var request = new ResizeTabRequest(terminal.Id, 100, 300);

            var mockProcess = new Mock <IProcess>();
            var process     = mockProcess.Object;

            var reset = new AutoResetEvent(false);

            mockEngine
            .Setup(engine => engine.TryGetProcess(terminal.Id, out process))
            .Returns(true);

            mockProcess
            .Setup(process => process.SetWindowSize(request.Rows, request.Cols))
            .Callback(() => reset.Set());

            // When
            using var cts = new CancellationTokenSource(timeOut);
            await socket.SendBinaryMessageAsync(writer, request, cts.Token);

            reset.WaitOne(TimeSpan.FromSeconds(5));

            // Then
            mockProcess.Verify(
                process => process.SetWindowSize(request.Rows, request.Cols),
                Times.Once()
                );
        }