[CAT-002 / Infra] TestWebApplicationFactory: desacoplar RSA singleton para permitir override scoped en e2e #36
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexto
Detectado durante
sdd-verifyde CAT-002 (Regla de Oro Rama vs Hoja, PR #35).TestWebApplicationFactoryregistra el proveedor de claves RSA (JWT signing) como singleton sellado, lo que impide que un test individual haga override de dependenciesScopedvíaConfigureTestServices. En CAT-002 esto se manifestó en la imposibilidad de inyectar unFakeAvisoQueryRepositorypor test para forzar el path HTTPPOST /rubros→ 409 Conflict cuando el padre tiene avisos.La cobertura actual de ese path es compositiva (handler unit +
ExceptionFilterunit + DI wiring test del/arbol) — funcionalmente correcta, pero no end-to-end.Impacto
No es un problema solo de CAT-002. Cualquier UDT futuro que necesite override DI scoped en e2e va a topar con lo mismo:
IAvisoQueryRepository→AvisoQueryRepositoryvs stub.Tarea
Refactor de
tests/SIGCM2.Api.Tests/Infrastructure/TestWebApplicationFactory.cs:IKeyProviderscoped con default registrado en el factory, (b) sellar el RSA singleton pero aceptar overrides scoped de otros servicios, (c) patternWithWebHostBuilder(b => b.ConfigureTestServices(...))habilitado vía collection fixture no sellada.IAvisoQueryRepositorypara cubrir el 409 path de CAT-002).RubrosControllerTestsque hoy está comoSkipo no existe.Criterios de aceptación
IAvisoQueryRepository(o cualquier scoped dependency) sin romper JWT signing ni los 254 tests Api existentes.CreateRubro_Returns409_WhenParentHasAvisospasa.TestWebApplicationFactorypara uso futuro.Prioridad
Antes de PRD-002 (CAT-003 no lo necesita porque no toca
IAvisoQueryRepository).Artifacts
sdd/cat-002-regla-oro-rama-vs-hoja/verify-report— W1sdd/cat-002-regla-oro-rama-vs-hoja/archive-report