From 81beb0a1028c91ce8361aac358aef9ad3648ad01 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Fri, 4 Sep 2026 15:21:42 +0100 Subject: [PATCH] test the avatar failback --- .../NonRegression/AvatarFallbackTests.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Yavsc.Org.Tests/NonRegression/AvatarFallbackTests.cs diff --git a/src/Yavsc.Org.Tests/NonRegression/AvatarFallbackTests.cs b/src/Yavsc.Org.Tests/NonRegression/AvatarFallbackTests.cs new file mode 100644 index 00000000..200f37fa --- /dev/null +++ b/src/Yavsc.Org.Tests/NonRegression/AvatarFallbackTests.cs @@ -0,0 +1,34 @@ +namespace Yavsc.Org.Tests.NonRegression; + +/// +/// Non-regression: avatar requests under /avatars must never return 404 +/// for missing files. The pipeline falls back to static defaults under +/// /images/Users/icon_user*.png. +/// +public class AvatarFallbackTests : IClassFixture +{ + private readonly TestWebApplicationFactory _factory; + + public AvatarFallbackTests(TestWebApplicationFactory factory) + { + _factory = factory; + } + + [Theory] + [InlineData("/avatars/user-does-not-exist.png")] + [InlineData("/avatars/user-does-not-exist.s.png")] + [InlineData("/avatars/user-does-not-exist.xs.png")] + public async Task Missing_avatar_file_returns_default_image_instead_of_404(string path) + { + using var client = _factory.CreateClient(); + var ct = TestContext.Current.CancellationToken; + + var response = await client.GetAsync(path, ct); + + Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode); + Assert.Equal("image/png", response.Content.Headers.ContentType?.MediaType); + + var payload = await response.Content.ReadAsByteArrayAsync(ct); + Assert.True(payload.Length > 0, $"Expected a non-empty fallback image for {path}."); + } +}