Browse Source

test: add tests for new UserServices

BEEEP/pm-26016/cache-authenticator-failures
Ike Kottlowski 1 month ago
parent
commit
ea13991b7f
No known key found for this signature in database
GPG Key ID: C86308E3DCA6D76F
  1. 119
      test/Core.Test/Services/UserServiceTests.cs

119
test/Core.Test/Services/UserServiceTests.cs

@ -582,6 +582,125 @@ public class UserServiceTests @@ -582,6 +582,125 @@ public class UserServiceTests
Assert.NotNull(user.TwoFactorProviders);
}
[Theory, BitAutoData]
public async Task UpdateFailedAuthenticationDetailsAsync_NullUser_DoesNothing(
SutProvider<UserService> sutProvider)
{
// Act
await sutProvider.Sut.UpdateFailedAuthenticationDetailsAsync(null);
// Assert
await sutProvider.GetDependency<IUserRepository>()
.DidNotReceive()
.ReplaceAsync(Arg.Any<User>());
}
[Theory, BitAutoData]
public async Task UpdateFailedAuthenticationDetailsAsync_ValidUser_IncrementsFailedLoginCount(
SutProvider<UserService> sutProvider, User user)
{
// Arrange
var initialFailedLoginCount = user.FailedLoginCount;
var initialLastFailedLoginDate = user.LastFailedLoginDate;
// Act
await sutProvider.Sut.UpdateFailedAuthenticationDetailsAsync(user);
// Assert
Assert.Equal(initialFailedLoginCount + 1, user.FailedLoginCount);
Assert.NotNull(user.LastFailedLoginDate);
Assert.NotEqual(initialLastFailedLoginDate, user.LastFailedLoginDate);
await sutProvider.GetDependency<IUserRepository>()
.Received(1)
.ReplaceAsync(Arg.Is<User>(u =>
u.Id == user.Id &&
u.FailedLoginCount == initialFailedLoginCount + 1));
}
[Theory, BitAutoData]
public async Task UpdateFailedAuthenticationDetailsAsync_MultipleFailures_IncrementsCorrectly(
SutProvider<UserService> sutProvider, User user)
{
// Arrange
user.FailedLoginCount = 3;
var expectedCount = 4;
// Act
await sutProvider.Sut.UpdateFailedAuthenticationDetailsAsync(user);
// Assert
Assert.Equal(expectedCount, user.FailedLoginCount);
await sutProvider.GetDependency<IUserRepository>()
.Received(1)
.ReplaceAsync(user);
}
[Theory, BitAutoData]
public async Task ResetFailedAuthenticationDetailsAsync_NullUser_DoesNothing(
SutProvider<UserService> sutProvider)
{
// Act
await sutProvider.Sut.ResetFailedAuthenticationDetailsAsync(null);
// Assert
await sutProvider.GetDependency<IUserRepository>()
.DidNotReceive()
.ReplaceAsync(Arg.Any<User>());
}
[Theory, BitAutoData]
public async Task ResetFailedAuthenticationDetailsAsync_UserWithZeroFailedLogins_DoesNothing(
SutProvider<UserService> sutProvider, User user)
{
// Arrange
user.FailedLoginCount = 0;
// Act
await sutProvider.Sut.ResetFailedAuthenticationDetailsAsync(user);
// Assert
await sutProvider.GetDependency<IUserRepository>()
.DidNotReceive()
.ReplaceAsync(Arg.Any<User>());
}
[Theory, BitAutoData]
public async Task ResetFailedAuthenticationDetailsAsync_UserWithFailedLogins_ResetsToZero(
SutProvider<UserService> sutProvider, User user)
{
// Arrange
user.FailedLoginCount = 5;
var initialRevisionDate = user.RevisionDate;
// Act
await sutProvider.Sut.ResetFailedAuthenticationDetailsAsync(user);
// Assert
Assert.Equal(0, user.FailedLoginCount);
Assert.NotEqual(initialRevisionDate, user.RevisionDate);
await sutProvider.GetDependency<IUserRepository>()
.Received(1)
.ReplaceAsync(Arg.Is<User>(u =>
u.Id == user.Id &&
u.FailedLoginCount == 0));
}
[Theory, BitAutoData]
public async Task ResetFailedAuthenticationDetailsAsync_UpdatesRevisionDate(
SutProvider<UserService> sutProvider, User user)
{
// Arrange
user.FailedLoginCount = 3;
var beforeReset = DateTime.UtcNow;
// Act
await sutProvider.Sut.ResetFailedAuthenticationDetailsAsync(user);
// Assert
Assert.True(user.RevisionDate >= beforeReset);
Assert.True(user.RevisionDate <= DateTime.UtcNow);
}
private static void SetupUserAndDevice(User user,
bool shouldHavePassword)
{

Loading…
Cancel
Save