mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-30 18:42:56 +00:00
chore: Cleanup
This commit is contained in:
parent
9ba530417c
commit
f6ffb4b62e
@ -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)
|
||||||
|
@ -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()
|
||||||
{
|
{
|
||||||
|
@ -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,
|
||||||
|
@ -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}");
|
||||||
|
}
|
||||||
}
|
}
|
@ -40,4 +40,9 @@ public sealed class DeleteUserCommandTestFixture : CommandHandlerFixtureBase
|
|||||||
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetupCurrentUser()
|
||||||
|
{
|
||||||
|
User.GetUserRole().Returns(UserRole.User);
|
||||||
|
}
|
||||||
}
|
}
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user