Тесты

This commit is contained in:
Халимов Рустам
2026-03-19 02:00:49 +03:00
parent 4410f2d98b
commit d61dfd217c
6 changed files with 264 additions and 9 deletions

View File

@@ -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>());