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; } }