| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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 expectedFiles = new List<(string FullName, bool IsRegularFile, bool IsDirectory)>()
- {
- ("/home/sshnet/sshnet-test/.", IsRegularFile: false, IsDirectory: true),
- ("/home/sshnet/sshnet-test/..", IsRegularFile: false, IsDirectory: true),
- ("/home/sshnet/sshnet-test/test-file.txt", IsRegularFile: true, IsDirectory: false),
- };
- var actualFiles = _sftpClient.ListDirectory(testDirectory)
- .Select(f => (f.FullName, f.IsRegularFile, f.IsDirectory))
- .ToList();
- _sftpClient.DeleteFile(testFilePath);
- _sftpClient.DeleteDirectory(testDirectory);
- CollectionAssert.AreEquivalent(expectedFiles, actualFiles);
- }
- [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 expectedFiles = new List<(string FullName, bool IsRegularFile, bool IsDirectory)>()
- {
- ("/home/sshnet/sshnet-test/.", IsRegularFile: false, IsDirectory: true),
- ("/home/sshnet/sshnet-test/..", IsRegularFile: false, IsDirectory: true),
- ("/home/sshnet/sshnet-test/test-file.txt", IsRegularFile: true, IsDirectory: false),
- };
- var actualFiles = new List<(string FullName, bool IsRegularFile, bool IsDirectory)>();
- await foreach (var file in _sftpClient.ListDirectoryAsync(testDirectory, CancellationToken.None))
- {
- actualFiles.Add((file.FullName, file.IsRegularFile, file.IsDirectory));
- }
- _sftpClient.DeleteFile(testFilePath);
- _sftpClient.DeleteDirectory(testDirectory);
- CollectionAssert.AreEquivalent(expectedFiles, actualFiles);
- }
- [TestMethod]
- [ExpectedException(typeof(SftpPermissionDeniedException), "Permission denied")]
- public void Test_Sftp_ListDirectory_Permission_Denied()
- {
- _sftpClient.ListDirectory("/root");
- }
- public void Dispose()
- {
- _sftpClient.Disconnect();
- _sftpClient.Dispose();
- }
- }
- }
|