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)));
        }