TestBase.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. protected Stream GetManifestResourceStream(string resourceName)
  59. {
  60. var type = GetType();
  61. var resourceStream = type.Assembly.GetManifestResourceStream(resourceName);
  62. if (resourceStream == null)
  63. {
  64. throw new ArgumentException($"Resource '{resourceName}' not found in assembly '{type.Assembly.FullName}'.", nameof(resourceName));
  65. }
  66. return resourceStream;
  67. }
  68. }
  69. }