SftpClientTests.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Renci.SshNet.Common;
  2. namespace Renci.SshNet.IntegrationTests
  3. {
  4. /// <summary>
  5. /// The SFTP client integration tests
  6. /// </summary>
  7. [TestClass]
  8. public class SftpClientTests : IntegrationTestBase, IDisposable
  9. {
  10. private readonly SftpClient _sftpClient;
  11. public SftpClientTests()
  12. {
  13. _sftpClient = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password);
  14. _sftpClient.Connect();
  15. }
  16. [TestMethod]
  17. public void Create_directory_with_contents_and_list_it()
  18. {
  19. var testDirectory = "/home/sshnet/sshnet-test";
  20. var testFileName = "test-file.txt";
  21. var testFilePath = $"{testDirectory}/{testFileName}";
  22. var testContent = "file content";
  23. // Create new directory and check if it exists
  24. _sftpClient.CreateDirectory(testDirectory);
  25. Assert.IsTrue(_sftpClient.Exists(testDirectory));
  26. // Upload file and check if it exists
  27. using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent));
  28. _sftpClient.UploadFile(fileStream, testFilePath);
  29. Assert.IsTrue(_sftpClient.Exists(testFilePath));
  30. // Check if ListDirectory works
  31. var files = _sftpClient.ListDirectory(testDirectory);
  32. _sftpClient.DeleteFile(testFilePath);
  33. _sftpClient.DeleteDirectory(testDirectory);
  34. var builder = new StringBuilder();
  35. foreach (var file in files)
  36. {
  37. builder.AppendLine($"{file.FullName} {file.IsRegularFile} {file.IsDirectory}");
  38. }
  39. Assert.AreEqual(@"/home/sshnet/sshnet-test/. False True
  40. /home/sshnet/sshnet-test/.. False True
  41. /home/sshnet/sshnet-test/test-file.txt True False
  42. ", builder.ToString());
  43. }
  44. [TestMethod]
  45. public async Task Create_directory_with_contents_and_list_it_async()
  46. {
  47. var testDirectory = "/home/sshnet/sshnet-test";
  48. var testFileName = "test-file.txt";
  49. var testFilePath = $"{testDirectory}/{testFileName}";
  50. var testContent = "file content";
  51. // Create new directory and check if it exists
  52. _sftpClient.CreateDirectory(testDirectory);
  53. Assert.IsTrue(_sftpClient.Exists(testDirectory));
  54. // Upload file and check if it exists
  55. using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent));
  56. _sftpClient.UploadFile(fileStream, testFilePath);
  57. Assert.IsTrue(_sftpClient.Exists(testFilePath));
  58. // Check if ListDirectory works
  59. var files = _sftpClient.ListDirectoryAsync(testDirectory, CancellationToken.None);
  60. var builder = new StringBuilder();
  61. await foreach (var file in files)
  62. {
  63. builder.AppendLine($"{file.FullName} {file.IsRegularFile} {file.IsDirectory}");
  64. }
  65. _sftpClient.DeleteFile(testFilePath);
  66. _sftpClient.DeleteDirectory(testDirectory);
  67. Assert.AreEqual(@"/home/sshnet/sshnet-test/. False True
  68. /home/sshnet/sshnet-test/.. False True
  69. /home/sshnet/sshnet-test/test-file.txt True False
  70. ", builder.ToString());
  71. }
  72. [TestMethod]
  73. [ExpectedException(typeof(SftpPermissionDeniedException), "Permission denied")]
  74. public void Test_Sftp_ListDirectory_Permission_Denied()
  75. {
  76. _sftpClient.ListDirectory("/root");
  77. }
  78. public void Dispose()
  79. {
  80. _sftpClient.Disconnect();
  81. _sftpClient.Dispose();
  82. }
  83. }
  84. }