Commit Graph

13 Commits

Author SHA1 Message Date
dahoud
40710f32a0 fix(sprint-17 backend): 3 blockers de boot Quarkus en test
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.
2026-04-25 19:32:31 +00:00
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
dahoud
5cc38068d0 fix(sprint-17 backend): JwtPropagationFilterTest pur Mockito + revert DevServices global trop agressif
- Refactor JwtPropagationFilterTest : @QuarkusTest → pur Mockito (instanciation directe + champ securityIdentity injecté par réflexion). 9 tests en 2s vs boot Quarkus complet.
- Fusion de JwtPropagationFilterNullIdentityTest dans le test principal (branche securityIdentity == null couverte via setAccessible).
- Revert quarkus.devservices.enabled=false (global trop agressif, violait la règle 'ne pas appauvrir pour fixer').
- Conserve quarkus.keycloak.devservices.enabled=false (légitime : OIDC tenant-enabled=false ⇒ KC inutile).
- Documente la dette H2 → Testcontainers (JSONB/RLS/fonctions PG masqués) inline + memory dédiée.
2026-04-25 18:25:40 +00:00
dahoud
07302f2743 fix(sprint-17 backend): désactivation globale DevServices en test (H2 + OIDC off → aucun container nécessaire)
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m11s
Suite à observation que le précédent fix ciblé `quarkus.keycloak.devservices.enabled=false`
n'empêchait pas le démarrage du container KC (probablement timing build-time vs runtime).

Mode test :
- DataSource : H2 in-memory (lignes 5-8 application-test.properties — pas de Postgres needed)
- OIDC : tenant-enabled=false (pas de KC needed)

Conclusion : aucun DevService nécessaire en test → désactivation globale via
`quarkus.devservices.enabled=false` (couvre tous les services) + garde
`quarkus.keycloak.devservices.enabled=false` en sécurité.

Bénéfice : tests démarrent en 5-10s au lieu de 1-3min (boot containers KC + ryuk).
Mode `quarkus:dev` reste full DevServices (logique, on a besoin de KC en dev).
2026-04-25 17:47:59 +00:00
dahoud
af8d237d01 fix(sprint-17 backend): désactiver Keycloak DevServices en test (OIDC déjà off → KC inutile)
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m9s
Erreur observée :
  ERROR [io.qu.de.ke.KeycloakDevServicesProcessor] Admin token can not be acquired
  due to a client connection timeout
  (~50s boot Docker + timeouts admin token)

Cause : @QuarkusTest charge application-test.properties qui désactive OIDC
(tenant-enabled=false), mais l'extension quarkus-keycloak-* déclenche quand même
le DevService Keycloak qui télécharge/démarre un container KC 26.3.4 et tente
d'obtenir un admin token — qui timeout.

Fix non-appauvrissant : désactiver UNIQUEMENT le DevService KC en mode test.
- Dev mode : DevServices KC reste actif (utile pour quarkus:dev)
- Test mode : OIDC déjà désactivé → KC DevServices = pure perte de temps de boot
- Postgres DevServices reste actif (Hibernate a besoin d'une DB pour les tests JPA)

Ajout :
  quarkus.keycloak.devservices.enabled=false  (test-only via application-test.properties)
2026-04-25 17:34:05 +00:00
dahoud
2826d75aa6 fix(sprint-17 backend): 3 warnings build/dev — Qute -parameters, compiler version, policy-enforcer deprecation
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m52s
3 fixes pour build dev mode propre :

1. Qute @CheckedTemplate (EmailTemplateService.Templates) cassait au démarrage
   → maven-compiler-plugin <parameters>true</parameters> (noms params en bytecode)

2. Maven warning "build.plugins.plugin.version missing"
   → ajout <version>3.13.0</version> au compiler-plugin (cohérent avec api module)

3. Quarkus runtime warning "quarkus.keycloak.policy-enforcer.enable is deprecated"
   → renommé en policy-enforcer.enabled dans application.properties + application-test.properties
   (depuis Quarkus 3.x, propriété renommée pour cohérence avec autres flags enabled)
2026-04-25 17:14:51 +00:00
a72ab54abd chore(docker): add root Dockerfile pinning ubi8/openjdk-21:1.21 + UID 1001 for lionsctl pipeline
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 4m2s
2026-04-24 16:19:25 +00:00
fb3a32817b chore(quarkus-327): bump to Quarkus 3.27.3 LTS, make pom autonomous, fix 3 tests (NPE guard, equalsHashCode with shared refs), rename deprecated config keys 2026-04-23 14:45:54 +00:00
dahoud
aef5548e87 feat(v3.0): implémentation Phases 0-8 — RBAC, lifecycle, multi-org, plans, dashboards
Phase 0 : @RolesAllowed SUPER_ADMIN sur POST/DELETE organisations ; AuthenticationFilter pages super-admin
Phase 2 : OrganisationModuleService, @RequiresModule, ModuleAccessFilter, RoleService, PermissionChecker
Phase 3 : multi-org context switching (OrganisationContextFilter, headers X-Active-Organisation-Id / X-Active-Role)
Phase 4 : feature-gating navigation par typeOrganisation (web MenuBean + mobile MorePage)
Phase 5 : MemberLifecycleService — 8 transitions (activer/suspendre/radier/archiver/inviter/accepter/expirer/rappels)
Phase 6 : FormuleAbonnement Option C (planCommercial, apiAccess, federationAccess, quotas) + SouscriptionOrganisation méthodes quota
Phase 7 : DashboardResource SUPER_ADMIN ajouté ; DashboardBean.checkAccessAndRedirect() ; dashboards distincts par rôle
Phase 8 : MembreResourceLifecycleRbacTest, SouscriptionQuotaOptionCTest, OrganisationContextHolderTest, OrganisationContextFilterMultiOrgTest, MemberLifecycleServiceTest
2026-04-06 16:49:47 +00:00
dahoud
a740c172ef Refactoring - Version stable 2026-03-28 14:21:30 +00:00
dahoud
8a3dd8632b test(dashboard): amélioration des tests dashboard avec données réelles
Remplace les tests "placeholders" qui acceptaient anyOf(200, 500)
par des tests robustes avec assertions sur le contenu JSON.

Modifications:
- DashboardResourceTest: 6 → 8 tests avec setup de données réelles
  * Ajout BeforeEach avec création Organisation + Membre de test
  * Validation du contenu JSON (organizationId, stats, activities, events)
  * Tests cas d'erreur (params manquants, UUIDs invalides)

- MembreDashboardResourceTest: 2 → 5 tests
  * Tests ajustés pour fonctionner sans données seed
  * Ajout test authentification (401)
  * Tests 404 pour membre inexistant

- MembreDashboardServiceTest: ajusté pour absence de données seed
  * Tests 404/NotFoundException au lieu d'attendre des données seed

- application-test.properties: fix wave.api.key/secret vides
  * Valeurs factices pour éviter erreur config en tests

Résultat: 17 tests dashboard, 100% de réussite (0 erreurs, 0 échecs)

Tâche: #57 - Remplacer tests placeholders dashboard

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-16 06:07:20 +00:00
dahoud
75a19988b0 Sync: code local unifié
Synchronisation du code source local (fait foi).

Signed-off-by: lions dev Team
2026-03-15 16:25:40 +00:00
dahoud
4a0c5f9d33 Configure Maven repository for unionflow-server-api dependency 2025-12-10 01:08:17 +00:00