From c0292eeb2eb1d531cede4b3fdfead86a86730056 Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Sun, 1 Sep 2019 23:21:59 +0800 Subject: Add more tests on avatar. --- Timeline.Tests/Helpers/ImageHelper.cs | 13 +++++++++++++ Timeline.Tests/IntegratedTests/UserAvatarTests.cs | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Timeline.Tests/Helpers/ImageHelper.cs b/Timeline.Tests/Helpers/ImageHelper.cs index c5a9cf17..2a2f3870 100644 --- a/Timeline.Tests/Helpers/ImageHelper.cs +++ b/Timeline.Tests/Helpers/ImageHelper.cs @@ -1,4 +1,5 @@ using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.PixelFormats; using System.IO; @@ -17,5 +18,17 @@ namespace Timeline.Tests.Helpers } } } + + public static byte[] CreateImageWithSize(int width, int height, IImageFormat format) + { + using (var image = new Image(width, height)) + { + using (var stream = new MemoryStream()) + { + image.Save(stream, format); + return stream.ToArray(); + } + } + } } } diff --git a/Timeline.Tests/IntegratedTests/UserAvatarTests.cs b/Timeline.Tests/IntegratedTests/UserAvatarTests.cs index 246125d0..fd0c2ef4 100644 --- a/Timeline.Tests/IntegratedTests/UserAvatarTests.cs +++ b/Timeline.Tests/IntegratedTests/UserAvatarTests.cs @@ -2,8 +2,12 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.DependencyInjection; +using SixLabors.ImageSharp.Formats; +using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Formats.Png; +using SixLabors.ImageSharp.Formats.Gif; using System; +using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; @@ -108,7 +112,7 @@ namespace Timeline.Tests.IntegratedTests RequestUri = new Uri(client.BaseAddress, "users/user/avatar"), Method = HttpMethod.Get, }; - request.Headers.Add ("If-None-Match", eTag.ToString()); + request.Headers.Add("If-None-Match", eTag.ToString()); var res = await client.SendAsync(request); res.Should().HaveStatusCode(HttpStatusCode.NotModified); } @@ -199,6 +203,19 @@ namespace Timeline.Tests.IntegratedTests body.Should().Equal(mockAvatar.Data); } + IEnumerable<(string, IImageFormat)> formats = new (string, IImageFormat)[] + { + ("image/jpeg", JpegFormat.Instance), + ("image/gif", GifFormat.Instance), + ("image/png", PngFormat.Instance), + }; + + foreach ((var mimeType, var format) in formats) + { + var res = await client.PutByteArrayAsync("users/user/avatar", ImageHelper.CreateImageWithSize(100, 100, format), mimeType); + res.Should().HaveStatusCode(HttpStatusCode.OK); + } + { var res = await client.PutByteArrayAsync("users/admin/avatar", new[] { (byte)0x00 }, "image/png"); res.Should().HaveStatusCode(HttpStatusCode.Forbidden) -- cgit v1.2.3