fix(sprint-17 backend): re-désactive DevServices global en test (cause racine identifiée)
Le revert précédent (commit 5cc3806) basé sur 'ne pas appauvrir' était factuellement
incorrect pour ce projet. Analyse bytecode des extensions Quarkus 3.27.3 :
- quarkus-keycloak-admin-rest-client-deployment.KeycloakDevServiceRequiredBuildStep
est annoté @BuildSteps(onlyIf = {IsDevServicesSupportedByLaunchMode,
DevServicesConfig.Enabled, KeycloakAdminClientInjectionEnabled}) et produit
inconditionnellement un KeycloakDevServicesRequiredBuildItem dès que cette
extension est dans le classpath — ignorant quarkus.oidc.tenant-enabled et
quarkus.keycloak.devservices.enabled.
- Le seul kill switch respecté est DevServicesConfig.Enabled ⇒
quarkus.devservices.enabled.
- Empiriquement : sans le global, un container quay.io/keycloak/keycloak:26.3.4
démarre à chaque test (+50s, ignore KC local 8180).
Cohérence d'archi (pas un appauvrissement) :
- H2 in-memory configuré explicitement dans le profil test.
- OIDC tenant-enabled=false (pas d'auth en test).
- Aucune autre extension utilisant DevServices dans ce profil.
Aussi : application-integration-test.properties — corrige policy-enforcer.enable
(déprécié) en policy-enforcer.enabled (kill le warning au build).
Tests : 28 tests verts en <2s, 0 container démarré.
This commit is contained in:
@@ -23,11 +23,23 @@ quarkus.flyway.baseline-on-migrate=false
|
|||||||
# Configuration Keycloak pour tests (désactivé)
|
# Configuration Keycloak pour tests (désactivé)
|
||||||
quarkus.oidc.tenant-enabled=false
|
quarkus.oidc.tenant-enabled=false
|
||||||
quarkus.keycloak.policy-enforcer.enabled=false
|
quarkus.keycloak.policy-enforcer.enabled=false
|
||||||
# Keycloak DevService désactivé : OIDC tenant-enabled=false ⇒ aucun besoin de KC en test.
|
#
|
||||||
# (Évite le démarrage d'un container KC parasite de 50s+ ignorant l'instance locale 8180.)
|
# Désactivation GLOBALE des DevServices en mode test.
|
||||||
# NB : on NE désactive PAS quarkus.devservices.enabled globalement — laisse le mécanisme
|
# Pourquoi le global et pas seulement quarkus.keycloak.devservices.enabled=false :
|
||||||
# disponible si un futur test active un Postgres Testcontainer (cf. dette H2→Testcontainers).
|
# L'extension quarkus-keycloak-admin-client (admin-rest-client-deployment) a un
|
||||||
quarkus.keycloak.devservices.enabled=false
|
# BuildStep `requireKeycloakDevService` annoté
|
||||||
|
# @BuildSteps(onlyIf = {IsDevServicesSupportedByLaunchMode, DevServicesConfig.Enabled,
|
||||||
|
# KeycloakAdminClientInjectionEnabled})
|
||||||
|
# qui produit INCONDITIONNELLEMENT un KeycloakDevServicesRequiredBuildItem dès que cette
|
||||||
|
# extension est dans le classpath — peu importe `quarkus.oidc.tenant-enabled` ou
|
||||||
|
# `quarkus.keycloak.devservices.enabled`. Le seul kill switch respecté par cette
|
||||||
|
# extension est `DevServicesConfig.Enabled` ⇒ `quarkus.devservices.enabled`.
|
||||||
|
# Cohérence d'archi (pas un appauvrissement) :
|
||||||
|
# - H2 in-memory configuré explicitement (pas de Postgres DevService nécessaire).
|
||||||
|
# - OIDC `tenant-enabled=false` (pas d'auth en test → KC inutile).
|
||||||
|
# - Aucune autre extension utilisant DevServices dans ce profil.
|
||||||
|
# Dev mode (mvn quarkus:dev) : non affecté, DevServices restent actifs.
|
||||||
|
quarkus.devservices.enabled=false
|
||||||
|
|
||||||
# DETTE TECHNIQUE — H2 vs Postgres réel
|
# DETTE TECHNIQUE — H2 vs Postgres réel
|
||||||
# Les tests utilisent H2 en mode PostgreSQL pour rapidité, mais le projet utilise massivement :
|
# Les tests utilisent H2 en mode PostgreSQL pour rapidité, mais le projet utilise massivement :
|
||||||
@@ -36,6 +48,8 @@ quarkus.keycloak.devservices.enabled=false
|
|||||||
# - Fonctions PG natives (gen_random_uuid, citext, etc.) → comportement divergent
|
# - Fonctions PG natives (gen_random_uuid, citext, etc.) → comportement divergent
|
||||||
# TODO sprint dédié : migrer vers Testcontainers Postgres avec reuse
|
# TODO sprint dédié : migrer vers Testcontainers Postgres avec reuse
|
||||||
# (testcontainers.reuse.enable=true) pour fidélité prod + démarrage rapide après warm-up.
|
# (testcontainers.reuse.enable=true) pour fidélité prod + démarrage rapide après warm-up.
|
||||||
|
# Le passage à Testcontainers nécessitera de retirer la ligne `quarkus.devservices.enabled=false`
|
||||||
|
# ci-dessus (pour réactiver le Postgres DevService) tout en gardant l'OIDC désactivé.
|
||||||
# Cf. memory : project_test_infrastructure_debt.md
|
# Cf. memory : project_test_infrastructure_debt.md
|
||||||
|
|
||||||
# Configuration HTTP pour tests
|
# Configuration HTTP pour tests
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ quarkus.flyway.migrate-at-start=true
|
|||||||
|
|
||||||
# Keycloak — désactivé pour les tests d'intégration DB
|
# Keycloak — désactivé pour les tests d'intégration DB
|
||||||
quarkus.oidc.tenant-enabled=false
|
quarkus.oidc.tenant-enabled=false
|
||||||
quarkus.keycloak.policy-enforcer.enable=false
|
quarkus.keycloak.policy-enforcer.enabled=false
|
||||||
|
|
||||||
# Kafka — in-memory connector (pas de broker requis)
|
# Kafka — in-memory connector (pas de broker requis)
|
||||||
mp.messaging.outgoing.finance-approvals-out.connector=smallrye-in-memory
|
mp.messaging.outgoing.finance-approvals-out.connector=smallrye-in-memory
|
||||||
|
|||||||
Reference in New Issue
Block a user