using System.Net; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.Hosting; using Femsci.AspapajNet; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using System.Net.Mime; using System.Reflection; using System.Runtime.CompilerServices; namespace Femsci.AspapajNet.Test; public class PapajTest { private IHost BuildHost() { var builder = WebApplication.CreateBuilder(); builder.Services.AddPapiez(); builder.WebHost.UseTestServer(); var app = builder.Build(); app.UsePapiez(); app.MapGet("/", () => "test"); app.Start(); return app; } [Fact] public async Task Get_PapajAtPapajHeader() { using var host = BuildHost(); var client = host.GetTestClient(); client.DefaultRequestHeaders.TryAddWithoutValidation("Papaj", "yes"); var response = await client.GetAsync("/"); Assert.Equal(418, (int)response.StatusCode); Assert.Equal("image/jpeg", response.Content.Headers.ContentType?.MediaType); var bytes = await response.Content.ReadAsByteArrayAsync(); var orig = new MemoryStream(); await Assembly.GetAssembly(typeof(AspapajMiddleware))!.GetManifestResourceStream("Femsci.AspapajNet.papiez.jpg")!.CopyToAsync(orig); Assert.True(orig.ToArray().SequenceEqual(bytes)); } [Fact] public async Task Get_PapajNoHeader() { using var host = BuildHost(); var client = host.GetTestClient(); var now = DateTime.Now; var response = await client.GetAsync("/"); if (now.Hour == 21 && now.Minute == 37) { Assert.Equal(418, (int)response.StatusCode); Assert.Equal("image/jpeg", response.Content.Headers.ContentType?.MediaType); var bytes = await response.Content.ReadAsByteArrayAsync(); var orig = new MemoryStream(); await Assembly.GetAssembly(typeof(AspapajMiddleware))!.GetManifestResourceStream("Femsci.AspapajNet.papiez.jpg")!.CopyToAsync(orig); Assert.True(orig.ToArray().SequenceEqual(bytes)); } else { Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("test", await response.Content.ReadAsStringAsync()); } } }