Тесты
This commit is contained in:
+9
-6
@@ -4,8 +4,10 @@ using Knot.Modules.Identity.Application.Abstractions;
|
||||
using Knot.Modules.Identity.Application.Users.Login;
|
||||
using Knot.Modules.Identity.Domain;
|
||||
using Knot.Shared.Kernel;
|
||||
using Knot.Modules.Identity.Application.Users.Auth;
|
||||
using Xunit;
|
||||
using BCrypt.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Knot.Modules.Identity.UnitTests;
|
||||
|
||||
@@ -28,7 +30,7 @@ public class LoginUserCommandHandlerTests
|
||||
// Arrange
|
||||
var password = "password123";
|
||||
var passwordHash = BCrypt.Net.BCrypt.HashPassword(password);
|
||||
var user = User.Create("testuser", passwordHash, "Test User");
|
||||
var user = User.Create("testuser", passwordHash, "Test User", null, null);
|
||||
|
||||
var command = new LoginUserCommand("testuser", password);
|
||||
|
||||
@@ -42,7 +44,8 @@ public class LoginUserCommandHandlerTests
|
||||
|
||||
// Assert
|
||||
result.IsSuccess.Should().BeTrue();
|
||||
result.Value.Should().Be("valid-jwt-token");
|
||||
result.Value.Token.Should().Be("valid-jwt-token");
|
||||
result.Value.User.Username.Should().Be("testuser");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -58,7 +61,7 @@ public class LoginUserCommandHandlerTests
|
||||
|
||||
// Assert
|
||||
result.IsFailure.Should().BeTrue();
|
||||
result.Error.Code.Should().Be("Identity.InvalidCredentials");
|
||||
result.Error.Code.Should().Be(IdentityErrors.IdentityInvalidCredentials.Code);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -67,7 +70,7 @@ public class LoginUserCommandHandlerTests
|
||||
// Arrange
|
||||
var correctPassword = "correctPassword";
|
||||
var passwordHash = BCrypt.Net.BCrypt.HashPassword(correctPassword);
|
||||
var user = User.Create("testuser", passwordHash, "Test User");
|
||||
var user = User.Create("testuser", passwordHash, "Test User", null, null);
|
||||
|
||||
var command = new LoginUserCommand("testuser", "wrongPassword");
|
||||
|
||||
@@ -79,6 +82,6 @@ public class LoginUserCommandHandlerTests
|
||||
|
||||
// Assert
|
||||
result.IsFailure.Should().BeTrue();
|
||||
result.Error.Code.Should().Be("Identity.InvalidCredentials");
|
||||
result.Error.Code.Should().Be(IdentityErrors.IdentityInvalidCredentials.Code);
|
||||
}
|
||||
}
|
||||
|
||||
+33
-3
@@ -4,7 +4,10 @@ using Knot.Modules.Identity.Application.Abstractions;
|
||||
using Knot.Modules.Identity.Application.Users.Register;
|
||||
using Knot.Modules.Identity.Domain;
|
||||
using Knot.Shared.Kernel;
|
||||
using Knot.Shared.Kernel.Configuration;
|
||||
using Xunit;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Knot.Modules.Identity.UnitTests;
|
||||
|
||||
@@ -12,13 +15,21 @@ public class RegisterUserCommandHandlerTests
|
||||
{
|
||||
private readonly IUserRepository _userRepository;
|
||||
private readonly IIdentityUnitOfWork _unitOfWork;
|
||||
private readonly ISettingsService _settings;
|
||||
private readonly IJwtTokenProvider _tokenProvider;
|
||||
private readonly RegisterUserCommandHandler _handler;
|
||||
|
||||
public RegisterUserCommandHandlerTests()
|
||||
{
|
||||
_userRepository = Substitute.For<IUserRepository>();
|
||||
_unitOfWork = Substitute.For<IIdentityUnitOfWork>();
|
||||
_handler = new RegisterUserCommandHandler(_userRepository, _unitOfWork);
|
||||
_settings = Substitute.For<ISettingsService>();
|
||||
_tokenProvider = Substitute.For<IJwtTokenProvider>();
|
||||
|
||||
var options = new SystemSettingsDto { EnableRegistration = true };
|
||||
_settings.Current.Returns(options);
|
||||
|
||||
_handler = new RegisterUserCommandHandler(_userRepository, _unitOfWork, _settings, _tokenProvider);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -28,13 +39,14 @@ public class RegisterUserCommandHandlerTests
|
||||
var command = new RegisterUserCommand("testuser", "password123", "Test User", "test@example.com", "My bio");
|
||||
_userRepository.IsUsernameUniqueAsync(command.Username, Arg.Any<CancellationToken>())
|
||||
.Returns(true);
|
||||
_tokenProvider.Generate(Arg.Any<User>()).Returns("my-token");
|
||||
|
||||
// Act
|
||||
var result = await _handler.Handle(command, CancellationToken.None);
|
||||
|
||||
// Assert
|
||||
result.IsSuccess.Should().BeTrue();
|
||||
result.Value.Should().NotBeEmpty();
|
||||
result.Value.Token.Should().Be("my-token");
|
||||
|
||||
_userRepository.Received(1).Add(Arg.Is<User>(u =>
|
||||
u.Username == command.Username &&
|
||||
@@ -57,7 +69,25 @@ public class RegisterUserCommandHandlerTests
|
||||
|
||||
// Assert
|
||||
result.IsFailure.Should().BeTrue();
|
||||
result.Error.Code.Should().Be("Identity.UsernameNotUnique");
|
||||
result.Error.Code.Should().Be(IdentityErrors.IdentityUsernameNotUnique.Code);
|
||||
|
||||
_userRepository.DidNotReceive().Add(Arg.Any<User>());
|
||||
await _unitOfWork.DidNotReceive().SaveChangesAsync(Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Handle_ShouldReturnFailure_WhenRegistrationDisabled()
|
||||
{
|
||||
// Arrange
|
||||
_settings.Current.Returns(new SystemSettingsDto { EnableRegistration = false });
|
||||
var command = new RegisterUserCommand("testuser", "password123", "Test User", null, null);
|
||||
|
||||
// Act
|
||||
var result = await _handler.Handle(command, CancellationToken.None);
|
||||
|
||||
// Assert
|
||||
result.IsFailure.Should().BeTrue();
|
||||
result.Error.Code.Should().Be(IdentityErrors.IdentityRegistrationDisabled.Code);
|
||||
|
||||
_userRepository.DidNotReceive().Add(Arg.Any<User>());
|
||||
await _unitOfWork.DidNotReceive().SaveChangesAsync(Arg.Any<CancellationToken>());
|
||||
|
||||
Reference in New Issue
Block a user