Files
GameList/GameList.Tests/Support/TestClientExtensions.cs
2026-02-05 20:39:12 +01:00

53 lines
1.6 KiB
C#

using System.Net.Http.Json;
using System.Text.Json;
namespace GameList.Tests.Support;
internal static class TestClientExtensions
{
public static Task<HttpResponseMessage> RegisterAsync(this HttpClient client, string username, bool admin = false)
{
return client.PostAsJsonAsync("/api/auth/register", new
{
Username = username,
Password = "Pass123!",
DisplayName = $"{username}-name",
AdminKey = admin ? "admin-key" : null
});
}
public static Task<HttpResponseMessage> LoginAsync(this HttpClient client, string username, string password)
{
return client.PostAsJsonAsync("/api/auth/login", new
{
Username = username,
Password = password
});
}
public static async Task<int> CreateSuggestionAsync(this HttpClient client, string name)
{
var response = await client.PostAsJsonAsync("/api/suggestions", new
{
Name = name,
Genre = "Coop",
Description = (string?)null,
ScreenshotUrl = (string?)null,
YoutubeUrl = (string?)null,
GameUrl = (string?)null,
MinPlayers = (int?)null,
MaxPlayers = (int?)null
});
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadFromJsonAsync<JsonElement>();
return json.GetProperty("id").GetInt32();
}
public static async Task<Guid> GetProfileIdAsync(this HttpClient client)
{
var me = await client.GetFromJsonAsync<JsonElement>("/api/me");
return Guid.Parse(me.GetProperty("id").GetString()!);
}
}