Browse Source

Fixes and tests for image format update.

pull/868/head
Sebastian 4 years ago
parent
commit
f24372758b
  1. 3
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  2. 38
      backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs

3
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs

@ -146,6 +146,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
var contentLength = (long?)null;
var contentCallback = (FileCallback?)null;
var contentType = request.Format?.ToMimeType() ?? asset.MimeType;
if (asset.Type == AssetType.Image && resizeOptions.IsValid)
{
@ -183,7 +184,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
};
}
return new FileCallbackResult(asset.MimeType, contentCallback)
return new FileCallbackResult(contentType, contentCallback)
{
EnableRangeProcessing = contentLength > 0,
ErrorAs404 = true,

38
backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs

@ -87,6 +87,25 @@ namespace TestSuite.ApiTests
await AssertImageAsync(asset);
}
[Fact]
public async Task Should_upload_image_bmp_and_resize()
{
var asset = await _.UploadFileAsync("Assets/SampleImage_700kb.bmp", "image/bmp");
await AssertImageAsync(asset);
}
[Fact]
public async Task Should_upload_image_bmp_and_encode_to_webp()
{
var asset = await _.UploadFileAsync("Assets/SampleImage_700kb.bmp", "image/bmp");
var (size, type) = await GetReformattedLength(asset.Id, "WEBP");
Assert.True(size < asset.FileSize);
Assert.Equal("image/webp", type);
}
private async Task AssertImageAsync(AssetDto asset)
{
// Should parse image metadata.
@ -192,5 +211,24 @@ namespace TestSuite.ApiTests
}
}
}
private async Task<(long, string)> GetReformattedLength(string imageId, string format)
{
var url = $"{_.ClientManager.GenerateImageUrl(imageId)}?format={format}";
using (var httpClient = _.ClientManager.CreateHttpClient())
{
var response = await httpClient.GetAsync(url);
await using (var stream = await response.Content.ReadAsStreamAsync())
{
var buffer = new MemoryStream();
await stream.CopyToAsync(buffer);
return (buffer.Length, response.Content.Headers.ContentType.ToString());
}
}
}
}
}

Loading…
Cancel
Save