mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-30 02:31:08 +00:00
Update deps and rename names
This commit is contained in:
parent
1ec192c823
commit
6cb67265e3
@ -7,13 +7,13 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="7.0.5" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -6,7 +6,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -47,8 +47,8 @@ public sealed class UserService : IUserService
|
||||
await _bus.SendCommandAsync(new CreateUserCommand(
|
||||
userId,
|
||||
user.Email,
|
||||
user.Surname,
|
||||
user.GivenName,
|
||||
user.FirstName,
|
||||
user.LastName,
|
||||
user.Password));
|
||||
|
||||
return userId;
|
||||
@ -59,8 +59,8 @@ public sealed class UserService : IUserService
|
||||
await _bus.SendCommandAsync(new UpdateUserCommand(
|
||||
user.Id,
|
||||
user.Email,
|
||||
user.Surname,
|
||||
user.GivenName,
|
||||
user.FirstName,
|
||||
user.LastName,
|
||||
user.Role));
|
||||
}
|
||||
|
||||
|
@ -39,8 +39,8 @@ public sealed class UsersApiImplementation : UsersApi.UsersApiBase
|
||||
{
|
||||
Id = user.Id.ToString(),
|
||||
Email = user.Email,
|
||||
FirstName = user.GivenName,
|
||||
LastName = user.Surname,
|
||||
FirstName = user.FirstName,
|
||||
LastName = user.LastName,
|
||||
IsDeleted = user.Deleted
|
||||
})
|
||||
.ToListAsync();
|
||||
|
@ -2,6 +2,6 @@ namespace CleanArchitecture.Application.ViewModels.Users;
|
||||
|
||||
public sealed record CreateUserViewModel(
|
||||
string Email,
|
||||
string Surname,
|
||||
string GivenName,
|
||||
string FirstName,
|
||||
string LastName,
|
||||
string Password);
|
@ -6,6 +6,6 @@ namespace CleanArchitecture.Application.ViewModels.Users;
|
||||
public sealed record UpdateUserViewModel(
|
||||
Guid Id,
|
||||
string Email,
|
||||
string Surname,
|
||||
string GivenName,
|
||||
string FirstName,
|
||||
string LastName,
|
||||
UserRole Role);
|
@ -8,8 +8,8 @@ public sealed class UserViewModel
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string Email { get; set; } = string.Empty;
|
||||
public string GivenName { get; set; } = string.Empty;
|
||||
public string Surname { get; set; } = string.Empty;
|
||||
public string FirstName { get; set; } = string.Empty;
|
||||
public string LastName { get; set; } = string.Empty;
|
||||
public UserRole Role { get; set; }
|
||||
|
||||
public static UserViewModel FromUser(User user)
|
||||
@ -18,8 +18,8 @@ public sealed class UserViewModel
|
||||
{
|
||||
Id = user.Id,
|
||||
Email = user.Email,
|
||||
GivenName = user.GivenName,
|
||||
Surname = user.Surname,
|
||||
FirstName = user.FirstName,
|
||||
LastName = user.LastName,
|
||||
Role = user.Role
|
||||
};
|
||||
}
|
||||
|
@ -67,47 +67,47 @@ public sealed class CreateUserCommandValidationTests :
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Empty_Surname()
|
||||
public void Should_Be_Invalid_For_Empty_First_Name()
|
||||
{
|
||||
var command = CreateTestCommand(surName: "");
|
||||
var command = CreateTestCommand(firstName: "");
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserEmptySurname,
|
||||
"Surname may not be empty");
|
||||
DomainErrorCodes.UserEmptyFirstName,
|
||||
"FirstName may not be empty");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Surname_Exceeds_Max_Length()
|
||||
public void Should_Be_Invalid_For_First_Name_Exceeds_Max_Length()
|
||||
{
|
||||
var command = CreateTestCommand(surName: new string('a', 101));
|
||||
var command = CreateTestCommand(firstName: new string('a', 101));
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserSurnameExceedsMaxLength,
|
||||
"Surname may not be longer than 100 characters");
|
||||
DomainErrorCodes.UserFirstNameExceedsMaxLength,
|
||||
"FirstName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Empty_Given_Name()
|
||||
public void Should_Be_Invalid_For_Empty_Last_Name()
|
||||
{
|
||||
var command = CreateTestCommand(givenName: "");
|
||||
var command = CreateTestCommand(lastName: "");
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserEmptyGivenName,
|
||||
"Given name may not be empty");
|
||||
DomainErrorCodes.UserEmptyLastName,
|
||||
"LastName may not be empty");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Given_Name_Exceeds_Max_Length()
|
||||
public void Should_Be_Invalid_For_Last_Name_Exceeds_Max_Length()
|
||||
{
|
||||
var command = CreateTestCommand(givenName: new string('a', 101));
|
||||
var command = CreateTestCommand(lastName: new string('a', 101));
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserGivenNameExceedsMaxLength,
|
||||
"Given name may not be longer than 100 characters");
|
||||
DomainErrorCodes.UserLastNameExceedsMaxLength,
|
||||
"LastName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -179,15 +179,15 @@ public sealed class CreateUserCommandValidationTests :
|
||||
private static CreateUserCommand CreateTestCommand(
|
||||
Guid? userId = null,
|
||||
string? email = null,
|
||||
string? surName = null,
|
||||
string? givenName = null,
|
||||
string? firstName = null,
|
||||
string? lastName = null,
|
||||
string? password = null)
|
||||
{
|
||||
return new(
|
||||
userId ?? Guid.NewGuid(),
|
||||
email ?? "test@email.com",
|
||||
surName ?? "test",
|
||||
givenName ?? "email",
|
||||
firstName ?? "test",
|
||||
lastName ?? "email",
|
||||
password ?? "Po=PF]PC6t.?8?ks)A6W");
|
||||
}
|
||||
}
|
@ -66,61 +66,61 @@ public sealed class UpdateUserCommandValidationTests :
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Empty_Surname()
|
||||
public void Should_Be_Invalid_For_Empty_First_Name()
|
||||
{
|
||||
var command = CreateTestCommand(surName: "");
|
||||
var command = CreateTestCommand(firstName: "");
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserEmptySurname,
|
||||
"Surname may not be empty");
|
||||
DomainErrorCodes.UserEmptyFirstName,
|
||||
"FirstName may not be empty");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Surname_Exceeds_Max_Length()
|
||||
public void Should_Be_Invalid_For_First_Name_Exceeds_Max_Length()
|
||||
{
|
||||
var command = CreateTestCommand(surName: new string('a', 101));
|
||||
var command = CreateTestCommand(firstName: new string('a', 101));
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserSurnameExceedsMaxLength,
|
||||
"Surname may not be longer than 100 characters");
|
||||
DomainErrorCodes.UserFirstNameExceedsMaxLength,
|
||||
"FirstName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Empty_Given_Name()
|
||||
public void Should_Be_Invalid_For_Empty_Last_Name()
|
||||
{
|
||||
var command = CreateTestCommand(givenName: "");
|
||||
var command = CreateTestCommand(lastName: "");
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserEmptyGivenName,
|
||||
"Given name may not be empty");
|
||||
DomainErrorCodes.UserEmptyLastName,
|
||||
"LastName may not be empty");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Be_Invalid_For_Given_Name_Exceeds_Max_Length()
|
||||
public void Should_Be_Invalid_For_Last_Name_Exceeds_Max_Length()
|
||||
{
|
||||
var command = CreateTestCommand(givenName: new string('a', 101));
|
||||
var command = CreateTestCommand(lastName: new string('a', 101));
|
||||
|
||||
ShouldHaveSingleError(
|
||||
command,
|
||||
DomainErrorCodes.UserGivenNameExceedsMaxLength,
|
||||
"Given name may not be longer than 100 characters");
|
||||
DomainErrorCodes.UserLastNameExceedsMaxLength,
|
||||
"LastName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
private static UpdateUserCommand CreateTestCommand(
|
||||
Guid? userId = null,
|
||||
string? email = null,
|
||||
string? surName = null,
|
||||
string? givenName = null,
|
||||
string? firstName = null,
|
||||
string? lastName = null,
|
||||
UserRole? role = null)
|
||||
{
|
||||
return new(
|
||||
userId ?? Guid.NewGuid(),
|
||||
email ?? "test@email.com",
|
||||
surName ?? "test",
|
||||
givenName ?? "email",
|
||||
firstName ?? "test",
|
||||
lastName ?? "email",
|
||||
role ?? UserRole.User);
|
||||
}
|
||||
}
|
@ -6,12 +6,12 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3"/>
|
||||
<PackageReference Include="FluentValidation" Version="11.5.1"/>
|
||||
<PackageReference Include="MediatR" Version="12.0.1"/>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0"/>
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.1"/>
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.27.0"/>
|
||||
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
||||
<PackageReference Include="FluentValidation" Version="11.5.2" />
|
||||
<PackageReference Include="MediatR" Version="12.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.1" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.29.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -9,21 +9,21 @@ public sealed class CreateUserCommand : CommandBase
|
||||
public CreateUserCommand(
|
||||
Guid userId,
|
||||
string email,
|
||||
string surname,
|
||||
string givenName,
|
||||
string firstName,
|
||||
string lastName,
|
||||
string password) : base(userId)
|
||||
{
|
||||
UserId = userId;
|
||||
Email = email;
|
||||
Surname = surname;
|
||||
GivenName = givenName;
|
||||
FirstName = firstName;
|
||||
LastName = lastName;
|
||||
Password = password;
|
||||
}
|
||||
|
||||
public Guid UserId { get; }
|
||||
public string Email { get; }
|
||||
public string Surname { get; }
|
||||
public string GivenName { get; }
|
||||
public string FirstName { get; }
|
||||
public string LastName { get; }
|
||||
public string Password { get; }
|
||||
|
||||
public override bool IsValid()
|
||||
|
@ -62,8 +62,8 @@ public sealed class CreateUserCommandHandler : CommandHandlerBase,
|
||||
var user = new User(
|
||||
request.UserId,
|
||||
request.Email,
|
||||
request.Surname,
|
||||
request.GivenName,
|
||||
request.FirstName,
|
||||
request.LastName,
|
||||
passwordHash,
|
||||
UserRole.User);
|
||||
|
||||
|
@ -10,8 +10,8 @@ public sealed class CreateUserCommandValidation : AbstractValidator<CreateUserCo
|
||||
{
|
||||
AddRuleForId();
|
||||
AddRuleForEmail();
|
||||
AddRuleForSurname();
|
||||
AddRuleForGivenName();
|
||||
AddRuleForFirstName();
|
||||
AddRuleForLastName();
|
||||
AddRuleForPassword();
|
||||
}
|
||||
|
||||
@ -34,26 +34,26 @@ public sealed class CreateUserCommandValidation : AbstractValidator<CreateUserCo
|
||||
.WithMessage("Email may not be longer than 320 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForSurname()
|
||||
private void AddRuleForFirstName()
|
||||
{
|
||||
RuleFor(cmd => cmd.Surname)
|
||||
RuleFor(cmd => cmd.FirstName)
|
||||
.NotEmpty()
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptySurname)
|
||||
.WithMessage("Surname may not be empty")
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyFirstName)
|
||||
.WithMessage("FirstName may not be empty")
|
||||
.MaximumLength(100)
|
||||
.WithErrorCode(DomainErrorCodes.UserSurnameExceedsMaxLength)
|
||||
.WithMessage("Surname may not be longer than 100 characters");
|
||||
.WithErrorCode(DomainErrorCodes.UserFirstNameExceedsMaxLength)
|
||||
.WithMessage("FirstName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForGivenName()
|
||||
private void AddRuleForLastName()
|
||||
{
|
||||
RuleFor(cmd => cmd.GivenName)
|
||||
RuleFor(cmd => cmd.LastName)
|
||||
.NotEmpty()
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyGivenName)
|
||||
.WithMessage("Given name may not be empty")
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyLastName)
|
||||
.WithMessage("LastName may not be empty")
|
||||
.MaximumLength(100)
|
||||
.WithErrorCode(DomainErrorCodes.UserGivenNameExceedsMaxLength)
|
||||
.WithMessage("Given name may not be longer than 100 characters");
|
||||
.WithErrorCode(DomainErrorCodes.UserLastNameExceedsMaxLength)
|
||||
.WithMessage("LastName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForPassword()
|
||||
|
@ -10,21 +10,21 @@ public sealed class UpdateUserCommand : CommandBase
|
||||
public UpdateUserCommand(
|
||||
Guid userId,
|
||||
string email,
|
||||
string surname,
|
||||
string givenName,
|
||||
string firstName,
|
||||
string lastName,
|
||||
UserRole role) : base(userId)
|
||||
{
|
||||
UserId = userId;
|
||||
Email = email;
|
||||
Surname = surname;
|
||||
GivenName = givenName;
|
||||
FirstName = firstName;
|
||||
LastName = lastName;
|
||||
Role = role;
|
||||
}
|
||||
|
||||
public Guid UserId { get; }
|
||||
public string Email { get; }
|
||||
public string Surname { get; }
|
||||
public string GivenName { get; }
|
||||
public string FirstName { get; }
|
||||
public string LastName { get; }
|
||||
public UserRole Role { get; }
|
||||
|
||||
public override bool IsValid()
|
||||
|
@ -63,8 +63,8 @@ public sealed class UpdateUserCommandHandler : CommandHandlerBase,
|
||||
}
|
||||
|
||||
user.SetEmail(request.Email);
|
||||
user.SetSurname(request.Surname);
|
||||
user.SetGivenName(request.GivenName);
|
||||
user.SetFirstName(request.FirstName);
|
||||
user.SetLastName(request.LastName);
|
||||
|
||||
_userRepository.Update(user);
|
||||
|
||||
|
@ -9,8 +9,8 @@ public sealed class UpdateUserCommandValidation : AbstractValidator<UpdateUserCo
|
||||
{
|
||||
AddRuleForId();
|
||||
AddRuleForEmail();
|
||||
AddRuleForSurname();
|
||||
AddRuleForGivenName();
|
||||
AddRuleForFirstName();
|
||||
AddRuleForLastName();
|
||||
AddRuleForRole();
|
||||
}
|
||||
|
||||
@ -33,26 +33,26 @@ public sealed class UpdateUserCommandValidation : AbstractValidator<UpdateUserCo
|
||||
.WithMessage("Email may not be longer than 320 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForSurname()
|
||||
private void AddRuleForFirstName()
|
||||
{
|
||||
RuleFor(cmd => cmd.Surname)
|
||||
RuleFor(cmd => cmd.FirstName)
|
||||
.NotEmpty()
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptySurname)
|
||||
.WithMessage("Surname may not be empty")
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyFirstName)
|
||||
.WithMessage("FirstName may not be empty")
|
||||
.MaximumLength(100)
|
||||
.WithErrorCode(DomainErrorCodes.UserSurnameExceedsMaxLength)
|
||||
.WithMessage("Surname may not be longer than 100 characters");
|
||||
.WithErrorCode(DomainErrorCodes.UserFirstNameExceedsMaxLength)
|
||||
.WithMessage("FirstName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForGivenName()
|
||||
private void AddRuleForLastName()
|
||||
{
|
||||
RuleFor(cmd => cmd.GivenName)
|
||||
RuleFor(cmd => cmd.LastName)
|
||||
.NotEmpty()
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyGivenName)
|
||||
.WithMessage("Given name may not be empty")
|
||||
.WithErrorCode(DomainErrorCodes.UserEmptyLastName)
|
||||
.WithMessage("LastName may not be empty")
|
||||
.MaximumLength(100)
|
||||
.WithErrorCode(DomainErrorCodes.UserGivenNameExceedsMaxLength)
|
||||
.WithMessage("Given name may not be longer than 100 characters");
|
||||
.WithErrorCode(DomainErrorCodes.UserLastNameExceedsMaxLength)
|
||||
.WithMessage("LastName may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
private void AddRuleForRole()
|
||||
|
@ -9,25 +9,25 @@ public class User : Entity
|
||||
public User(
|
||||
Guid id,
|
||||
string email,
|
||||
string surname,
|
||||
string givenName,
|
||||
string firstname,
|
||||
string lastName,
|
||||
string password,
|
||||
UserRole role) : base(id)
|
||||
{
|
||||
Email = email;
|
||||
GivenName = givenName;
|
||||
Surname = surname;
|
||||
FirstName = firstname;
|
||||
LastName = lastName;
|
||||
Password = password;
|
||||
Role = role;
|
||||
}
|
||||
|
||||
public string Email { get; private set; }
|
||||
public string GivenName { get; private set; }
|
||||
public string Surname { get; private set; }
|
||||
public string FirstName { get; private set; }
|
||||
public string LastName { get; private set; }
|
||||
public string Password { get; private set; }
|
||||
public UserRole Role { get; private set; }
|
||||
|
||||
public string FullName => $"{Surname}, {GivenName}";
|
||||
public string FullName => $"{FirstName}, {LastName}";
|
||||
|
||||
[MemberNotNull(nameof(Email))]
|
||||
public void SetEmail(string email)
|
||||
@ -46,38 +46,38 @@ public class User : Entity
|
||||
Email = email;
|
||||
}
|
||||
|
||||
[MemberNotNull(nameof(GivenName))]
|
||||
public void SetGivenName(string givenName)
|
||||
[MemberNotNull(nameof(FirstName))]
|
||||
public void SetFirstName(string firstName)
|
||||
{
|
||||
if (givenName == null)
|
||||
if (firstName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(givenName));
|
||||
throw new ArgumentNullException(nameof(firstName));
|
||||
}
|
||||
|
||||
if (givenName.Length > 100)
|
||||
if (firstName.Length > 100)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"Given name may not be longer than 100 characters");
|
||||
"First name may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
GivenName = givenName;
|
||||
FirstName = firstName;
|
||||
}
|
||||
|
||||
[MemberNotNull(nameof(Surname))]
|
||||
public void SetSurname(string surname)
|
||||
[MemberNotNull(nameof(LastName))]
|
||||
public void SetLastName(string lastName)
|
||||
{
|
||||
if (surname == null)
|
||||
if (lastName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(surname));
|
||||
throw new ArgumentNullException(nameof(lastName));
|
||||
}
|
||||
|
||||
if (surname.Length > 100)
|
||||
if (lastName.Length > 100)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"Surname may not be longer than 100 characters");
|
||||
"Last name may not be longer than 100 characters");
|
||||
}
|
||||
|
||||
Surname = surname;
|
||||
LastName = lastName;
|
||||
}
|
||||
|
||||
[MemberNotNull(nameof(Password))]
|
||||
|
@ -4,11 +4,11 @@ public static class DomainErrorCodes
|
||||
{
|
||||
// User Validation
|
||||
public const string UserEmptyId = "USER_EMPTY_ID";
|
||||
public const string UserEmptySurname = "USER_EMPTY_SURNAME";
|
||||
public const string UserEmptyGivenName = "USER_EMPTY_GIVEN_NAME";
|
||||
public const string UserEmptyFirstName = "USER_EMPTY_FIRST_NAME";
|
||||
public const string UserEmptyLastName = "USER_EMPTY_LAST_NAME";
|
||||
public const string UserEmailExceedsMaxLength = "USER_EMAIL_EXCEEDS_MAX_LENGTH";
|
||||
public const string UserSurnameExceedsMaxLength = "USER_SURNAME_EXCEEDS_MAX_LENGTH";
|
||||
public const string UserGivenNameExceedsMaxLength = "USER_GIVEN_NAME_EXCEEDS_MAX_LENGTH";
|
||||
public const string UserFirstNameExceedsMaxLength = "USER_FIRST_NAME_EXCEEDS_MAX_LENGTH";
|
||||
public const string UserLastNameExceedsMaxLength = "USER_LAST_NAME_EXCEEDS_MAX_LENGTH";
|
||||
public const string UserInvalidEmail = "USER_INVALID_EMAIL";
|
||||
public const string UserInvalidRole = "USER_INVALID_ROLE";
|
||||
|
||||
|
@ -6,15 +6,15 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CleanArchitecture.Domain\CleanArchitecture.Domain.csproj"/>
|
||||
<ProjectReference Include="..\CleanArchitecture.Domain\CleanArchitecture.Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MediatR" Version="12.0.1"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.4">
|
||||
<PackageReference Include="MediatR" Version="12.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
@ -16,12 +16,12 @@ public sealed class UserConfiguration : IEntityTypeConfiguration<User>
|
||||
.HasMaxLength(320);
|
||||
|
||||
builder
|
||||
.Property(user => user.GivenName)
|
||||
.Property(user => user.FirstName)
|
||||
.IsRequired()
|
||||
.HasMaxLength(100);
|
||||
|
||||
builder
|
||||
.Property(user => user.Surname)
|
||||
.Property(user => user.LastName)
|
||||
.IsRequired()
|
||||
.HasMaxLength(100);
|
||||
|
||||
|
@ -8,14 +8,14 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" Version="6.10.0"/>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.4"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0"/>
|
||||
<PackageReference Include="xunit" Version="2.4.2"/>
|
||||
<PackageReference Include="Xunit.Priority" Version="1.1.6"/>
|
||||
<PackageReference Include="FluentAssertions" Version="6.10.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="Xunit.Priority" Version="1.1.6" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
@ -27,8 +27,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CleanArchitecture.Api\CleanArchitecture.Api.csproj"/>
|
||||
<ProjectReference Include="..\CleanArchitecture.Infrastructure\CleanArchitecture.Infrastructure.csproj"/>
|
||||
<ProjectReference Include="..\CleanArchitecture.Api\CleanArchitecture.Api.csproj" />
|
||||
<ProjectReference Include="..\CleanArchitecture.Infrastructure\CleanArchitecture.Infrastructure.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -81,8 +81,8 @@ public sealed class UserControllerTests : IClassFixture<UserTestFixture>
|
||||
|
||||
content.Id.Should().Be(_fixture.CreatedUserId);
|
||||
content.Email.Should().Be("test@email.com");
|
||||
content.Surname.Should().Be("Test");
|
||||
content.GivenName.Should().Be("Email");
|
||||
content.FirstName.Should().Be("Test");
|
||||
content.LastName.Should().Be("Email");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -101,8 +101,8 @@ public sealed class UserControllerTests : IClassFixture<UserTestFixture>
|
||||
|
||||
content.Id.Should().Be(_fixture.CreatedUserId);
|
||||
content.Email.Should().Be("test@email.com");
|
||||
content.Surname.Should().Be("Test");
|
||||
content.GivenName.Should().Be("Email");
|
||||
content.FirstName.Should().Be("Test");
|
||||
content.LastName.Should().Be("Email");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -145,8 +145,8 @@ public sealed class UserControllerTests : IClassFixture<UserTestFixture>
|
||||
|
||||
content.Id.Should().Be(_fixture.CreatedUserId);
|
||||
content.Email.Should().Be("newtest@email.com");
|
||||
content.Surname.Should().Be("NewTest");
|
||||
content.GivenName.Should().Be("NewEmail");
|
||||
content.FirstName.Should().Be("NewTest");
|
||||
content.LastName.Should().Be("NewEmail");
|
||||
|
||||
_fixture.CreatedUserEmail = content.Email;
|
||||
}
|
||||
@ -206,14 +206,14 @@ public sealed class UserControllerTests : IClassFixture<UserTestFixture>
|
||||
currentUser.Id.Should().Be(_fixture.CreatedUserId);
|
||||
currentUser.Role.Should().Be(UserRole.User);
|
||||
currentUser.Email.Should().Be("newtest@email.com");
|
||||
currentUser.Surname.Should().Be("NewTest");
|
||||
currentUser.GivenName.Should().Be("NewEmail");
|
||||
currentUser.FirstName.Should().Be("NewTest");
|
||||
currentUser.LastName.Should().Be("NewEmail");
|
||||
|
||||
var adminUser = content.First(x => x.Role == UserRole.Admin);
|
||||
|
||||
adminUser.Email.Should().Be("admin@email.com");
|
||||
adminUser.Surname.Should().Be("Admin");
|
||||
adminUser.GivenName.Should().Be("User");
|
||||
adminUser.FirstName.Should().Be("Admin");
|
||||
adminUser.LastName.Should().Be("User");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -6,19 +6,19 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Users\Models.proto"/>
|
||||
<None Remove="Users\UsersApi.proto"/>
|
||||
<None Remove="Users\Models.proto" />
|
||||
<None Remove="Users\UsersApi.proto" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Protobuf Include="Users\Models.proto" GrpcServices="Both"/>
|
||||
<Protobuf Include="Users\UsersApi.proto" GrpcServices="Both"/>
|
||||
<Protobuf Include="Users\Models.proto" GrpcServices="Both" />
|
||||
<Protobuf Include="Users\UsersApi.proto" GrpcServices="Both" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.22.1"/>
|
||||
<PackageReference Include="Google.Protobuf.Tools" Version="3.22.1"/>
|
||||
<PackageReference Include="Grpc.AspNetCore" Version="2.52.0"/>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.22.3" />
|
||||
<PackageReference Include="Google.Protobuf.Tools" Version="3.22.3" />
|
||||
<PackageReference Include="Grpc.AspNetCore" Version="2.52.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -57,8 +57,8 @@ public sealed class GetUsersByIdsTests : IClassFixture<UserTestsFixture>
|
||||
mockUser.Should().NotBeNull();
|
||||
|
||||
user.Email.Should().Be(mockUser.Email);
|
||||
user.FirstName.Should().Be(mockUser.GivenName);
|
||||
user.LastName.Should().Be(mockUser.Surname);
|
||||
user.FirstName.Should().Be(mockUser.FirstName);
|
||||
user.LastName.Should().Be(mockUser.LastName);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user