Files
ssh.net/test/Renci.SshNet.Tests/Classes/BaseClientTest_Connect_OnConnectedThrowsException.cs
Jacob Slusser 4886529ee2 Fixes spelling errors (#1668)
* 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>
2025-07-12 21:01:57 +02:00

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