get(EntityManagerInterface::class); self::getContainer()->get(RbacSeeder::class)->ensureSystemRoles(); // Crée un user puis simule l'état « legacy » (aucun rôle RBAC) en retirant // le rôle « user » auto-assigné à la création. $user = new User(); $user->setUsername('backfill-'.uniqid()); $user->setPassword('x'); $em->persist($user); $em->flush(); foreach ($user->getRbacRoles()->toArray() as $role) { $user->removeRbacRole($role); } $em->flush(); $id = $user->getId(); $em->clear(); $before = $em->getRepository(User::class)->find($id); self::assertInstanceOf(User::class, $before); self::assertCount(0, $before->getRbacRoles(), 'Précondition : le user ne doit avoir aucun rôle RBAC.'); $em->clear(); $tester = new CommandTester(new Application($kernel)->find('app:assign-default-roles')); $tester->execute([]); $tester->assertCommandIsSuccessful(); $em->clear(); $after = $em->getRepository(User::class)->find($id); self::assertInstanceOf(User::class, $after); $codes = array_map(static fn ($role) => $role->getCode(), $after->getRbacRoles()->toArray()); self::assertContains(SystemRoles::USER_CODE, $codes, 'Le backfill doit rattacher le rôle « user ».'); } }