| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | using Renci.SshNet.Common;namespace Renci.SshNet.IntegrationTests{    /// <summary>    /// The SFTP client integration tests    /// </summary>    [TestClass]    public class SftpClientTests : IntegrationTestBase, IDisposable    {        private readonly SftpClient _sftpClient;        public SftpClientTests()        {            _sftpClient = new SftpClient(SshServerHostName, SshServerPort, User.UserName, User.Password);            _sftpClient.Connect();        }        [TestMethod]        public void Create_directory_with_contents_and_list_it()        {            var testDirectory = "/home/sshnet/sshnet-test";            var testFileName =  "test-file.txt";            var testFilePath = $"{testDirectory}/{testFileName}";            var testContent = "file content";            // Create new directory and check if it exists            _sftpClient.CreateDirectory(testDirectory);            Assert.IsTrue(_sftpClient.Exists(testDirectory));            // Upload file and check if it exists            using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent));            _sftpClient.UploadFile(fileStream, testFilePath);            Assert.IsTrue(_sftpClient.Exists(testFilePath));            // Check if ListDirectory works            var files = _sftpClient.ListDirectory(testDirectory);            _sftpClient.DeleteFile(testFilePath);            _sftpClient.DeleteDirectory(testDirectory);            var builder = new StringBuilder();            foreach (var file in files)            {                builder.AppendLine($"{file.FullName} {file.IsRegularFile} {file.IsDirectory}");            }            Assert.AreEqual(@"/home/sshnet/sshnet-test/. False True/home/sshnet/sshnet-test/.. False True/home/sshnet/sshnet-test/test-file.txt True False", builder.ToString());        }        [TestMethod]        public async Task Create_directory_with_contents_and_list_it_async()        {            var testDirectory = "/home/sshnet/sshnet-test";            var testFileName = "test-file.txt";            var testFilePath = $"{testDirectory}/{testFileName}";            var testContent = "file content";            // Create new directory and check if it exists            _sftpClient.CreateDirectory(testDirectory);            Assert.IsTrue(_sftpClient.Exists(testDirectory));            // Upload file and check if it exists            using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent));            _sftpClient.UploadFile(fileStream, testFilePath);            Assert.IsTrue(_sftpClient.Exists(testFilePath));            // Check if ListDirectory works            var files = _sftpClient.ListDirectoryAsync(testDirectory, CancellationToken.None);            var builder = new StringBuilder();            await foreach (var file in files)            {                builder.AppendLine($"{file.FullName} {file.IsRegularFile} {file.IsDirectory}");            }            _sftpClient.DeleteFile(testFilePath);            _sftpClient.DeleteDirectory(testDirectory);            Assert.AreEqual(@"/home/sshnet/sshnet-test/. False True/home/sshnet/sshnet-test/.. False True/home/sshnet/sshnet-test/test-file.txt True False", builder.ToString());        }        [TestMethod]        [ExpectedException(typeof(SftpPermissionDeniedException), "Permission denied")]        public void Test_Sftp_ListDirectory_Permission_Denied()        {            _sftpClient.ListDirectory("/root");        }        public void Dispose()        {            _sftpClient.Disconnect();            _sftpClient.Dispose();        }    }}
 |