0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-06-30 18:42:56 +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] [HttpPost]
[AllowAnonymous]
[SwaggerOperation("Create a new user")] [SwaggerOperation("Create a new user")]
[SwaggerResponse(200, "Request successful", typeof(ResponseMessage<Guid>))] [SwaggerResponse(200, "Request successful", typeof(ResponseMessage<Guid>))]
public async Task<IActionResult> CreateUserAsync([FromBody] CreateUserViewModel viewModel) public async Task<IActionResult> CreateUserAsync([FromBody] CreateUserViewModel viewModel)

View File

@ -1,7 +1,9 @@
using System; using System;
using CleanArchitecture.Domain.Commands.Users.CreateUser; using CleanArchitecture.Domain.Commands.Users.CreateUser;
using CleanArchitecture.Domain.Enums;
using CleanArchitecture.Domain.Errors; using CleanArchitecture.Domain.Errors;
using CleanArchitecture.Domain.Events.User; using CleanArchitecture.Domain.Events.User;
using NSubstitute;
using Xunit; using Xunit;
namespace CleanArchitecture.Domain.Tests.CommandHandler.User.CreateUser; namespace CleanArchitecture.Domain.Tests.CommandHandler.User.CreateUser;
@ -13,7 +15,6 @@ public sealed class CreateUserCommandHandlerTests
[Fact] [Fact]
public void Should_Create_User() public void Should_Create_User()
{ {
// Todo: Fix tests
_fixture.SetupCurrentUser(); _fixture.SetupCurrentUser();
var user = _fixture.SetupUser(); var user = _fixture.SetupUser();
@ -61,6 +62,41 @@ public sealed class CreateUserCommandHandlerTests
$"There is already a user with Id {command.UserId}"); $"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] [Fact]
public void Should_Not_Create_User_Tenant_Does_Not_Exist() public void Should_Not_Create_User_Tenant_Does_Not_Exist()
{ {

View File

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

View File

@ -42,4 +42,24 @@ public sealed class DeleteUserCommandHandlerTests
ErrorCodes.ObjectNotFound, ErrorCodes.ObjectNotFound,
$"There is no user with Id {command.UserId}"); $"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; 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.DefaultAuthenticateScheme = "Testing";
options.DefaultChallengeScheme = "Testing"; options.DefaultChallengeScheme = "Testing";
}).AddTestAuthentication(options => { }); }).AddTestAuthentication(_ => { });
} }
var sp = services.BuildServiceProvider(); var sp = services.BuildServiceProvider();