mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 17:25:51 +00:00
d40bc43ac1
* Refactor logging to allow a loggerfactory per session specified in the ConnectionInfo. This commit introduces an `ILoggerFactory` to various classes, replacing the static logger factory with an instance-based approach for more flexible and session-specific logging. These changes improve the logging framework's flexibility and maintainability and allow unit testing of logging. * Improvements bases on feedback. Fixed tests. Added documentation. * Update src/Renci.SshNet/ConnectionInfo.cs --------- Co-authored-by: Rob Hague <rob.hague00@gmail.com>
73 lines
2.2 KiB
C#
73 lines
2.2 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
|
|
using Moq;
|
|
|
|
using Renci.SshNet.Connection;
|
|
using Renci.SshNet.Tests.Common;
|
|
|
|
namespace Renci.SshNet.Tests.Classes.Connection
|
|
{
|
|
public abstract class Socks5ConnectorTestBase : TripleATestBase
|
|
{
|
|
internal Mock<ISocketFactory> SocketFactoryMock { get; private set; }
|
|
internal Socks5Connector Connector { get; private set; }
|
|
internal SocketFactory SocketFactory { get; private set; }
|
|
|
|
protected virtual void CreateMocks()
|
|
{
|
|
SocketFactoryMock = new Mock<ISocketFactory>(MockBehavior.Strict);
|
|
}
|
|
|
|
protected virtual void SetupData()
|
|
{
|
|
Connector = new Socks5Connector(SocketFactoryMock.Object, NullLoggerFactory.Instance);
|
|
SocketFactory = new SocketFactory();
|
|
}
|
|
|
|
protected virtual void SetupMocks()
|
|
{
|
|
}
|
|
|
|
protected sealed override void Arrange()
|
|
{
|
|
CreateMocks();
|
|
SetupData();
|
|
SetupMocks();
|
|
}
|
|
|
|
protected ConnectionInfo CreateConnectionInfo(string proxyUser, string proxyPassword)
|
|
{
|
|
return new ConnectionInfo(IPAddress.Loopback.ToString(),
|
|
1029,
|
|
"user",
|
|
ProxyTypes.Socks5,
|
|
IPAddress.Loopback.ToString(),
|
|
8122,
|
|
proxyUser,
|
|
proxyPassword,
|
|
new KeyboardInteractiveAuthenticationMethod("user"));
|
|
}
|
|
|
|
protected static string GenerateRandomString(int minLength, int maxLength)
|
|
{
|
|
var random = new Random();
|
|
var length = random.Next(minLength, maxLength);
|
|
|
|
var sb = new StringBuilder(length);
|
|
int offset = 'a';
|
|
|
|
for (var i = 0; i < length; i++)
|
|
{
|
|
var c = (char)random.Next(offset, offset + 26);
|
|
_ = sb.Append(c);
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|