Reorganize tests by API and service concerns
This commit is contained in:
59
RpgRoller.Tests/Services/ServiceAuthTests.cs
Normal file
59
RpgRoller.Tests/Services/ServiceAuthTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user