using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; namespace TeamUp.IntegrationTests; /// /// Drives the real web host against the test container, in Development so /// migrations apply on startup and the OpenAPI document is mapped. /// public sealed class TeamUpWebFactory( string connectionString, IReadOnlyDictionary? settings = null) : WebApplicationFactory { /// Operator key the test host accepts for builtin management (/index, /sync). public const string PlatformAdminKey = "test-admin-key"; protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.UseEnvironment("Development"); builder.UseSetting("ConnectionStrings:Postgres", connectionString); builder.UseSetting("Database:ApplyMigrationsOnStartup", "true"); builder.UseSetting("OpenTelemetry:OtlpEndpoint", string.Empty); builder.UseSetting("Skills:AdminKey", PlatformAdminKey); if (settings is not null) { foreach (var (key, value) in settings) { builder.UseSetting(key, value); } } } }