using System.Text.RegularExpressions; namespace CartWise.Web.Tests; internal static class WebTestHelpers { public static async Task RegisterAsync(HttpClient client, string email, string displayName, string password = "Sup3rSecret!23") { var html = await client.GetStringAsync("/Account/Register"); var token = ExtractAntiForgeryToken(html); var form = new Dictionary { ["__RequestVerificationToken"] = token, ["DisplayName"] = displayName, ["Email"] = email, ["Password"] = password, ["ConfirmPassword"] = password }; var response = await client.PostAsync("/Account/Register", new FormUrlEncodedContent(form)); response.EnsureSuccessStatusCode(); } public static async Task CreateHouseholdAsync(HttpClient client, string name) { var html = await client.GetStringAsync("/household/create"); var token = ExtractAntiForgeryToken(html); var form = new Dictionary { ["__RequestVerificationToken"] = token, ["Name"] = name }; var response = await client.PostAsync("/household/create", new FormUrlEncodedContent(form)); response.EnsureSuccessStatusCode(); } public static string ExtractAntiForgeryToken(string html) { var match = Regex.Match(html, "name=\"__RequestVerificationToken\"[^>]*value=\"([^\"]+)\""); return match.Success ? match.Groups[1].Value : throw new InvalidOperationException("Anti-forgery token not found."); } }