using System.Text.Json; namespace WorkClub.Tests.Integration.Infrastructure; public abstract class IntegrationTestBase : IClassFixture>, IAsyncLifetime { protected readonly HttpClient Client; protected readonly CustomWebApplicationFactory Factory; protected IntegrationTestBase(CustomWebApplicationFactory factory) { Factory = factory; Client = factory.CreateClient(); } protected void AuthenticateAs(string email, Dictionary clubs, string? userId = null) { var clubsJson = JsonSerializer.Serialize(clubs); Client.DefaultRequestHeaders.Remove("X-Test-Clubs"); Client.DefaultRequestHeaders.Add("X-Test-Clubs", clubsJson); Client.DefaultRequestHeaders.Remove("X-Test-Email"); Client.DefaultRequestHeaders.Add("X-Test-Email", email); if (!string.IsNullOrEmpty(userId)) { Client.DefaultRequestHeaders.Remove("X-Test-UserId"); Client.DefaultRequestHeaders.Add("X-Test-UserId", userId); } } protected void SetTenant(string tenantId) { Client.DefaultRequestHeaders.Remove("X-Tenant-Id"); Client.DefaultRequestHeaders.Add("X-Tenant-Id", tenantId); } public virtual Task InitializeAsync() => Task.CompletedTask; public virtual Task DisposeAsync() => Task.CompletedTask; }