From 56bc808d85f3cb01ff1c0024868701ac04b9055b Mon Sep 17 00:00:00 2001 From: Mathias STRASSER Date: Thu, 12 Mar 2026 00:41:57 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Corriger=20les=20tests=20fonctionnels=20?= =?UTF-8?q?cass=C3=A9s=20par=20le=20routing=20tenant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le commit 8c70ed1 a introduit le routing runtime vers les bases tenant. En environnement test, Doctrine ajoute un suffixe '_test' au dbname via dbname_suffix, mais TenantAwareConnection.useTenantDatabase() parsait l'URL brute sans préserver ce suffixe. Résultat : les données persistées par les tests allaient dans classeo_master_test, mais les requêtes HTTP (après le switch de connexion) lisaient depuis classeo_master. La correction préserve le dbname_suffix des paramètres par défaut lors du switch tenant, garantissant la cohérence entre persist et read. --- .../Persistence/Doctrine/TenantAwareConnection.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/src/Shared/Infrastructure/Persistence/Doctrine/TenantAwareConnection.php b/backend/src/Shared/Infrastructure/Persistence/Doctrine/TenantAwareConnection.php index 4829bf8..7645252 100644 --- a/backend/src/Shared/Infrastructure/Persistence/Doctrine/TenantAwareConnection.php +++ b/backend/src/Shared/Infrastructure/Persistence/Doctrine/TenantAwareConnection.php @@ -73,6 +73,13 @@ final class TenantAwareConnection extends Connection implements TenantDatabaseSw /** @phpstan-var Params $connectionParams */ $connectionParams = array_merge($this->defaultConnectionParams, $this->dsnParser->parse($databaseUrl)); + // Preserve dbname_suffix from Doctrine config (e.g. '_test' in test env) + // so that tenant connections target the same database as the default one. + $suffix = $this->defaultConnectionParams['dbname_suffix'] ?? null; + if (is_string($suffix) && isset($connectionParams['dbname']) && is_string($connectionParams['dbname'])) { + $connectionParams['dbname'] .= $suffix; + } + $this->applyConnectionParams($connectionParams, $databaseUrl); }