SftpFileTest.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using Renci.SshNet.Common;
  2. namespace Renci.SshNet.IntegrationTests.OldIntegrationTests
  3. {
  4. /// <summary>
  5. /// Represents SFTP file information
  6. /// </summary>
  7. [TestClass]
  8. public class SftpFileTest : IntegrationTestBase
  9. {
  10. [TestMethod]
  11. [TestCategory("Sftp")]
  12. public void Test_Get_Root_Directory()
  13. {
  14. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  15. {
  16. sftp.Connect();
  17. var directory = sftp.Get("/");
  18. Assert.AreEqual("/", directory.FullName);
  19. Assert.IsTrue(directory.IsDirectory);
  20. Assert.IsFalse(directory.IsRegularFile);
  21. }
  22. }
  23. [TestMethod]
  24. [TestCategory("Sftp")]
  25. public void Test_Get_Invalid_Directory()
  26. {
  27. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  28. {
  29. sftp.Connect();
  30. Assert.ThrowsException<SftpPathNotFoundException>(() => sftp.Get("/xyz"));
  31. }
  32. }
  33. [TestMethod]
  34. [TestCategory("Sftp")]
  35. public void Test_Get_File()
  36. {
  37. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  38. {
  39. sftp.Connect();
  40. sftp.UploadFile(new MemoryStream(), "abc.txt");
  41. var file = sftp.Get("abc.txt");
  42. Assert.AreEqual("/home/sshnet/abc.txt", file.FullName);
  43. Assert.IsTrue(file.IsRegularFile);
  44. Assert.IsFalse(file.IsDirectory);
  45. }
  46. }
  47. [TestMethod]
  48. [TestCategory("Sftp")]
  49. public void Test_Get_File_Null()
  50. {
  51. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  52. {
  53. sftp.Connect();
  54. Assert.ThrowsException<ArgumentNullException>(() => sftp.Get(null));
  55. }
  56. }
  57. [TestMethod]
  58. [TestCategory("Sftp")]
  59. public void Test_Get_International_File()
  60. {
  61. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  62. {
  63. sftp.Connect();
  64. sftp.UploadFile(new MemoryStream(), "test-üöä-");
  65. var file = sftp.Get("test-üöä-");
  66. Assert.AreEqual("/home/sshnet/test-üöä-", file.FullName);
  67. Assert.IsTrue(file.IsRegularFile);
  68. Assert.IsFalse(file.IsDirectory);
  69. }
  70. }
  71. [TestMethod]
  72. [TestCategory("Sftp")]
  73. public async Task Test_Get_Root_DirectoryAsync()
  74. {
  75. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  76. {
  77. sftp.Connect();
  78. var directory = await sftp.GetAsync("/", default).ConfigureAwait(false);
  79. Assert.AreEqual("/", directory.FullName);
  80. Assert.IsTrue(directory.IsDirectory);
  81. Assert.IsFalse(directory.IsRegularFile);
  82. }
  83. }
  84. [TestMethod]
  85. [TestCategory("Sftp")]
  86. public async Task Test_Get_Invalid_DirectoryAsync()
  87. {
  88. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  89. {
  90. sftp.Connect();
  91. await Assert.ThrowsExceptionAsync<SftpPathNotFoundException>(() => sftp.GetAsync("/xyz", default));
  92. }
  93. }
  94. [TestMethod]
  95. [TestCategory("Sftp")]
  96. public async Task Test_Get_FileAsync()
  97. {
  98. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  99. {
  100. sftp.Connect();
  101. sftp.UploadFile(new MemoryStream(), "abc.txt");
  102. var file = await sftp.GetAsync("abc.txt", default).ConfigureAwait(false);
  103. Assert.AreEqual("/home/sshnet/abc.txt", file.FullName);
  104. Assert.IsTrue(file.IsRegularFile);
  105. Assert.IsFalse(file.IsDirectory);
  106. }
  107. }
  108. [TestMethod]
  109. [TestCategory("Sftp")]
  110. public async Task Test_Get_File_NullAsync()
  111. {
  112. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  113. {
  114. sftp.Connect();
  115. await Assert.ThrowsExceptionAsync<ArgumentNullException>(() => sftp.GetAsync(null, default));
  116. }
  117. }
  118. [TestMethod]
  119. [TestCategory("Sftp")]
  120. public async Task Test_Get_International_FileAsync()
  121. {
  122. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  123. {
  124. sftp.Connect();
  125. sftp.UploadFile(new MemoryStream(), "test-üöä-");
  126. var file = await sftp.GetAsync("test-üöä-", default).ConfigureAwait(false);
  127. Assert.AreEqual("/home/sshnet/test-üöä-", file.FullName);
  128. Assert.IsTrue(file.IsRegularFile);
  129. Assert.IsFalse(file.IsDirectory);
  130. }
  131. }
  132. [TestMethod]
  133. [TestCategory("Sftp")]
  134. public void Test_Sftp_SftpFile_MoveTo()
  135. {
  136. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  137. {
  138. sftp.Connect();
  139. string uploadedFileName = Path.GetTempFileName();
  140. string remoteFileName = Path.GetRandomFileName();
  141. string newFileName = Path.GetRandomFileName();
  142. CreateTestFile(uploadedFileName, 1);
  143. using (var file = File.OpenRead(uploadedFileName))
  144. {
  145. sftp.UploadFile(file, remoteFileName);
  146. }
  147. var sftpFile = sftp.Get(remoteFileName);
  148. sftpFile.MoveTo(newFileName);
  149. Assert.AreEqual(newFileName, sftpFile.Name);
  150. sftp.Disconnect();
  151. }
  152. }
  153. }
  154. }