public void ShouldCreateAssetAndUploadAndDownload10FilesUsingAsyncCall()
{
const int expected = 10;
IAsset asset = CreateAssetAndUploadNFilesUsingAsyncCall(expected, _mediaContext,_smallWmv);
Assert.AreEqual(expected, _mediaContext.Files.Where(c => c.ParentAssetId == asset.Id).Count());
IAccessPolicy accessPolicy = _mediaContext.AccessPolicies.Create("SdkDownload", TimeSpan.FromHours(12), AccessPermissions.Read);
ILocator locator = _mediaContext.Locators.CreateSasLocator(asset, accessPolicy);
var blobTransfer = _mediaContext.MediaServicesClassFactory.GetBlobTransferClient();
var downloads = new List<Task>();
var paths = new List<string>();
try
{
foreach (IAssetFile file in _mediaContext.Files.Where(c => c.ParentAssetId == asset.Id))
{
string path = Guid.NewGuid().ToString();
paths.Add(path);
downloads.Add(file.DownloadAsync(path, blobTransfer, locator, CancellationToken.None));
}
Task.WaitAll(downloads.ToArray());
int i = 0;
foreach (Task download in downloads)
{
Assert.IsTrue(download.IsCompleted);
Assert.IsFalse(download.IsCanceled);
Assert.IsNull(download.Exception);
Assert.IsTrue(File.Exists(paths[i]));
i++;
}
}
finally
{
paths.ForEach(f => { if (File.Exists(f)) File.Delete(f); });
}
}