public async Task PublishFilesShouldSyncFiles() { var logger = Context.Logger; var(source, deployTargetDirectory, temp) = TestDataHelper.CopyTestData(logger); var ftpSettings = new FtpSettings( new FtpPath("/", FileSystemType.Directory), publicRootPath: new FtpPath("/", FileSystemType.Directory), isSecure: false); FtpHandler handler = await FtpHandler.Create(new Uri("ftp://127.0.0.1:30021"), ftpSettings, new NetworkCredential("testuser", "testpw"), logger); var sourceDirectory = new DirectoryInfo(source); var ruleConfiguration = new RuleConfiguration { AppOfflineEnabled = true }; using var initialCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(50)); DeploySummary initialSummary = await handler.PublishAsync(ruleConfiguration, deployTargetDirectory, initialCancellationTokenSource.Token); logger.Information("Initial: {Initial}", initialSummary.ToDisplayValue()); using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(50)); DeploySummary summary = await handler.PublishAsync(ruleConfiguration, sourceDirectory, cancellationTokenSource.Token); logger.Information("Result: {Result}", summary.ToDisplayValue()); var fileSystemItems = await handler.ListDirectoryAsync(FtpPath.Root, cancellationTokenSource.Token); foreach (FtpPath fileSystemItem in fileSystemItems) { logger.Information("{Item}", fileSystemItem.Path); } temp.Dispose(); }