SftpFileTest.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. [ExpectedException(typeof(SftpPathNotFoundException))]
  26. public void Test_Get_Invalid_Directory()
  27. {
  28. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  29. {
  30. sftp.Connect();
  31. sftp.Get("/xyz");
  32. }
  33. }
  34. [TestMethod]
  35. [TestCategory("Sftp")]
  36. public void Test_Get_File()
  37. {
  38. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  39. {
  40. sftp.Connect();
  41. sftp.UploadFile(new MemoryStream(), "abc.txt");
  42. var file = sftp.Get("abc.txt");
  43. Assert.AreEqual("/home/sshnet/abc.txt", file.FullName);
  44. Assert.IsTrue(file.IsRegularFile);
  45. Assert.IsFalse(file.IsDirectory);
  46. }
  47. }
  48. [TestMethod]
  49. [TestCategory("Sftp")]
  50. [Description("Test passing null to Get.")]
  51. [ExpectedException(typeof(ArgumentNullException))]
  52. public void Test_Get_File_Null()
  53. {
  54. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  55. {
  56. sftp.Connect();
  57. var file = sftp.Get(null);
  58. sftp.Disconnect();
  59. }
  60. }
  61. [TestMethod]
  62. [TestCategory("Sftp")]
  63. public void Test_Get_International_File()
  64. {
  65. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  66. {
  67. sftp.Connect();
  68. sftp.UploadFile(new MemoryStream(), "test-üöä-");
  69. var file = sftp.Get("test-üöä-");
  70. Assert.AreEqual("/home/sshnet/test-üöä-", file.FullName);
  71. Assert.IsTrue(file.IsRegularFile);
  72. Assert.IsFalse(file.IsDirectory);
  73. }
  74. }
  75. [TestMethod]
  76. [TestCategory("Sftp")]
  77. public async Task Test_Get_Root_DirectoryAsync()
  78. {
  79. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  80. {
  81. sftp.Connect();
  82. var directory = await sftp.GetAsync("/", default).ConfigureAwait(false);
  83. Assert.AreEqual("/", directory.FullName);
  84. Assert.IsTrue(directory.IsDirectory);
  85. Assert.IsFalse(directory.IsRegularFile);
  86. }
  87. }
  88. [TestMethod]
  89. [TestCategory("Sftp")]
  90. [ExpectedException(typeof(SftpPathNotFoundException))]
  91. public async Task Test_Get_Invalid_DirectoryAsync()
  92. {
  93. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  94. {
  95. sftp.Connect();
  96. await sftp.GetAsync("/xyz", default).ConfigureAwait(false);
  97. }
  98. }
  99. [TestMethod]
  100. [TestCategory("Sftp")]
  101. public async Task Test_Get_FileAsync()
  102. {
  103. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  104. {
  105. sftp.Connect();
  106. sftp.UploadFile(new MemoryStream(), "abc.txt");
  107. var file = await sftp.GetAsync("abc.txt", default).ConfigureAwait(false);
  108. Assert.AreEqual("/home/sshnet/abc.txt", file.FullName);
  109. Assert.IsTrue(file.IsRegularFile);
  110. Assert.IsFalse(file.IsDirectory);
  111. }
  112. }
  113. [TestMethod]
  114. [TestCategory("Sftp")]
  115. [Description("Test passing null to Get.")]
  116. [ExpectedException(typeof(ArgumentNullException))]
  117. public async Task Test_Get_File_NullAsync()
  118. {
  119. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  120. {
  121. sftp.Connect();
  122. var file = await sftp.GetAsync(null, default).ConfigureAwait(false);
  123. sftp.Disconnect();
  124. }
  125. }
  126. [TestMethod]
  127. [TestCategory("Sftp")]
  128. public async Task Test_Get_International_FileAsync()
  129. {
  130. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  131. {
  132. sftp.Connect();
  133. sftp.UploadFile(new MemoryStream(), "test-üöä-");
  134. var file = await sftp.GetAsync("test-üöä-", default).ConfigureAwait(false);
  135. Assert.AreEqual("/home/sshnet/test-üöä-", file.FullName);
  136. Assert.IsTrue(file.IsRegularFile);
  137. Assert.IsFalse(file.IsDirectory);
  138. }
  139. }
  140. [TestMethod]
  141. [TestCategory("Sftp")]
  142. public void Test_Sftp_SftpFile_MoveTo()
  143. {
  144. using (var sftp = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password))
  145. {
  146. sftp.Connect();
  147. string uploadedFileName = Path.GetTempFileName();
  148. string remoteFileName = Path.GetRandomFileName();
  149. string newFileName = Path.GetRandomFileName();
  150. CreateTestFile(uploadedFileName, 1);
  151. using (var file = File.OpenRead(uploadedFileName))
  152. {
  153. sftp.UploadFile(file, remoteFileName);
  154. }
  155. var sftpFile = sftp.Get(remoteFileName);
  156. sftpFile.MoveTo(newFileName);
  157. Assert.AreEqual(newFileName, sftpFile.Name);
  158. sftp.Disconnect();
  159. }
  160. }
  161. }
  162. }