public void ShouldCreateAssetFileFromEmptyStream()
{
var stream = new MemoryStream(new byte[0]);
IAsset asset = _mediaContext.Assets.Create("Empty_MS", AssetCreationOptions.StorageEncrypted);
var name = "my_custom_name.wmv";
IAssetFile file = asset.AssetFiles.CreateAsync(name, CancellationToken.None).Result;
IAccessPolicy policy = _mediaContext.AccessPolicies.Create("temp", TimeSpan.FromMinutes(10), AccessPermissions.Write);
ILocator locator = _mediaContext.Locators.CreateSasLocator(asset, policy);
BlobTransferClient blobTransferClient = _mediaContext.MediaServicesClassFactory.GetBlobTransferClient();
bool transferCompletedFired = false;
blobTransferClient.TransferCompleted += (sender, args) =>
{
transferCompletedFired = true;
Assert.AreEqual(BlobTransferType.Upload, args.TransferType, "file.UploadAsync Transfer completed expected BlobTransferType is Upload");
};
file.UploadAsync(stream, blobTransferClient, locator, CancellationToken.None).Wait();
Assert.IsNotNull(asset, "Asset should be non null");
Assert.IsTrue(transferCompletedFired, "TransferCompleted event has not been fired");
Assert.AreNotEqual(Guid.Empty, asset.Id, "Asset ID shuold not be null");
Assert.AreEqual(AssetState.Initialized, asset.State, "Asset state wrong");
Assert.AreEqual(1, asset.AssetFiles.Count());
IAssetFile queriedAssetFile = asset.AssetFiles.First();
Assert.IsTrue(string.Compare(name, queriedAssetFile.Name, StringComparison.InvariantCultureIgnoreCase) == 0, "Main file is wrong");
Assert.AreEqual(0, queriedAssetFile.ContentFileSize);
}