diff --git a/config/services.yaml b/config/services.yaml index 9ee435da..78eeb3c7 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -41,6 +41,8 @@ services: # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones + App\Service\IdentifierFactory\IdentifierFactoryInterface: '@App\Service\IdentifierFactory\IdentifierFactory' + App\Security\Authenticator\DiscordAuthenticator: arguments: $discordServerId: '%app.security.oauth.discord.server_id%' @@ -109,3 +111,5 @@ when@test: class: Symfony\Bundle\SecurityBundle\Security arguments: - '@test.service_container' + + App\Service\IdentifierFactory\IdentifierFactoryInterface: '@App\Service\IdentifierFactory\IdentifierFactoryStub' diff --git a/src/Api/DataTransformer/Attendance/AttendanceInputDataTransformer.php b/src/Api/DataTransformer/Attendance/AttendanceInputDataTransformer.php index c1822faf..4cdf1506 100644 --- a/src/Api/DataTransformer/Attendance/AttendanceInputDataTransformer.php +++ b/src/Api/DataTransformer/Attendance/AttendanceInputDataTransformer.php @@ -7,12 +7,13 @@ use ApiPlatform\Validator\ValidatorInterface; use App\Api\Input\Attendance\AttendanceInput; use App\Entity\Attendance\Attendance; -use Ramsey\Uuid\Uuid; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; class AttendanceInputDataTransformer { public function __construct( - private ValidatorInterface $validator + private ValidatorInterface $validator, + private IdentifierFactoryInterface $identifierFactory ) { } @@ -21,7 +22,7 @@ public function transform(AttendanceInput $attendanceInput): Attendance $this->validator->validate($attendanceInput); return new Attendance( - Uuid::uuid4(), + $this->identifierFactory->create(), $attendanceInput->missionId, $attendanceInput->playerId ); diff --git a/src/Controller/Dlc/CreateAction.php b/src/Controller/Dlc/CreateAction.php index 8ebb99d8..93b85536 100644 --- a/src/Controller/Dlc/CreateAction.php +++ b/src/Controller/Dlc/CreateAction.php @@ -27,7 +27,7 @@ public function __construct( #[IsGranted(PermissionsEnum::DLC_CREATE->value)] public function __invoke(Request $request): Response { - $dlcFormDto = new DlcFormDto(); + $dlcFormDto = $this->dlcFormDtoDataTransformer->transformFromEntity(new DlcFormDto()); $form = $this->createForm(DlcFormType::class, $dlcFormDto); $form->handleRequest($request); diff --git a/src/Controller/Mod/CreateAction.php b/src/Controller/Mod/CreateAction.php index cab18942..177757e2 100644 --- a/src/Controller/Mod/CreateAction.php +++ b/src/Controller/Mod/CreateAction.php @@ -27,7 +27,7 @@ public function __construct( #[IsGranted(PermissionsEnum::MOD_CREATE->value)] public function __invoke(Request $request): Response { - $modFormDto = new ModFormDto(); + $modFormDto = $this->modFormDtoDataTransformer->transformFromEntity(new ModFormDto()); $form = $this->createForm(ModFormType::class, $modFormDto); $form->handleRequest($request); diff --git a/src/Controller/ModGroup/CreateAction.php b/src/Controller/ModGroup/CreateAction.php index 21c19274..e9c6339a 100644 --- a/src/Controller/ModGroup/CreateAction.php +++ b/src/Controller/ModGroup/CreateAction.php @@ -27,7 +27,7 @@ public function __construct( #[IsGranted(PermissionsEnum::MOD_GROUP_CREATE->value)] public function __invoke(Request $request): Response { - $modGroupFormDto = new ModGroupFormDto(); + $modGroupFormDto = $this->modGroupFormDtoDataTransformer->transformFromEntity(new ModGroupFormDto()); $form = $this->createForm(ModGroupFormType::class, $modGroupFormDto); $form->handleRequest($request); diff --git a/src/Controller/ModList/CreateAction.php b/src/Controller/ModList/CreateAction.php index c8bb9f4d..c1374011 100644 --- a/src/Controller/ModList/CreateAction.php +++ b/src/Controller/ModList/CreateAction.php @@ -27,7 +27,7 @@ public function __construct( #[IsGranted(PermissionsEnum::MOD_LIST_CREATE->value)] public function __invoke(Request $request): Response { - $modListFormDto = new ModListFormDto(); + $modListFormDto = $this->modListFormDtoDataTransformer->transformFromEntity(new ModListFormDto()); $form = $this->createForm(ModListFormType::class, $modListFormDto); $form->handleRequest($request); diff --git a/src/Controller/UserGroup/CreateAction.php b/src/Controller/UserGroup/CreateAction.php index ef114e4a..aa4fbbc1 100644 --- a/src/Controller/UserGroup/CreateAction.php +++ b/src/Controller/UserGroup/CreateAction.php @@ -27,7 +27,7 @@ public function __construct( #[IsGranted(PermissionsEnum::USER_GROUP_CREATE->value)] public function __invoke(Request $request): Response { - $userGroupFormDto = new UserGroupFormDto(); + $userGroupFormDto = $this->userGroupFormDtoDataTransformer->transformFromEntity(new UserGroupFormDto()); $form = $this->createForm(UserGroupFormType::class, $userGroupFormDto); $form->handleRequest($request); diff --git a/src/Form/Dlc/DataTransformer/DlcFormDtoDataTransformer.php b/src/Form/Dlc/DataTransformer/DlcFormDtoDataTransformer.php index cc826b66..17da1f0e 100644 --- a/src/Form/Dlc/DataTransformer/DlcFormDtoDataTransformer.php +++ b/src/Form/Dlc/DataTransformer/DlcFormDtoDataTransformer.php @@ -6,14 +6,15 @@ use App\Entity\Dlc\Dlc; use App\Form\Dlc\Dto\DlcFormDto; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; use App\Service\SteamApiClient\Helper\SteamHelper; use App\Service\SteamApiClient\SteamApiClientInterface; -use Ramsey\Uuid\Uuid; class DlcFormDtoDataTransformer { public function __construct( - private SteamApiClientInterface $steamApiClient + private SteamApiClientInterface $steamApiClient, + private IdentifierFactoryInterface $identifierFactory ) { } @@ -25,7 +26,7 @@ public function transformToEntity(DlcFormDto $dlcFormDto, Dlc $dlc = null): Dlc if (!$dlc instanceof Dlc) { return new Dlc( - Uuid::uuid4(), + $this->identifierFactory->create(), $name, $dlcFormDto->getDescription(), $appId, diff --git a/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php b/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php index 708bc0e2..67c7856b 100644 --- a/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php +++ b/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php @@ -11,14 +11,15 @@ use App\Entity\Mod\Enum\ModTypeEnum; use App\Entity\Mod\SteamWorkshopMod; use App\Form\Mod\Dto\ModFormDto; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; use App\Service\SteamApiClient\Helper\SteamHelper; use App\Service\SteamApiClient\SteamApiClientInterface; -use Ramsey\Uuid\Uuid; class ModFormDtoDataTransformer { public function __construct( - private SteamApiClientInterface $steamApiClient + private SteamApiClientInterface $steamApiClient, + private IdentifierFactoryInterface $identifierFactory ) { } @@ -36,7 +37,7 @@ public function transformToEntity(ModFormDto $modFormDto, AbstractMod $mod = nul if (!$mod instanceof SteamWorkshopMod) { return new SteamWorkshopMod( - Uuid::uuid4(), + $this->identifierFactory->create(), $name, $modFormDto->getDescription(), $status, @@ -57,7 +58,7 @@ public function transformToEntity(ModFormDto $modFormDto, AbstractMod $mod = nul if (ModSourceEnum::DIRECTORY === $source) { if (!$mod instanceof DirectoryMod) { return new DirectoryMod( - Uuid::uuid4(), + $this->identifierFactory->create(), $modFormDto->getName(), $modFormDto->getDescription(), $status, diff --git a/src/Form/ModGroup/DataTransformer/ModGroupFormDtoDataTransformer.php b/src/Form/ModGroup/DataTransformer/ModGroupFormDtoDataTransformer.php index 2b668c2c..3f5f9069 100644 --- a/src/Form/ModGroup/DataTransformer/ModGroupFormDtoDataTransformer.php +++ b/src/Form/ModGroup/DataTransformer/ModGroupFormDtoDataTransformer.php @@ -6,15 +6,20 @@ use App\Entity\ModGroup\ModGroup; use App\Form\ModGroup\Dto\ModGroupFormDto; -use Ramsey\Uuid\Uuid; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; class ModGroupFormDtoDataTransformer { + public function __construct( + private IdentifierFactoryInterface $identifierFactory + ) { + } + public function transformToEntity(ModGroupFormDto $modGroupFormDto, ModGroup $modGroup = null): ModGroup { if (!$modGroup instanceof ModGroup) { return new ModGroup( - Uuid::uuid4(), + $this->identifierFactory->create(), $modGroupFormDto->getName(), $modGroupFormDto->getDescription(), $modGroupFormDto->getMods() diff --git a/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php b/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php index 20821a0f..758a29a6 100644 --- a/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php +++ b/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php @@ -8,13 +8,14 @@ use App\Entity\Permissions\AbstractPermissions; use App\Entity\User\User; use App\Form\ModList\Dto\ModListFormDto; -use Ramsey\Uuid\Uuid; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; use Symfony\Bundle\SecurityBundle\Security; class ModListFormDtoDataTransformer { public function __construct( - private Security $security + private Security $security, + private IdentifierFactoryInterface $identifierFactory ) { } @@ -32,7 +33,7 @@ public function transformToEntity(ModListFormDto $modListFormDto, ModList $modLi if (!$modList instanceof ModList) { return new ModList( - Uuid::uuid4(), + $this->identifierFactory->create(), $modListFormDto->getName(), $modListFormDto->getDescription(), $modListFormDto->getMods(), diff --git a/src/Form/UserGroup/DataTransformer/UserGroupFormDtoDataTransformer.php b/src/Form/UserGroup/DataTransformer/UserGroupFormDtoDataTransformer.php index 5d9a4bcd..e6ca01a6 100644 --- a/src/Form/UserGroup/DataTransformer/UserGroupFormDtoDataTransformer.php +++ b/src/Form/UserGroup/DataTransformer/UserGroupFormDtoDataTransformer.php @@ -4,17 +4,23 @@ namespace App\Form\UserGroup\DataTransformer; +use App\Entity\Permissions\UserGroupPermissions; use App\Entity\UserGroup\UserGroup; use App\Form\UserGroup\Dto\UserGroupFormDto; -use Ramsey\Uuid\Uuid; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; class UserGroupFormDtoDataTransformer { + public function __construct( + private IdentifierFactoryInterface $identifierFactory + ) { + } + public function transformToEntity(UserGroupFormDto $userGroupFormDto, UserGroup $userGroup = null): UserGroup { if (!$userGroup instanceof UserGroup) { return new UserGroup( - Uuid::uuid4(), + $this->identifierFactory->create(), $userGroupFormDto->getName(), $userGroupFormDto->getDescription(), $userGroupFormDto->getPermissions(), @@ -35,6 +41,9 @@ public function transformToEntity(UserGroupFormDto $userGroupFormDto, UserGroup public function transformFromEntity(UserGroupFormDto $userGroupFormDto, UserGroup $userGroup = null): UserGroupFormDto { if (!$userGroup instanceof UserGroup) { + $permissions = new UserGroupPermissions($this->identifierFactory->create()); + $userGroupFormDto->setPermissions($permissions); + return $userGroupFormDto; } diff --git a/src/Form/UserGroup/Dto/UserGroupFormDto.php b/src/Form/UserGroup/Dto/UserGroupFormDto.php index 5f6e83cd..4b4b0ee6 100644 --- a/src/Form/UserGroup/Dto/UserGroupFormDto.php +++ b/src/Form/UserGroup/Dto/UserGroupFormDto.php @@ -9,7 +9,6 @@ use App\Validator\UserGroup\UniqueUserGroupName; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; -use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Validator\Constraints as Assert; @@ -32,7 +31,6 @@ class UserGroupFormDto public function __construct() { $this->users = new ArrayCollection(); - $this->permissions = new UserGroupPermissions(Uuid::uuid4()); } public function getId(): ?UuidInterface diff --git a/src/Security/Authenticator/DiscordAuthenticator.php b/src/Security/Authenticator/DiscordAuthenticator.php index 418556f1..84cac7f0 100644 --- a/src/Security/Authenticator/DiscordAuthenticator.php +++ b/src/Security/Authenticator/DiscordAuthenticator.php @@ -13,13 +13,13 @@ use App\Security\Exception\RoleNotFoundException; use App\Security\Exception\UserNotADiscordMemberException; use App\Service\Discord\DiscordClientFactory; +use App\Service\IdentifierFactory\IdentifierFactoryInterface; use Discord\Http\Endpoint; use Discord\Http\Exceptions\NotFoundException; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use KnpU\OAuth2ClientBundle\Client\ClientRegistry; use KnpU\OAuth2ClientBundle\Security\Authenticator\OAuth2Authenticator; -use Ramsey\Uuid\Uuid; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -52,6 +52,7 @@ public function __construct( private EntityManagerInterface $em, private RouterInterface $router, private DiscordClientFactory $discordClientFactory, + private IdentifierFactoryInterface $identifierFactory, private string $discordServerId, private string $botToken, private array $requiredServerRoleNames @@ -145,9 +146,9 @@ public function authenticate(Request $request): Passport return new SelfValidatingPassport(new UserBadge($externalId)); } - $permissions = new UserPermissions(Uuid::uuid4()); + $permissions = new UserPermissions($this->identifierFactory->create()); $user = new User( - Uuid::uuid4(), + $this->identifierFactory->create(), $fullUsername, $email, $externalId, diff --git a/src/Service/IdentifierFactory/IdentifierFactory.php b/src/Service/IdentifierFactory/IdentifierFactory.php new file mode 100644 index 00000000..b9a40a20 --- /dev/null +++ b/src/Service/IdentifierFactory/IdentifierFactory.php @@ -0,0 +1,16 @@ +addIdentifier($identifier); + } + } + + public function create(): UuidInterface + { + if (!$this->identifiers) { + throw new \LogicException('No identifiers provided'); + } + + $key = array_key_first($this->identifiers); + $value = $this->identifiers[$key]; + unset($this->identifiers[$key]); + + return $value; + } + + private function addIdentifier(UuidInterface $identifier): void + { + if (\in_array($identifier, $this->identifiers, true)) { + throw new \LogicException('Non unique identifier provided'); + } + + $this->identifiers[] = $identifier; + } +} diff --git a/tests/functional/Api/Attendance/CreateAttendanceCest.php b/tests/functional/Api/Attendance/CreateAttendanceCest.php index 60c6ff8e..a1a52bc1 100644 --- a/tests/functional/Api/Attendance/CreateAttendanceCest.php +++ b/tests/functional/Api/Attendance/CreateAttendanceCest.php @@ -5,8 +5,10 @@ namespace App\Tests\Functional\Api\Attendance; use App\Entity\Attendance\Attendance; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateAttendanceCest { @@ -14,6 +16,12 @@ public function _before(FunctionalTester $I): void { $I->haveHttpHeader('Accept', 'application/json'); $I->haveHttpHeader('Content-Type', 'application/json'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createAttendanceWithoutApiKey(FunctionalTester $I): void @@ -61,6 +69,7 @@ public function createAttendanceUsingApiKey(FunctionalTester $I): void /** @var Attendance $attendance */ $attendance = $I->grabEntityFromRepository(Attendance::class, ['missionId' => 'mission_99']); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $attendance->getId()->toString()); $I->assertSame('mission_99', $attendance->getMissionId()); $I->assertSame(76561198048200529, $attendance->getPlayerId()); } diff --git a/tests/functional/Web/Dlc/CreateDlcCest.php b/tests/functional/Web/Dlc/CreateDlcCest.php index 5759adbe..134aacec 100644 --- a/tests/functional/Web/Dlc/CreateDlcCest.php +++ b/tests/functional/Web/Dlc/CreateDlcCest.php @@ -7,9 +7,11 @@ use App\DataFixtures\User\User1Fixture; use App\Entity\Dlc\Dlc; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Service\SteamApiClient\Helper\SteamHelper; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateDlcCest { @@ -17,6 +19,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createDlcAsUnauthenticatedUser(FunctionalTester $I): void @@ -100,6 +108,7 @@ public function createDlcAsAuthorizedUserWithNameProvidedBySteamWorkshop(Functio /** @var Dlc $dlc */ $dlc = $I->grabEntityFromRepository(Dlc::class, ['appId' => 1681170]); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $dlc->getId()->toString()); $I->assertSame(1681170, $dlc->getAppId()); $I->assertSame('ws', $dlc->getDirectory()); $I->assertSame('Arma 3 Creator DLC: Western Sahara', $dlc->getName()); // From Steam Workshop diff --git a/tests/functional/Web/Mod/CreateDirectoryModCest.php b/tests/functional/Web/Mod/CreateDirectoryModCest.php index e7ba4b05..858854de 100644 --- a/tests/functional/Web/Mod/CreateDirectoryModCest.php +++ b/tests/functional/Web/Mod/CreateDirectoryModCest.php @@ -9,8 +9,10 @@ use App\Entity\Mod\DirectoryMod; use App\Entity\Mod\Enum\ModStatusEnum; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateDirectoryModCest { @@ -18,6 +20,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createDirectoryModAsUnauthenticatedUser(FunctionalTester $I): void @@ -64,6 +72,7 @@ public function createDirectoryModAsAuthorizedUser(FunctionalTester $I): void /** @var DirectoryMod $mod */ $mod = $I->grabEntityFromRepository(DirectoryMod::class, ['directory' => '@OCAP']); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $mod->getId()->toString()); $I->assertSame(null, $mod->getStatus()); $I->assertSame('OCAP', $mod->getName()); $I->assertSame('OCAP - AAR', $mod->getDescription()); diff --git a/tests/functional/Web/Mod/CreateSteamWorkshopModCest.php b/tests/functional/Web/Mod/CreateSteamWorkshopModCest.php index 5555ccf1..9d336a77 100644 --- a/tests/functional/Web/Mod/CreateSteamWorkshopModCest.php +++ b/tests/functional/Web/Mod/CreateSteamWorkshopModCest.php @@ -10,9 +10,11 @@ use App\Entity\Mod\Enum\ModTypeEnum; use App\Entity\Mod\SteamWorkshopMod; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Service\SteamApiClient\Helper\SteamHelper; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateSteamWorkshopModCest { @@ -20,6 +22,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createSteamWorkshopModAsUnauthenticatedUser(FunctionalTester $I): void @@ -68,6 +76,7 @@ public function createSteamWorkshopModAsAuthorizedUser(FunctionalTester $I): voi /** @var SteamWorkshopMod $mod */ $mod = $I->grabEntityFromRepository(SteamWorkshopMod::class, ['itemId' => 1934142795]); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $mod->getId()->toString()); $I->assertSame(ModTypeEnum::OPTIONAL, $mod->getType()); $I->assertSame(null, $mod->getStatus()); $I->assertSame('AF Mods', $mod->getName()); diff --git a/tests/functional/Web/ModGroup/CreateModGroupCest.php b/tests/functional/Web/ModGroup/CreateModGroupCest.php index a8af72a1..8c4a45b0 100644 --- a/tests/functional/Web/ModGroup/CreateModGroupCest.php +++ b/tests/functional/Web/ModGroup/CreateModGroupCest.php @@ -10,8 +10,10 @@ use App\Entity\Mod\AbstractMod; use App\Entity\ModGroup\ModGroup; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateModGroupCest { @@ -19,6 +21,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createModGroupAsUnauthenticatedUser(FunctionalTester $I): void @@ -63,6 +71,7 @@ public function createModGroupAsAuthorizedUser(FunctionalTester $I): void /** @var ModGroup $modGroup */ $modGroup = $I->grabEntityFromRepository(ModGroup::class, ['name' => 'CUP Terrains']); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $modGroup->getId()->toString()); $I->assertSame('CUP Terrains', $modGroup->getName()); $I->assertSame('Terrains for CUP', $modGroup->getDescription()); $I->assertSame([ diff --git a/tests/functional/Web/ModList/CopyModListCest.php b/tests/functional/Web/ModList/CopyModListCest.php index 8652540f..66a97bb6 100644 --- a/tests/functional/Web/ModList/CopyModListCest.php +++ b/tests/functional/Web/ModList/CopyModListCest.php @@ -24,8 +24,10 @@ use App\Entity\ModGroup\ModGroup; use App\Entity\ModList\ModList; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CopyModListCest { @@ -33,6 +35,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function copyModListAsUnauthenticatedUser(FunctionalTester $I): void @@ -100,6 +108,7 @@ public function copyModListAsAuthorizedUser(FunctionalTester $I): void /** @var ModList $modList */ $modList = $I->grabEntityFromRepository(ModList::class, ['name' => 'Custom']); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $modList->getId()->toString()); $I->assertSame('Custom', $modList->getName()); $I->assertSame('Custom modlist', $modList->getDescription()); $I->assertSame(User1Fixture::ID, $modList->getOwner()->getId()->toString()); // Current user diff --git a/tests/functional/Web/ModList/CreateModListCest.php b/tests/functional/Web/ModList/CreateModListCest.php index 95bfe8f4..312d802f 100644 --- a/tests/functional/Web/ModList/CreateModListCest.php +++ b/tests/functional/Web/ModList/CreateModListCest.php @@ -15,8 +15,10 @@ use App\Entity\ModGroup\ModGroup; use App\Entity\ModList\ModList; use App\Entity\User\User; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateModListCest { @@ -24,6 +26,12 @@ public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + ]); } public function createModListAsUnauthenticatedUser(FunctionalTester $I): void @@ -75,6 +83,7 @@ public function createModListAsAuthorizedUser(FunctionalTester $I): void /** @var ModList $modList */ $modList = $I->grabEntityFromRepository(ModList::class, ['name' => 'Custom']); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $modList->getId()->toString()); $I->assertSame('Custom', $modList->getName()); $I->assertSame('Custom modlist', $modList->getDescription()); $I->assertSame(User1Fixture::ID, $modList->getOwner()->getId()->toString()); // Current user diff --git a/tests/functional/Web/UserGroup/CreateUserGroupCest.php b/tests/functional/Web/UserGroup/CreateUserGroupCest.php index 304d17b8..9e7202cf 100644 --- a/tests/functional/Web/UserGroup/CreateUserGroupCest.php +++ b/tests/functional/Web/UserGroup/CreateUserGroupCest.php @@ -9,18 +9,28 @@ use App\DataFixtures\User\User2Fixture; use App\DataFixtures\User\User3Fixture; use App\DataFixtures\UserGroup\UsersGroupFixture; +use App\Entity\Permissions\UserGroupPermissions; use App\Entity\User\User; use App\Entity\UserGroup\UserGroup; +use App\Service\IdentifierFactory\IdentifierFactoryStub; use App\Tests\FunctionalTester; use Codeception\Util\HttpCode; +use Ramsey\Uuid\Uuid; class CreateUserGroupCest { public function _before(FunctionalTester $I): void { $I->stopFollowingRedirects(); - $I->freezeTime('2020-01-01T00:00:00+00:00'); + + /** @var IdentifierFactoryStub $identifierFactory */ + $identifierFactory = $I->grabService(IdentifierFactoryStub::class); + $identifierFactory->setIdentifiers([ + Uuid::fromString('ecfb293f-ca8c-4edc-9af3-15fee1bf21ac'), // Required to initialize UserGroupPermissions + Uuid::fromString('805c9fcd-d674-4a27-8f0c-78dbf2484bb2'), + Uuid::fromString('7cb77e2f-c26e-4098-b47b-60539bf5bb70'), + ]); } public function createUserGroupAsUnauthenticatedUser(FunctionalTester $I): void @@ -101,6 +111,7 @@ public function createUserGroupAsAuthorizedUser(FunctionalTester $I): void /** @var UserGroup $userGroup */ $userGroup = $I->grabEntityFromRepository(UserGroup::class, ['name' => 'All']); + $I->assertSame('7cb77e2f-c26e-4098-b47b-60539bf5bb70', $userGroup->getId()->toString()); $I->assertSame('All', $userGroup->getName()); $I->assertSame('All users', $userGroup->getDescription()); $I->assertSame([ @@ -110,6 +121,8 @@ public function createUserGroupAsAuthorizedUser(FunctionalTester $I): void User3Fixture::ID, ], array_map(fn (User $user) => $user->getId()->toString(), $userGroup->getUsers())); + $I->assertSame('805c9fcd-d674-4a27-8f0c-78dbf2484bb2', $userGroup->getPermissions()->getId()->toString()); + $I->assertTrue($userGroup->getPermissions()->userList); $I->assertTrue($userGroup->getPermissions()->userUpdate); $I->assertTrue($userGroup->getPermissions()->userDelete);