public async Task Should_protect_asset() { var fileName = $"{Guid.NewGuid()}.png"; // STEP 1: Create asset var asset_1 = await _.UploadFileAsync("Assets/logo-squared.png", "image/png"); // STEP 2: Download asset using (var stream = new FileStream("Assets/logo-squared.png", FileMode.Open)) { var downloaded = await _.DownloadAsync(asset_1); // Should dowload with correct size. Assert.Equal(stream.Length, downloaded.Length); } // STEP 4: Protect asset var protectRequest = new AnnotateAssetDto { IsProtected = true }; var asset_2 = await _.Assets.PutAssetAsync(_.AppName, asset_1.Id, protectRequest); // STEP 5: Download asset with authentication. using (var stream = new FileStream("Assets/logo-squared.png", FileMode.Open)) { var downloaded = new MemoryStream(); using (var assetStream = await _.Assets.GetAssetContentBySlugAsync(_.AppName, asset_2.Id, string.Empty)) { await assetStream.Stream.CopyToAsync(downloaded); } // Should dowload with correct size. Assert.Equal(stream.Length, downloaded.Length); } // STEP 5: Download asset without key. using (var stream = new FileStream("Assets/logo-squared.png", FileMode.Open)) { var ex = await Assert.ThrowsAsync <HttpRequestException>(() => _.DownloadAsync(asset_1)); // Should return 403 when not authenticated. Assert.Contains("403", ex.Message); } // STEP 6: Download asset without key and version. using (var stream = new FileStream("Assets/logo-squared.png", FileMode.Open)) { var ex = await Assert.ThrowsAsync <HttpRequestException>(() => _.DownloadAsync(asset_1, 0)); // Should return 403 when not authenticated. Assert.Contains("403", ex.Message); } }
public async Task <IActionResult> PutAsset(string app, DomainId id, [FromBody] AnnotateAssetDto request) { var command = request.ToCommand(id); var response = await InvokeCommandAsync(command); return(Ok(response)); }
public async Task Should_annote_asset() { // STEP 1: Create asset var asset_1 = await _.UploadFileAsync("Assets/logo-squared.png", "image/png"); // STEP 2: Annotate metadata. var metadataRequest = new AnnotateAssetDto { Metadata = new Dictionary <string, object> { ["pw"] = 100L, ["ph"] = 20L } }; var asset_2 = await _.Assets.PutAssetAsync(_.AppName, asset_1.Id.ToString(), metadataRequest); // Should provide metadata. Assert.Equal(metadataRequest.Metadata, asset_2.Metadata); // STEP 3: Annotate slug. var slugRequest = new AnnotateAssetDto { Slug = "my-image" }; var asset_3 = await _.Assets.PutAssetAsync(_.AppName, asset_2.Id.ToString(), slugRequest); // Should provide updated slug. Assert.Equal(slugRequest.Slug, asset_3.Slug); // STEP 3: Annotate file name. var fileNameRequest = new AnnotateAssetDto { FileName = "My Image" }; var asset_4 = await _.Assets.PutAssetAsync(_.AppName, asset_3.Id.ToString(), fileNameRequest); // Should provide updated file name. Assert.Equal(fileNameRequest.FileName, asset_4.FileName); }
public async Task <IActionResult> PutAsset(string app, Guid id, [FromBody] AnnotateAssetDto request) { await CommandBus.PublishAsync(request.ToCommand(id)); return(NoContent()); }