Socks5ConnectorTestBase.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Net;
  3. using System.Text;
  4. using Microsoft.Extensions.Logging.Abstractions;
  5. using Moq;
  6. using Renci.SshNet.Connection;
  7. using Renci.SshNet.Tests.Common;
  8. namespace Renci.SshNet.Tests.Classes.Connection
  9. {
  10. public abstract class Socks5ConnectorTestBase : TripleATestBase
  11. {
  12. internal Mock<ISocketFactory> SocketFactoryMock { get; private set; }
  13. internal Socks5Connector Connector { get; private set; }
  14. internal SocketFactory SocketFactory { get; private set; }
  15. protected virtual void CreateMocks()
  16. {
  17. SocketFactoryMock = new Mock<ISocketFactory>(MockBehavior.Strict);
  18. }
  19. protected virtual void SetupData()
  20. {
  21. Connector = new Socks5Connector(SocketFactoryMock.Object, NullLoggerFactory.Instance);
  22. SocketFactory = new SocketFactory();
  23. }
  24. protected virtual void SetupMocks()
  25. {
  26. }
  27. protected sealed override void Arrange()
  28. {
  29. CreateMocks();
  30. SetupData();
  31. SetupMocks();
  32. }
  33. protected ConnectionInfo CreateConnectionInfo(string proxyUser, string proxyPassword)
  34. {
  35. return new ConnectionInfo(IPAddress.Loopback.ToString(),
  36. 1029,
  37. "user",
  38. ProxyTypes.Socks5,
  39. IPAddress.Loopback.ToString(),
  40. 8122,
  41. proxyUser,
  42. proxyPassword,
  43. new KeyboardInteractiveAuthenticationMethod("user"));
  44. }
  45. protected static string GenerateRandomString(int minLength, int maxLength)
  46. {
  47. var random = new Random();
  48. var length = random.Next(minLength, maxLength);
  49. var sb = new StringBuilder(length);
  50. int offset = 'a';
  51. for (var i = 0; i < length; i++)
  52. {
  53. var c = (char)random.Next(offset, offset + 26);
  54. _ = sb.Append(c);
  55. }
  56. return sb.ToString();
  57. }
  58. }
  59. }