Reorganize tests by API and service concerns

This commit is contained in:
2026-02-24 23:46:47 +01:00
parent 885121723d
commit 50f56fdab7
20 changed files with 897 additions and 799 deletions

View File

@@ -0,0 +1,59 @@
namespace RpgRoller.Tests;
public sealed class ServiceAuthTests
{
[Fact]
public void Register_ValidatesRequiredFieldsAndDuplicates()
{
using var harness = ServiceTestSupport.CreateHarness();
var service = harness.Service;
var invalidUsername = service.Register(new RegisterCommand("", "Password123", "Display"));
var invalidDisplay = service.Register(new RegisterCommand("user", "Password123", ""));
var invalidPassword = service.Register(new RegisterCommand("user", "short", "Display"));
var valid = service.Register(new RegisterCommand("user", "Password123", "Display"));
var duplicate = service.Register(new RegisterCommand("user", "Password123", "Display 2"));
Assert.False(invalidUsername.Succeeded);
Assert.False(invalidDisplay.Succeeded);
Assert.False(invalidPassword.Succeeded);
Assert.True(valid.Succeeded);
Assert.False(duplicate.Succeeded);
}
[Fact]
public void Login_ValidatesCredentialsAndSessionLookup()
{
using var harness = ServiceTestSupport.CreateHarness();
var service = harness.Service;
service.Register(new RegisterCommand("user", "Password123", "Display"));
var invalidUser = service.Login(new LoginCommand("missing", "Password123"));
var invalidPassword = service.Login(new LoginCommand("user", "bad-password"));
var valid = service.Login(new LoginCommand("user", "Password123"));
Assert.False(invalidUser.Succeeded);
Assert.False(invalidPassword.Succeeded);
Assert.True(valid.Succeeded);
var sessionUser = service.GetUserBySession(valid.Value.SessionToken);
Assert.NotNull(sessionUser);
service.Logout(valid.Value.SessionToken);
Assert.Null(service.GetUserBySession(valid.Value.SessionToken));
}
[Fact]
public void Login_RehashesPasswordWhenHasherRequestsIt()
{
var hasher = new ServiceTestSupport.RehashingPasswordHasher();
using var harness = ServiceTestSupport.CreateHarness(hasher);
var service = harness.Service;
service.Register(new RegisterCommand("user", "Password123", "Display"));
var login = service.Login(new LoginCommand("user", "Password123"));
Assert.True(login.Succeeded);
Assert.Equal(2, hasher.HashCalls);
}
}