| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | using System;using System.Linq;using System.Threading;using Microsoft.VisualStudio.TestTools.UnitTesting;using Moq;using Renci.SshNet.Common;using Renci.SshNet.Security;using Renci.SshNet.Tests.Common;namespace Renci.SshNet.Tests.Classes{    [TestClass]    public class SftpClientTest_Connect_SftpSessionConnectFailure : SftpClientTestBase    {        private ConnectionInfo _connectionInfo;        private ApplicationException _sftpSessionConnectionException;        private SftpClient _sftpClient;        private ApplicationException _actualException;        protected override void SetupData()        {            _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));            _sftpSessionConnectionException = new ApplicationException();        }        protected override void SetupMocks()        {            var sequence = new MockSequence();            _ = ServiceFactoryMock.InSequence(sequence)                                   .Setup(p => p.CreateSocketFactory())                                   .Returns(SocketFactoryMock.Object);            _ = ServiceFactoryMock.InSequence(sequence)                                   .Setup(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object))                                   .Returns(SessionMock.Object);            _ = SessionMock.InSequence(sequence)                            .Setup(p => p.Connect());            _ = ServiceFactoryMock.InSequence(sequence)                                   .Setup(p => p.CreateSftpResponseFactory())                                   .Returns(SftpResponseFactoryMock.Object);            _ = ServiceFactoryMock.InSequence(sequence)                                   .Setup(p => p.CreateSftpSession(SessionMock.Object, -1, _connectionInfo.Encoding, SftpResponseFactoryMock.Object))                                   .Returns(SftpSessionMock.Object);            _ = SftpSessionMock.InSequence(sequence)                                .Setup(p => p.Connect())                                .Throws(_sftpSessionConnectionException);            _ = SftpSessionMock.InSequence(sequence)                                .Setup(p => p.Dispose());            _ = SessionMock.InSequence(sequence)                            .Setup(p => p.Dispose());        }        protected override void Arrange()        {            base.Arrange();            _sftpClient = new SftpClient(_connectionInfo, false, ServiceFactoryMock.Object);        }        protected override void Act()        {            try            {                _sftpClient.Connect();                Assert.Fail();            }            catch (ApplicationException ex)            {                _actualException = ex;            }        }        [TestMethod]        public void ConnectShouldHaveThrownApplicationException()        {            Assert.IsNotNull(_actualException);            Assert.AreSame(_sftpSessionConnectionException, _actualException);        }        [TestMethod]        public void SessionShouldBeNull()        {            Assert.IsNull(_sftpClient.Session);        }        [TestMethod]        public void SftpSessionShouldBeNull()        {            Assert.IsNull(_sftpClient.SftpSession);        }        [TestMethod]        public void ErrorOccuredOnSessionShouldNoLongerBeSignaledViaErrorOccurredOnSftpClient()        {            var errorOccurredSignalCount = 0;            _sftpClient.ErrorOccurred += (sender, args) => Interlocked.Increment(ref errorOccurredSignalCount);            SessionMock.Raise(p => p.ErrorOccured += null, new ExceptionEventArgs(new Exception()));            Assert.AreEqual(0, errorOccurredSignalCount);        }        [TestMethod]        public void HostKeyReceivedOnSessionShouldNoLongerBeSignaledViaHostKeyReceivedOnSftpClient()        {            var hostKeyReceivedSignalCount = 0;            _sftpClient.HostKeyReceived += (sender, args) => Interlocked.Increment(ref hostKeyReceivedSignalCount);            SessionMock.Raise(p => p.HostKeyReceived += null, new HostKeyEventArgs(GetKeyHostAlgorithm()));            Assert.AreEqual(0, hostKeyReceivedSignalCount);        }        private static KeyHostAlgorithm GetKeyHostAlgorithm()        {            using (var s = TestBase.GetData("Key.RSA.txt"))            {                var privateKey = new PrivateKeyFile(s);                return (KeyHostAlgorithm)privateKey.HostKeyAlgorithms.First();            }        }    }}
 |