Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

46 lines
1.6KB

  1. using System.Text.RegularExpressions;
  2. namespace CartWise.Web.Tests;
  3. internal static class WebTestHelpers
  4. {
  5. public static async Task RegisterAsync(HttpClient client, string email, string displayName, string password = "Sup3rSecret!23")
  6. {
  7. var html = await client.GetStringAsync("/Account/Register");
  8. var token = ExtractAntiForgeryToken(html);
  9. var form = new Dictionary<string, string>
  10. {
  11. ["__RequestVerificationToken"] = token,
  12. ["DisplayName"] = displayName,
  13. ["Email"] = email,
  14. ["Password"] = password,
  15. ["ConfirmPassword"] = password
  16. };
  17. var response = await client.PostAsync("/Account/Register", new FormUrlEncodedContent(form));
  18. response.EnsureSuccessStatusCode();
  19. }
  20. public static async Task CreateHouseholdAsync(HttpClient client, string name)
  21. {
  22. var html = await client.GetStringAsync("/household/create");
  23. var token = ExtractAntiForgeryToken(html);
  24. var form = new Dictionary<string, string>
  25. {
  26. ["__RequestVerificationToken"] = token,
  27. ["Name"] = name
  28. };
  29. var response = await client.PostAsync("/household/create", new FormUrlEncodedContent(form));
  30. response.EnsureSuccessStatusCode();
  31. }
  32. public static string ExtractAntiForgeryToken(string html)
  33. {
  34. var match = Regex.Match(html, "name=\"__RequestVerificationToken\"[^>]*value=\"([^\"]+)\"");
  35. return match.Success ? match.Groups[1].Value : throw new InvalidOperationException("Anti-forgery token not found.");
  36. }
  37. }

Powered by TurnKey Linux.