refactor(tests): TestWebAppFactory.CreateClientWithOverrides para DI override scoped (closes #36) #43

Merged
dmolinari merged 1 commits from fix/issue-36-rsa-singleton-override into main 2026-04-19 20:00:47 +00:00
Owner

Summary

  • Nuevo helper TestWebAppFactory.CreateClientWithOverrides(Action<IServiceCollection>) — wrapper sobre WithWebHostBuilder + ConfigureTestServices
  • XML doc explica el patrón para futuros tests que necesiten inyectar fakes scoped
  • 2 e2e tests nuevos que prueban el mecanismo: 409 en DELETE ProductType con Products activos + (si aplica) 409 en CreateRubro con avisos en padre
  • TODO comment // TODO PRD-002 removido en ProductTypesControllerTests.cs

Misdiagnóstico rectificado

El issue #36 asumía RSA singleton sealed como bloqueante, pero WithWebHostBuilder crea un child host independiente que re-ejecuta ConfigureWebHost (carga claves RSA frescas de PEM cada vez). No había leakage cross-host. El verdadero blocker era que ningún test usaba WithWebHostBuilder — todos compartían el mismo cliente root. El fix no rompe JWT signing porque cada override tiene su propia RSA válida.

Test plan

  • dotnet test tests/SIGCM2.Application.Tests/: 1013/1013
  • dotnet test tests/SIGCM2.Api.Tests/: 287 (285 + 2 nuevos)
  • Frontend no afectado

Closes

Closes #36

Siguiente

Patrón CreateClientWithOverrides disponible para cualquier UDT que necesite e2e 409/422/404 con DI override (VTA-, FAC-, etc.)

Artifacts

  • Issue #36 — tracking CAT-002 W1 inherited
  • Aplicable a PRD-002 (e2e 409 IProductQueryRepository) y CAT-002 (e2e 409 IAvisoQueryRepository)
## Summary - Nuevo helper `TestWebAppFactory.CreateClientWithOverrides(Action<IServiceCollection>)` — wrapper sobre `WithWebHostBuilder` + `ConfigureTestServices` - XML doc explica el patrón para futuros tests que necesiten inyectar fakes scoped - 2 e2e tests nuevos que prueban el mecanismo: 409 en DELETE ProductType con Products activos + (si aplica) 409 en CreateRubro con avisos en padre - TODO comment `// TODO PRD-002` removido en `ProductTypesControllerTests.cs` ## Misdiagnóstico rectificado El issue #36 asumía RSA singleton sealed como bloqueante, pero `WithWebHostBuilder` crea un child host independiente que re-ejecuta `ConfigureWebHost` (carga claves RSA frescas de PEM cada vez). No había leakage cross-host. El verdadero blocker era que **ningún test usaba `WithWebHostBuilder`** — todos compartían el mismo cliente root. El fix no rompe JWT signing porque cada override tiene su propia RSA válida. ## Test plan - [x] `dotnet test tests/SIGCM2.Application.Tests/`: 1013/1013 - [x] `dotnet test tests/SIGCM2.Api.Tests/`: **287** (285 + 2 nuevos) - [x] Frontend no afectado ## Closes Closes #36 ## Siguiente Patrón `CreateClientWithOverrides` disponible para cualquier UDT que necesite e2e 409/422/404 con DI override (VTA-*, FAC-*, etc.) ## Artifacts - Issue #36 — tracking CAT-002 W1 inherited - Aplicable a PRD-002 (e2e 409 IProductQueryRepository) y CAT-002 (e2e 409 IAvisoQueryRepository)
dmolinari added 1 commit 2026-04-19 20:00:43 +00:00
Agrega helper CreateClientWithOverrides en TestWebAppFactory que envuelve
WithWebHostBuilder+ConfigureTestServices para inyectar stubs por test sin
tocar la fábrica compartida. Usa el patrón para agregar 2 tests e2e:
Deactivate_WhenProductQueryReturnsInUse_Returns409WithErrorCode (PRD-001/PRD-002)
y CreateRubro_WhenParentHasAvisos_Returns409WithErrorCode (CAT-002).
Remueve el comentario TODO PRD-002. 287 Api tests verdes.
dmolinari merged commit e33e9f332e into main 2026-04-19 20:00:47 +00:00
dmolinari deleted branch fix/issue-36-rsa-singleton-override 2026-04-19 20:00:47 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dmolinari/SIG-CM2.0#43