SftpFileReaderTestBase.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Threading;
  3. using Microsoft.Extensions.Logging.Abstractions;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. using Moq;
  6. using Renci.SshNet.Common;
  7. using Renci.SshNet.Sftp;
  8. namespace Renci.SshNet.Tests.Classes.Sftp
  9. {
  10. public abstract class SftpFileReaderTestBase
  11. {
  12. internal Mock<ISftpSession> SftpSessionMock { get; private set; }
  13. protected abstract void SetupData();
  14. protected void CreateMocks()
  15. {
  16. SftpSessionMock = new Mock<ISftpSession>(MockBehavior.Strict);
  17. SftpSessionMock.Setup(s => s.SessionLoggerFactory).Returns(NullLoggerFactory.Instance);
  18. }
  19. protected abstract void SetupMocks();
  20. protected virtual void Arrange()
  21. {
  22. SetupData();
  23. CreateMocks();
  24. SetupMocks();
  25. }
  26. [TestInitialize]
  27. public void SetUp()
  28. {
  29. Arrange();
  30. Act();
  31. }
  32. protected abstract void Act();
  33. protected static SftpFileAttributes CreateSftpFileAttributes(long size)
  34. {
  35. var utcDefault = DateTime.SpecifyKind(default, DateTimeKind.Utc);
  36. return new SftpFileAttributes(utcDefault, utcDefault, size, default, default, default, null);
  37. }
  38. protected static byte[] CreateByteArray(Random random, int length)
  39. {
  40. var chunk = new byte[length];
  41. random.NextBytes(chunk);
  42. return chunk;
  43. }
  44. protected static int WaitAny(WaitHandle[] waitHandles, int millisecondsTimeout)
  45. {
  46. var result = WaitHandle.WaitAny(waitHandles, millisecondsTimeout);
  47. if (result == WaitHandle.WaitTimeout)
  48. {
  49. throw new SshOperationTimeoutException();
  50. }
  51. return result;
  52. }
  53. }
  54. }