using System.Security.Claims; using System.Text.Encodings.Web; using System.Text.Json; using Microsoft.AspNetCore.Authentication; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace WorkClub.Tests.Integration.Infrastructure; public class TestAuthHandler : AuthenticationHandler { public TestAuthHandler( IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder) : base(options, logger, encoder) { } protected override Task HandleAuthenticateAsync() { var clubsClaim = Context.Request.Headers["X-Test-Clubs"].ToString(); var emailClaim = Context.Request.Headers["X-Test-Email"].ToString(); var claims = new List { new Claim(ClaimTypes.NameIdentifier, "test-user"), new Claim(ClaimTypes.Email, string.IsNullOrEmpty(emailClaim) ? "test@test.com" : emailClaim), }; if (!string.IsNullOrEmpty(clubsClaim)) { claims.Add(new Claim("clubs", clubsClaim)); } var identity = new ClaimsIdentity(claims, "Test"); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, "Test"); return Task.FromResult(AuthenticateResult.Success(ticket)); } }