- RolesController /api/v1/roles CRUD admin-only: GET list, GET {codigo}, POST, PUT, DELETE (soft-delete con guard 409)
- ExceptionFilter: mapea RolNotFound (404), RolAlreadyExists (409), RolInUse (409)
- DI: registra 5 handlers de Roles (Application) y IRolRepository/RolRepository (Infrastructure)
- CreateUsuarioCommandValidator: reemplaza whitelist hardcoded por IRolRepository.ExistsActiveByCodigoAsync via MustAsync; constructor recibe (AuthOptions, IRolRepository)
- Tests: 202 verdes (173 application + 29 api). Nuevas: RolesEndpointTests (13 integration), CreateUsuarioCommandValidatorTests reescrito con NSubstitute mock, CreateUsuario_WithInactiveRol_Returns400 en Api.Tests
- Fix: ApiIntegration pasa de IClassFixture (N factories) a ICollectionFixture (1 factory shared) — evitaba ObjectDisposedException sobre RSABCrypt al compartir coleccion con multiples test classes
- tests/tests.runsettings: MaxCpuCount=1 para evitar race entre assemblies sobre SIGCM2_Test
40 lines
1.8 KiB
C#
40 lines
1.8 KiB
C#
using FluentValidation;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using SIGCM2.Application.Abstractions;
|
|
using SIGCM2.Application.Auth.Login;
|
|
using SIGCM2.Application.Auth.Logout;
|
|
using SIGCM2.Application.Auth.Refresh;
|
|
using SIGCM2.Application.Roles.Create;
|
|
using SIGCM2.Application.Roles.Deactivate;
|
|
using SIGCM2.Application.Roles.Dtos;
|
|
using SIGCM2.Application.Roles.Get;
|
|
using SIGCM2.Application.Roles.List;
|
|
using SIGCM2.Application.Roles.Update;
|
|
using SIGCM2.Application.Usuarios.Create;
|
|
|
|
namespace SIGCM2.Application;
|
|
|
|
public static class DependencyInjection
|
|
{
|
|
public static IServiceCollection AddApplication(this IServiceCollection services)
|
|
{
|
|
// Command handlers
|
|
services.AddScoped<ICommandHandler<LoginCommand, LoginResponseDto>, LoginCommandHandler>();
|
|
services.AddScoped<ICommandHandler<RefreshCommand, RefreshResponseDto>, RefreshCommandHandler>();
|
|
services.AddScoped<ICommandHandler<LogoutCommand, LogoutResponseDto>, LogoutCommandHandler>();
|
|
services.AddScoped<ICommandHandler<CreateUsuarioCommand, UsuarioCreatedDto>, CreateUsuarioCommandHandler>();
|
|
|
|
// Roles (UDT-004)
|
|
services.AddScoped<ICommandHandler<ListRolesQuery, IReadOnlyList<RolDto>>, ListRolesQueryHandler>();
|
|
services.AddScoped<ICommandHandler<GetRolByCodigoQuery, RolDto>, GetRolByCodigoQueryHandler>();
|
|
services.AddScoped<ICommandHandler<CreateRolCommand, RolCreatedDto>, CreateRolCommandHandler>();
|
|
services.AddScoped<ICommandHandler<UpdateRolCommand, RolDto>, UpdateRolCommandHandler>();
|
|
services.AddScoped<ICommandHandler<DeactivateRolCommand, RolDto>, DeactivateRolCommandHandler>();
|
|
|
|
// FluentValidation validators (scans entire Application assembly)
|
|
services.AddValidatorsFromAssemblyContaining<LoginCommandValidator>();
|
|
|
|
return services;
|
|
}
|
|
}
|