Découverts en cascade après désactivation du KC DevService (commits précédents).
Avant, le KC DevService masquait ces 3 bugs en fournissant auto auth-server-url
et en différant l'init Hibernate.
1. PispiPaymentProvider.institutionBic — bug SmallRye Config 3.20+ :
defaultValue = "" déclenche 'Failed to load config value' au boot.
Pattern documenté dans memory feedback_quarkus_smallrye_config_empty_default.md.
Fix : remplacer par Optional<String> + orElse("") en @PostConstruct, comme
les deux autres @ConfigProperty de la même classe.
2. quarkus.oidc.auth-server-url manquant en test :
MembreKeycloakSyncService injecte la prop sans defaultValue ⇒ requise au boot.
Auparavant fournie par KC DevService. Ajout d'un stub
http://localhost:0/realms/unionflow-test-stub dans application-test.properties
(jamais utilisé : tenant-enabled=false).
3. quarkus.hibernate-orm.mapping.format.global=ignore manquant :
Bug Quarkus 3.27 (memory feedback_quarkus_327_format_mapper.md) : avec
write-dates-as-timestamps=false + colonnes JSONB, Hibernate refuse de réutiliser
le FormatMapper REST. Opt-in pour le comportement Quarkus 4 par défaut.
Smoke test : AuthCallbackResourceTest 10/10 verts en 9.6s.
83 lines
4.5 KiB
Properties
83 lines
4.5 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
|
|
# Dummy auth-server-url : satisfait la validation @ConfigProperty au boot
|
|
# (MembreKeycloakSyncService inject la prop sans defaultValue). Avec tenant-enabled=false,
|
|
# la valeur n'est jamais utilisée — uniquement nécessaire pour passer la validation.
|
|
# Avant : KC DevService fournissait l'URL automatiquement ; depuis qu'on désactive
|
|
# devservices.enabled (cf. plus bas), il faut fournir une valeur stub.
|
|
quarkus.oidc.auth-server-url=http://localhost:0/realms/unionflow-test-stub
|
|
#
|
|
# 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
|
|
|