SftpClientTest.SynchronizeDirectories.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Renci.SshNet.Tests.Common;
  3. using Renci.SshNet.Tests.Properties;
  4. using System.Diagnostics;
  5. using System.IO;
  6. using System.Linq;
  7. namespace Renci.SshNet.Tests.Classes
  8. {
  9. /// <summary>
  10. /// Implementation of the SSH File Transfer Protocol (SFTP) over SSH.
  11. /// </summary>
  12. public partial class SftpClientTest : TestBase
  13. {
  14. [TestMethod]
  15. [TestCategory("Sftp")]
  16. public void Test_Sftp_SynchronizeDirectories()
  17. {
  18. RemoveAllFiles();
  19. using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  20. {
  21. sftp.Connect();
  22. string uploadedFileName = Path.GetTempFileName();
  23. string sourceDir = Path.GetDirectoryName(uploadedFileName);
  24. string destDir = "/";
  25. string searchPattern = Path.GetFileName(uploadedFileName);
  26. var upLoadedFiles = sftp.SynchronizeDirectories(sourceDir, destDir, searchPattern);
  27. Assert.IsTrue(upLoadedFiles.Count() > 0);
  28. foreach (var file in upLoadedFiles)
  29. {
  30. Debug.WriteLine(file.FullName);
  31. }
  32. sftp.Disconnect();
  33. }
  34. }
  35. [TestMethod]
  36. [TestCategory("Sftp")]
  37. public void Test_Sftp_BeginSynchronizeDirectories()
  38. {
  39. RemoveAllFiles();
  40. using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  41. {
  42. sftp.Connect();
  43. string uploadedFileName = Path.GetTempFileName();
  44. string sourceDir = Path.GetDirectoryName(uploadedFileName);
  45. string destDir = "/";
  46. string searchPattern = Path.GetFileName(uploadedFileName);
  47. var asyncResult = sftp.BeginSynchronizeDirectories(sourceDir,
  48. destDir,
  49. searchPattern,
  50. null,
  51. null
  52. );
  53. // Wait for the WaitHandle to become signaled.
  54. asyncResult.AsyncWaitHandle.WaitOne(1000);
  55. var upLoadedFiles = sftp.EndSynchronizeDirectories(asyncResult);
  56. Assert.IsTrue(upLoadedFiles.Count() > 0);
  57. foreach (var file in upLoadedFiles)
  58. {
  59. Debug.WriteLine(file.FullName);
  60. }
  61. // Close the wait handle.
  62. asyncResult.AsyncWaitHandle.Close();
  63. sftp.Disconnect();
  64. }
  65. }
  66. }
  67. }