using System.Net; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using SameBeat.Infrastructure.BazaDanych; using Xunit; namespace SameBeat.Tests.Integration; /// /// ETAP 8 -- regresja: GET /api/host/diagnostyka musi zostac chroniony przez KonwencjaAutoryzacjiHosta /// tak samo jak inne kontrolery pod "api/host/*", bez potrzeby recznego dopisywania [Authorize]. /// Uruchamia CALA aplikacje przez WebApplicationFactory (TestServer, bez prawdziwej sieci), tak samo /// jak NaglowkiBezpieczenstwaTests/StanImprezyHubAutoryzacjaTests. /// public class HostDiagnosticsAuthorizationTests : IClassFixture> { private readonly WebApplicationFactory _fabryka; public HostDiagnosticsAuthorizationTests(WebApplicationFactory fabryka) { _fabryka = fabryka.WithWebHostBuilder(builder => { builder.UseEnvironment("Testing"); builder.ConfigureServices(services => { var deskryptorKontekstu = services.SingleOrDefault(s => s.ServiceType == typeof(DbContextOptions)); if (deskryptorKontekstu is not null) { services.Remove(deskryptorKontekstu); } services.AddDbContext(opcje => opcje.UseInMemoryDatabase("HostDiagnosticsAuthorizationTests")); }); }); } [Fact] public async Task Diagnostyka_BezCiasteczkaAuth_Zwraca401() { var klient = _fabryka.CreateClient(); var odpowiedz = await klient.GetAsync("/api/host/diagnostyka"); Assert.Equal(HttpStatusCode.Unauthorized, odpowiedz.StatusCode); } }