fix(test) : RBAC #344 - role test cleanup + SystemRoles constant + assertion seuil

This commit is contained in:
Matthieu
2026-04-15 11:53:01 +02:00
parent 7be0260b29
commit efc12c8bdb

View File

@@ -8,6 +8,7 @@ use ApiPlatform\Symfony\Bundle\Test\ApiTestCase;
use ApiPlatform\Symfony\Bundle\Test\Client;
use App\Module\Core\Domain\Entity\Permission;
use App\Module\Core\Domain\Entity\Role;
use App\Module\Core\Domain\Security\SystemRoles;
use Doctrine\ORM\EntityManagerInterface;
/**
@@ -104,7 +105,7 @@ final class RoleApiTest extends ApiTestCase
'headers' => ['Content-Type' => 'application/ld+json'],
'json' => [
// `admin` est un role systeme charge par les fixtures.
'code' => 'admin',
'code' => SystemRoles::ADMIN_CODE,
'label' => 'Tentative de doublon',
],
]);
@@ -157,7 +158,7 @@ final class RoleApiTest extends ApiTestCase
$data = $response->toArray();
self::assertArrayHasKey('member', $data);
// Au moins admin systeme + user systeme + test_editor + test_viewer.
self::assertGreaterThanOrEqual(2, $data['totalItems']);
self::assertGreaterThanOrEqual(4, $data['totalItems']);
$codes = array_column($data['member'], 'code');
self::assertContains('test_editor', $codes);
}
@@ -283,10 +284,12 @@ final class RoleApiTest extends ApiTestCase
{
$em = $this->getEm();
// Ordre important : role_permission lie aux deux, on vide les roles
// custom d'abord (la jointure est cascade supprimee par Doctrine lors
// du remove() du cote proprietaire). En DQL bulk on passe par les
// entites, Doctrine genere les DELETE de la table de jointure.
// Le cascade FK de la migration #343 (ON DELETE CASCADE sur
// role_permission.role_id et permission_id) nettoie automatiquement
// role_permission lors du DELETE SQL emis par Doctrine, meme via DQL
// bulk delete : le cascade est applique au niveau FK par PostgreSQL,
// pas par l'Unit of Work Doctrine. Verifie par comptage avant/apres
// runs successifs de la suite (stable a la ligne de base systeme).
$em->createQuery(
'DELETE FROM '.Role::class.' r WHERE r.code LIKE :prefix'
)->setParameter('prefix', self::TEST_ROLE_PREFIX.'%')->execute();