| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [x] Pas de régression - [x] TU/TI/TF rédigée - [x] TU/TI/TF OK - [ ] CHANGELOG modifié Co-authored-by: Matthieu <mtholot19@gmail.com> Reviewed-on: #8 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #8.
This commit is contained in:
@@ -9,6 +9,7 @@ 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\Entity\User;
|
||||
use App\Module\Sites\Domain\Entity\Site;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
||||
|
||||
@@ -123,6 +124,19 @@ abstract class AbstractApiTestCase extends ApiTestCase
|
||||
$user->setIsAdmin(false);
|
||||
$user->setPassword($hasher->hashPassword($user, $password));
|
||||
$user->addRbacRole($role);
|
||||
|
||||
// Le helper attache le user jetable a tous les sites existants pour
|
||||
// neutraliser le filtrage par UserSiteScopedExtension : la plupart
|
||||
// des tests assume une visibilite globale sur les users cibles. Les
|
||||
// tests qui valident le comportement "sans sites" doivent creer leur
|
||||
// user a la main (pas via ce helper).
|
||||
$siteRepository = $em->getRepository(Site::class);
|
||||
if (null !== $siteRepository) {
|
||||
foreach ($siteRepository->findAll() as $site) {
|
||||
$user->addSite($site);
|
||||
}
|
||||
}
|
||||
|
||||
$em->persist($user);
|
||||
|
||||
$em->flush();
|
||||
@@ -130,4 +144,34 @@ abstract class AbstractApiTestCase extends ApiTestCase
|
||||
|
||||
return ['username' => $username, 'password' => $password];
|
||||
}
|
||||
|
||||
/**
|
||||
* Skip le test courant si le module Sites est desactive dans
|
||||
* `config/modules.php` de l'environnement de test.
|
||||
*
|
||||
* Mecanisme : on cherche la permission `sites.view` en base. Si le
|
||||
* module Sites est desactive, `app:sync-permissions` aura marque cette
|
||||
* permission comme orpheline et l'aura supprimee de la table — donc
|
||||
* `findOneBy(['code' => 'sites.view'])` renvoie null.
|
||||
*
|
||||
* Quand utiliser ce helper : tests qui s'appuient sur
|
||||
* `createUserWithPermission('sites.*')`. Les tests qui utilisent
|
||||
* uniquement l'admin (qui bypass via isAdmin) n'en ont pas besoin :
|
||||
* la classe Site reste mappee Doctrine et exposee via API Platform
|
||||
* meme module desactive (mapping inconditionnel, decision assumee
|
||||
* ticket 1).
|
||||
*/
|
||||
protected function skipIfSitesModuleDisabled(): void
|
||||
{
|
||||
if (!self::$kernel) {
|
||||
self::bootKernel();
|
||||
}
|
||||
$perm = $this->getEm()
|
||||
->getRepository(Permission::class)
|
||||
->findOneBy(['code' => 'sites.view'])
|
||||
;
|
||||
if (null === $perm) {
|
||||
self::markTestSkipped('Module Sites desactive : permission sites.view introuvable en base.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user