Files
unionflow-server-impl-quarkus/src/main/resources/application-test.properties
dahoud 00a378dd90 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é.
2026-04-25 18:47:20 +00:00

77 lines
4.1 KiB
Properties

# Configuration UnionFlow Server - Profil Test
# Ce fichier est chargé automatiquement quand le profil 'test' est actif
# Configuration Base de données H2 pour tests
quarkus.datasource.db-kind=h2
quarkus.datasource.username=sa
quarkus.datasource.password=sa
quarkus.datasource.jdbc.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=PostgreSQL;NON_KEYWORDS=MONTH,YEAR
# Configuration Hibernate pour tests
quarkus.hibernate-orm.database.generation=update
# Désactiver complètement l'exécution des scripts SQL au démarrage
quarkus.hibernate-orm.sql-load-script=no-file
# Empêcher Hibernate d'exécuter les scripts SQL automatiquement
# Note: Ne pas définir quarkus.hibernate-orm.sql-load-script car une chaîne vide peut causer des problèmes
# Configuration Flyway pour tests (désactivé complètement)
quarkus.flyway.migrate-at-start=false
quarkus.flyway.enabled=false
quarkus.flyway.baseline-on-migrate=false
# Note: Ne pas définir quarkus.flyway.locations car une chaîne vide cause une erreur de configuration
# Configuration Keycloak pour tests (désactivé)
quarkus.oidc.tenant-enabled=false
quarkus.keycloak.policy-enforcer.enabled=false
#
# Désactivation GLOBALE des DevServices en mode test.
# Pourquoi le global et pas seulement quarkus.keycloak.devservices.enabled=false :
# L'extension quarkus-keycloak-admin-client (admin-rest-client-deployment) a un
# 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
# Les tests utilisent H2 en mode PostgreSQL pour rapidité, mais le projet utilise massivement :
# - JSONB (audit_trail, payload_jsonb, etc.) → mappé en VARCHAR sur H2 (faux positif possible)
# - RLS (Row Level Security PostgreSQL) → non supporté par H2
# - Fonctions PG natives (gen_random_uuid, citext, etc.) → comportement divergent
# 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.
# 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
# Configuration HTTP pour tests
quarkus.http.port=0
quarkus.http.test-port=0
# Wave — mock pour tests
wave.mock.enabled=true
wave.api.key=test-wave-api-key-for-unit-tests
wave.api.secret=test-wave-api-secret-for-unit-tests
wave.redirect.base.url=http://localhost:8080
# Kafka — in-memory connector pour les tests (pas de broker Kafka requis)
mp.messaging.outgoing.finance-approvals-out.connector=smallrye-in-memory
mp.messaging.outgoing.dashboard-stats-out.connector=smallrye-in-memory
mp.messaging.outgoing.notifications-out.connector=smallrye-in-memory
mp.messaging.outgoing.members-events-out.connector=smallrye-in-memory
mp.messaging.outgoing.contributions-events-out.connector=smallrye-in-memory
mp.messaging.incoming.finance-approvals-in.connector=smallrye-in-memory
mp.messaging.incoming.dashboard-stats-in.connector=smallrye-in-memory
mp.messaging.incoming.notifications-in.connector=smallrye-in-memory
mp.messaging.incoming.members-events-in.connector=smallrye-in-memory
mp.messaging.incoming.contributions-events-in.connector=smallrye-in-memory