public async Task TestDownloadBackupFolderAsync() { //setup const string content = "content"; const string testTxt = "test.txt"; const string subFolderName = "Sub"; Guid partitionId = Guid.NewGuid(); Guid backupId = Guid.NewGuid(); var timeStampUtc = DateTime.UtcNow; //prepare a remote folder and a file in the store: var store = new FileStore(Remote); Directory.CreateDirectory(Remote); string backupFolder = store.CreateDateTimeFolderName(partitionId, timeStampUtc); Directory.CreateDirectory(backupFolder); File.WriteAllText(Path.Combine(backupFolder, testTxt), content); string subFolder = Path.Combine(backupFolder, subFolderName); Directory.CreateDirectory(subFolder); File.WriteAllText(Path.Combine(subFolder, testTxt), content); //save backup metadata await store.StoreBackupMetadataAsync(backupFolder, new BackupMetadata(partitionId, timeStampUtc, BackupOption.Full, backupId)); //fake SF backup metadata File.WriteAllText(Path.Combine(backupFolder, FileStore.BackupMetadataFileName), ""); //act await store.DownloadBackupFolderAsync(backupId, Local, CancellationToken.None); //asserts Assert.IsTrue(Directory.Exists(Path.Combine(Local))); Assert.IsTrue(File.Exists(Path.Combine(Local, testTxt))); Assert.IsTrue(Directory.Exists(Path.Combine(Local, subFolderName))); Assert.IsTrue(File.Exists(Path.Combine(Local, subFolderName, testTxt))); Assert.AreEqual(content, File.ReadAllText(Path.Combine(Local, testTxt))); Assert.AreEqual(content, File.ReadAllText(Path.Combine(Local, subFolderName, testTxt))); }