Files
RpgRoller/RpgRoller.Tests/Api/AuthApiTests.cs
2026-02-26 11:08:02 +01:00

32 lines
1.3 KiB
C#

namespace RpgRoller.Tests;
public sealed class AuthApiTests : ApiTestBase
{
public AuthApiTests(WebApplicationFactory<Program> factory) : base(factory)
{
}
[Fact]
public async Task RegisterLoginAndMeFlow_WorksWithDuplicateUsernameGuard()
{
using var factory = CreateFactory(4, 4, 4);
using var client = factory.CreateClient(new() { AllowAutoRedirect = false });
var registerResult = await RegisterAsync(client, "alice", "Password123", "Alice");
Assert.Equal("alice", registerResult.Username);
var duplicate = await client.PostAsJsonAsync("/api/auth/register", new RegisterRequest("alice", "Password123", "Alice 2"));
Assert.Equal(HttpStatusCode.BadRequest, duplicate.StatusCode);
var loginResult = await client.PostAsJsonAsync("/api/auth/login", new LoginRequest("alice", "Password123"));
Assert.Equal(HttpStatusCode.OK, loginResult.StatusCode);
var me = await GetAsync<MeResponse>(client, "/api/me");
Assert.Equal(registerResult.Id, me.User.Id);
Assert.Null(me.ActiveCharacterId);
Assert.Null(me.CurrentCampaignId);
var invalidLogin = await client.PostAsJsonAsync("/api/auth/login", new LoginRequest("alice", "wrong-password"));
Assert.Equal(HttpStatusCode.BadRequest, invalidLogin.StatusCode);
}
}