fix(test) : RBAC #344 - role test cleanup + SystemRoles constant + assertion seuil
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user