mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 17:25:51 +00:00
4886529ee2
* Fixes spelling errors in comments, private members, and public members in test projects * Adds en-GB as spell checker option; reverts notable cases of American English * convert file UTF-16 LE BOM -> UTF-8 --------- Co-authored-by: Rob Hague <rob.hague00@gmail.com>
175 lines
5.2 KiB
C#
175 lines
5.2 KiB
C#
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 BaseClientTest_Connect_OnConnectedThrowsException : BaseClientTestBase
|
|
{
|
|
private MyClient _client;
|
|
private ConnectionInfo _connectionInfo;
|
|
private ApplicationException _onConnectException;
|
|
private ApplicationException _actualException;
|
|
|
|
protected override void SetupData()
|
|
{
|
|
_connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
|
|
_onConnectException = new ApplicationException();
|
|
}
|
|
|
|
protected override void SetupMocks()
|
|
{
|
|
ServiceFactoryMock.Setup(p => p.CreateSocketFactory())
|
|
.Returns(SocketFactoryMock.Object);
|
|
ServiceFactoryMock.Setup(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object))
|
|
.Returns(SessionMock.Object);
|
|
SessionMock.Setup(p => p.Connect());
|
|
SessionMock.Setup(p => p.Dispose());
|
|
}
|
|
|
|
protected override void TearDown()
|
|
{
|
|
if (_client != null)
|
|
{
|
|
SessionMock.Setup(p => p.OnDisconnecting());
|
|
SessionMock.Setup(p => p.Dispose());
|
|
_client.Dispose();
|
|
}
|
|
}
|
|
|
|
protected override void Arrange()
|
|
{
|
|
base.Arrange();
|
|
|
|
_client = new MyClient(_connectionInfo, false, ServiceFactoryMock.Object)
|
|
{
|
|
OnConnectedException = _onConnectException
|
|
};
|
|
}
|
|
|
|
protected override void Act()
|
|
{
|
|
try
|
|
{
|
|
_client.Connect();
|
|
Assert.Fail();
|
|
}
|
|
catch (ApplicationException ex)
|
|
{
|
|
_actualException = ex;
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ConnectShouldRethrowExceptionThrownByOnConnect()
|
|
{
|
|
Assert.IsNotNull(_actualException);
|
|
Assert.AreSame(_onConnectException, _actualException);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
|
|
{
|
|
ServiceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
|
|
{
|
|
ServiceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object),
|
|
Times.Once);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ConnectOnSessionShouldBeInvokedOnce()
|
|
{
|
|
SessionMock.Verify(p => p.Connect(), Times.Once);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void DisposeOnSessionShouldBeInvokedOnce()
|
|
{
|
|
SessionMock.Verify(p => p.Dispose(), Times.Once);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ErrorOccurredOnSessionShouldNoLongerBeSignaledViaErrorOccurredOnBaseClient()
|
|
{
|
|
var errorOccurredSignalCount = 0;
|
|
|
|
_client.ErrorOccurred += (sender, args) => Interlocked.Increment(ref errorOccurredSignalCount);
|
|
|
|
SessionMock.Raise(p => p.ErrorOccured += null, new ExceptionEventArgs(new Exception()));
|
|
|
|
Assert.AreEqual(0, errorOccurredSignalCount);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void HostKeyReceivedOnSessionShouldNoLongerBeSignaledViaHostKeyReceivedOnBaseClient()
|
|
{
|
|
var hostKeyReceivedSignalCount = 0;
|
|
|
|
_client.HostKeyReceived += (sender, args) => Interlocked.Increment(ref hostKeyReceivedSignalCount);
|
|
|
|
SessionMock.Raise(p => p.HostKeyReceived += null, new HostKeyEventArgs(GetKeyHostAlgorithm()));
|
|
|
|
Assert.AreEqual(0, hostKeyReceivedSignalCount);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void SessionShouldBeNull()
|
|
{
|
|
Assert.IsNull(_client.Session);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void IsConnectedShouldReturnFalse()
|
|
{
|
|
Assert.IsFalse(_client.IsConnected);
|
|
}
|
|
|
|
private static KeyHostAlgorithm GetKeyHostAlgorithm()
|
|
{
|
|
using (var s = TestBase.GetData("Key.RSA.txt"))
|
|
{
|
|
var privateKey = new PrivateKeyFile(s);
|
|
return (KeyHostAlgorithm)privateKey.HostKeyAlgorithms.First();
|
|
}
|
|
}
|
|
|
|
private class MyClient : BaseClient
|
|
{
|
|
private int _onConnectedCount;
|
|
|
|
public MyClient(ConnectionInfo connectionInfo, bool ownsConnectionInfo, IServiceFactory serviceFactory) : base(connectionInfo, ownsConnectionInfo, serviceFactory)
|
|
{
|
|
}
|
|
|
|
public Exception OnConnectedException { get; set; }
|
|
|
|
protected override void OnConnected()
|
|
{
|
|
base.OnConnected();
|
|
|
|
Interlocked.Increment(ref _onConnectedCount);
|
|
|
|
if (OnConnectedException != null)
|
|
{
|
|
throw OnConnectedException;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|