| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | using System;using System.Threading;using System.Threading.Tasks;using Microsoft.VisualStudio.TestTools.UnitTesting;using Moq;#if !NET8_0_OR_GREATERusing Renci.SshNet.Abstractions;#endifusing Renci.SshNet.Common;using Renci.SshNet.Connection;namespace Renci.SshNet.Tests.Classes{    [TestClass]    public class BaseClientTest_ConnectAsync_Timeout    {        private BaseClient _client;        [TestInitialize]        public void Init()        {            var sessionMock = new Mock<ISession>();            var serviceFactoryMock = new Mock<IServiceFactory>();            var socketFactoryMock = new Mock<ISocketFactory>();            sessionMock.Setup(p => p.ConnectAsync(It.IsAny<CancellationToken>()))                .Returns<CancellationToken>(c => Task.Delay(Timeout.Infinite, c));            serviceFactoryMock.Setup(p => p.CreateSocketFactory())                                               .Returns(socketFactoryMock.Object);            var connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"))            {                Timeout = TimeSpan.FromSeconds(1)            };            serviceFactoryMock.Setup(p => p.CreateSession(connectionInfo, socketFactoryMock.Object))                                   .Returns(sessionMock.Object);            _client = new MyClient(connectionInfo, false, serviceFactoryMock.Object);        }        [TestMethod]        public async Task ConnectAsyncWithTimeoutThrowsSshTimeoutException()        {            await Assert.ThrowsExceptionAsync<SshOperationTimeoutException>(() => _client.ConnectAsync(CancellationToken.None));        }        [TestMethod]        public async Task ConnectAsyncWithCancelledTokenThrowsOperationCancelledException()        {            using var cancellationTokenSource = new CancellationTokenSource();            await cancellationTokenSource.CancelAsync();            await Assert.ThrowsExceptionAsync<OperationCanceledException>(() => _client.ConnectAsync(cancellationTokenSource.Token));        }        [TestCleanup]        public void Cleanup()        {            _client?.Dispose();        }        private class MyClient : BaseClient        {            public MyClient(ConnectionInfo connectionInfo, bool ownsConnectionInfo, IServiceFactory serviceFactory) : base(connectionInfo, ownsConnectionInfo, serviceFactory)            {            }        }    }}
 |