0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-06-30 10:33:43 +00:00

chore: Cleanup

This commit is contained in:
alex289 2023-08-31 18:50:23 +02:00
parent 9ba530417c
commit f6ffb4b62e
No known key found for this signature in database
GPG Key ID: 573F77CD2D87F863
6 changed files with 64 additions and 7 deletions

View File

@ -56,7 +56,6 @@ public sealed class UserController : ApiController
}
[HttpPost]
[AllowAnonymous]
[SwaggerOperation("Create a new user")]
[SwaggerResponse(200, "Request successful", typeof(ResponseMessage<Guid>))]
public async Task<IActionResult> CreateUserAsync([FromBody] CreateUserViewModel viewModel)

View File

@ -1,7 +1,9 @@
using System;
using CleanArchitecture.Domain.Commands.Users.CreateUser;
using CleanArchitecture.Domain.Enums;
using CleanArchitecture.Domain.Errors;
using CleanArchitecture.Domain.Events.User;
using NSubstitute;
using Xunit;
namespace CleanArchitecture.Domain.Tests.CommandHandler.User.CreateUser;
@ -13,7 +15,6 @@ public sealed class CreateUserCommandHandlerTests
[Fact]
public void Should_Create_User()
{
// Todo: Fix tests
_fixture.SetupCurrentUser();
var user = _fixture.SetupUser();
@ -61,6 +62,41 @@ public sealed class CreateUserCommandHandlerTests
$"There is already a user with Id {command.UserId}");
}
[Fact]
public void Should_Not_Create_Already_Existing_Email()
{
_fixture.SetupCurrentUser();
_fixture.UserRepository
.GetByEmailAsync(Arg.Is<string>(y => y == "test@email.com"))
.Returns(new Entities.User(
Guid.NewGuid(),
Guid.NewGuid(),
"max@mustermann.com",
"Max",
"Mustermann",
"Password",
UserRole.User));
var command = new CreateUserCommand(
Guid.NewGuid(),
Guid.NewGuid(),
"test@email.com",
"Test",
"Email",
"Po=PF]PC6t.?8?ks)A6W");
_fixture.CommandHandler.Handle(command, default).Wait();
_fixture
.VerifyNoCommit()
.VerifyNoRaisedEvent<UserCreatedEvent>()
.VerifyAnyDomainNotification()
.VerifyExistingNotification(
DomainErrorCodes.User.UserAlreadyExists,
$"There is already a user with email {command.Email}");
}
[Fact]
public void Should_Not_Create_User_Tenant_Does_Not_Exist()
{

View File

@ -1,7 +1,6 @@
using System;
using CleanArchitecture.Domain.Commands.Users.CreateUser;
using CleanArchitecture.Domain.Enums;
using CleanArchitecture.Domain.Interfaces;
using CleanArchitecture.Domain.Interfaces.Repositories;
using NSubstitute;
@ -10,15 +9,13 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.CreateUser;
public sealed class CreateUserCommandTestFixture : CommandHandlerFixtureBase
{
public CreateUserCommandHandler CommandHandler { get; }
private IUserRepository UserRepository { get; }
public IUserRepository UserRepository { get; }
private ITenantRepository TenantRepository { get; }
private IUser User { get; }
public CreateUserCommandTestFixture()
{
UserRepository = Substitute.For<IUserRepository>();
TenantRepository = Substitute.For<ITenantRepository>();
User = Substitute.For<IUser>();
CommandHandler = new CreateUserCommandHandler(
Bus,

View File

@ -42,4 +42,24 @@ public sealed class DeleteUserCommandHandlerTests
ErrorCodes.ObjectNotFound,
$"There is no user with Id {command.UserId}");
}
[Fact]
public void Should_Not_Delete_User_Insufficient_Permissions()
{
var user = _fixture.SetupUser();
_fixture.SetupCurrentUser();
var command = new DeleteUserCommand(user.Id);
_fixture.CommandHandler.Handle(command, default).Wait();
_fixture
.VerifyNoCommit()
.VerifyNoRaisedEvent<UserDeletedEvent>()
.VerifyAnyDomainNotification()
.VerifyExistingNotification(
ErrorCodes.InsufficientPermissions,
$"No permission to delete user {command.UserId}");
}
}

View File

@ -40,4 +40,9 @@ public sealed class DeleteUserCommandTestFixture : CommandHandlerFixtureBase
return user;
}
public void SetupCurrentUser()
{
User.GetUserRole().Returns(UserRole.User);
}
}

View File

@ -57,7 +57,7 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto
{
options.DefaultAuthenticateScheme = "Testing";
options.DefaultChallengeScheme = "Testing";
}).AddTestAuthentication(options => { });
}).AddTestAuthentication(_ => { });
}
var sp = services.BuildServiceProvider();