2
0

TestBase.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Security.Cryptography;
  2. namespace Renci.SshNet.IntegrationTests
  3. {
  4. public abstract class TestBase : IntegrationTestBase
  5. {
  6. protected static MemoryStream CreateMemoryStream(int size)
  7. {
  8. var memoryStream = new MemoryStream();
  9. FillStream(memoryStream, size);
  10. return memoryStream;
  11. }
  12. protected static void FillStream(Stream stream, int size)
  13. {
  14. var randomContent = new byte[50];
  15. var random = new Random();
  16. var numberOfBytesToWrite = size;
  17. while (numberOfBytesToWrite > 0)
  18. {
  19. random.NextBytes(randomContent);
  20. var numberOfCharsToWrite = Math.Min(numberOfBytesToWrite, randomContent.Length);
  21. stream.Write(randomContent, 0, numberOfCharsToWrite);
  22. numberOfBytesToWrite -= numberOfCharsToWrite;
  23. }
  24. }
  25. protected static string CreateHash(Stream stream)
  26. {
  27. MD5 md5 = new MD5CryptoServiceProvider();
  28. var hash = md5.ComputeHash(stream);
  29. return Encoding.ASCII.GetString(hash);
  30. }
  31. protected static string CreateHash(byte[] buffer)
  32. {
  33. using (var ms = new MemoryStream(buffer))
  34. {
  35. return CreateHash(ms);
  36. }
  37. }
  38. protected static string CreateFileHash(string path)
  39. {
  40. using (var fs = File.OpenRead(path))
  41. {
  42. return CreateHash(fs);
  43. }
  44. }
  45. protected static string CreateTempFile(int size)
  46. {
  47. var file = Path.GetTempFileName();
  48. CreateFile(file, size);
  49. return file;
  50. }
  51. protected static void CreateFile(string fileName, int size)
  52. {
  53. using (var fs = File.OpenWrite(fileName))
  54. {
  55. FillStream(fs, size);
  56. }
  57. }
  58. internal static Stream GetData(string name)
  59. {
  60. string resourceName = $"Renci.SshNet.IntegrationTests.{name}";
  61. return typeof(TestBase).Assembly.GetManifestResourceStream(resourceName)
  62. ?? throw new ArgumentException($"Resource '{resourceName}' not found in assembly '{typeof(TestBase).Assembly.FullName}'.", nameof(name));
  63. }
  64. }
  65. }