using System.Net.Http.Json; namespace PnvPanel.IntegrationTests.TestSupport; public static class AuthTestHelper { public sealed record CurrentUserResponse(Guid Id, string UserName, string Role, bool IsActivated, bool TelegramLinked); public sealed record LoginResponse(string AccessToken, DateTimeOffset ExpiresAt, CurrentUserResponse User); public static async Task<(Guid Id, string AccessToken)> RegisterAndLoginAsync(HttpClient client, string userName, string password) { var registerResponse = await client.PostJsonAsync("/api/auth/register", new { userName, password }); registerResponse.EnsureSuccessStatusCode(); var (id, accessToken) = await LoginAsync(client, userName, password); return (id, accessToken); } public static async Task<(Guid Id, string AccessToken)> LoginAsync(HttpClient client, string userName, string password) { var loginResponse = await client.PostJsonAsync("/api/auth/login", new { userName, password }); loginResponse.EnsureSuccessStatusCode(); var login = await loginResponse.ReadAsAsync(); return (login!.User.Id, login.AccessToken); } public static async Task LoginAsAdminAsync(HttpClient client) { var (_, accessToken) = await LoginAsync(client, PnvPanelWebApplicationFactory.AdminUserName, PnvPanelWebApplicationFactory.AdminPassword); return accessToken; } }