Skip to content

Commit

Permalink
Add user tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jskowronski39 committed Dec 30, 2023
1 parent cd5cd39 commit 7212d7f
Show file tree
Hide file tree
Showing 13 changed files with 561 additions and 88 deletions.
4 changes: 2 additions & 2 deletions config/doctrine/AbstractBlamableEntity.orm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

<mapped-superclass name="App\Entity\AbstractBlamableEntity">
<many-to-one field="createdBy" target-entity="App\Entity\User\User">
<join-column name="created_by" referenced-column-name="id"/>
<join-column name="created_by" referenced-column-name="id" on-delete="SET NULL"/>
<cascade>
<cascade-persist/>
</cascade>
</many-to-one>

<field name="lastUpdatedAt" type="datetimetz_immutable" nullable="true"/>
<many-to-one field="lastUpdatedBy" target-entity="App\Entity\User\User">
<join-column name="last_updated_by" referenced-column-name="id"/>
<join-column name="last_updated_by" referenced-column-name="id" on-delete="SET NULL"/>
<cascade>
<cascade-persist/>
</cascade>
Expand Down
2 changes: 1 addition & 1 deletion config/doctrine/User/User.orm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<many-to-many field="userGroups" mapped-by="users" target-entity="App\Entity\UserGroup\UserGroup"/>

<field name="avatarHash" type="string" length="512" nullable="true"/>
<field name="steamId" type="bigint" nullable="true" unique="true"/>
<field name="steamId" type="string" nullable="true" unique="true"/>

<indexes>
<!-- This is needed because child index mappings override parent index mappings -->
Expand Down
44 changes: 25 additions & 19 deletions src/DataFixtures/User/AdminFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,42 @@

use App\Entity\Permissions\UserPermissions;
use App\Entity\User\User;
use App\Test\Traits\TimeTrait;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Ramsey\Uuid\Uuid;

class AdminFixture extends Fixture
{
use TimeTrait;

public const ID = '31c9769f-4195-4fa8-b78d-0b54a1ceb8df';
public const USERNAME = 'admin#0';
public const EMAIL = '[email protected]';
public const EXTERNAL_ID = '000000000000000000';

public function load(ObjectManager $manager): void
{
$permissions = new UserPermissions(Uuid::fromString('22dcc83c-8e72-48e4-8b04-debb6fbdd1c8'));
$permissions->grantAll();

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
str_repeat('0', 18),
$permissions,
[],
null,
null
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
$this->withTimeFrozenAt('2020-01-01T00:00:00+00:00', function () use ($manager): void {
$permissions = new UserPermissions(Uuid::fromString('22dcc83c-8e72-48e4-8b04-debb6fbdd1c8'));
$permissions->grantAll();

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
self::EXTERNAL_ID,
$permissions,
[],
null,
null
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
});
}
}
43 changes: 25 additions & 18 deletions src/DataFixtures/User/User1Fixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,42 @@

use App\Entity\Permissions\UserPermissions;
use App\Entity\User\User;
use App\Test\Traits\TimeTrait;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Ramsey\Uuid\Uuid;

class User1Fixture extends Fixture
{
use TimeTrait;

public const ID = '03f6066e-2fe9-44ac-b853-2921483f1950';
public const USERNAME = 'user#1';
public const EMAIL = '[email protected]';
public const EXTERNAL_ID = '111111111111111111';
public const STEAM_ID = '11111111111111111';

public function load(ObjectManager $manager): void
{
$permissions = new UserPermissions(Uuid::fromString('b62733f6-97dc-4031-b74a-ecb080c09658'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
str_repeat('1', 18),
$permissions,
[],
null,
null
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
$this->withTimeFrozenAt('2020-01-01T00:00:00+00:00', function () use ($manager): void {
$permissions = new UserPermissions(Uuid::fromString('b62733f6-97dc-4031-b74a-ecb080c09658'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
self::EXTERNAL_ID,
$permissions,
[],
null,
self::STEAM_ID
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
});
}
}
43 changes: 25 additions & 18 deletions src/DataFixtures/User/User2Fixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,42 @@

use App\Entity\Permissions\UserPermissions;
use App\Entity\User\User;
use App\Test\Traits\TimeTrait;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Ramsey\Uuid\Uuid;

class User2Fixture extends Fixture
{
use TimeTrait;

public const ID = '43c65dee-8da8-4198-87da-cb58ecc23508';
public const USERNAME = 'user#2';
public const EMAIL = '[email protected]';
public const EXTERNAL_ID = '222222222222222222';
public const STEAM_ID = '22222222222222222';

public function load(ObjectManager $manager): void
{
$permissions = new UserPermissions(Uuid::fromString('97f1c390-46e8-47cd-b60d-e9cca1ae892e'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
str_repeat('2', 18),
$permissions,
[],
null,
null
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
$this->withTimeFrozenAt('2020-01-01T00:00:00+00:00', function () use ($manager): void {
$permissions = new UserPermissions(Uuid::fromString('97f1c390-46e8-47cd-b60d-e9cca1ae892e'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
self::EXTERNAL_ID,
$permissions,
[],
null,
self::STEAM_ID
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
});
}
}
43 changes: 25 additions & 18 deletions src/DataFixtures/User/User3Fixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,42 @@

use App\Entity\Permissions\UserPermissions;
use App\Entity\User\User;
use App\Test\Traits\TimeTrait;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Ramsey\Uuid\Uuid;

class User3Fixture extends Fixture
{
use TimeTrait;

public const ID = '7e1a0cae-e0c3-4b1d-9ce7-671505267a87';
public const USERNAME = 'user#3';
public const EMAIL = '[email protected]';
public const EXTERNAL_ID = '333333333333333333';
public const STEAM_ID = '33333333333333333';

public function load(ObjectManager $manager): void
{
$permissions = new UserPermissions(Uuid::fromString('7dcfba43-a09c-46c0-9dbd-701442bd4f83'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
str_repeat('3', 18),
$permissions,
[],
null,
null
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
$this->withTimeFrozenAt('2020-01-01T00:00:00+00:00', function () use ($manager): void {
$permissions = new UserPermissions(Uuid::fromString('7dcfba43-a09c-46c0-9dbd-701442bd4f83'));

$user = new User(
Uuid::fromString(self::ID),
self::USERNAME,
self::EMAIL,
self::EXTERNAL_ID,
$permissions,
[],
null,
self::STEAM_ID
);

$manager->persist($permissions);
$manager->persist($user);
$manager->flush();

$this->addReference(self::ID, $user);
});
}
}
8 changes: 4 additions & 4 deletions src/Entity/User/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class User extends AbstractBlamableEntity implements UserInterface
private UserPermissions $permissions;
private Collection $userGroups;
private ?string $avatarHash;
private ?int $steamId;
private ?string $steamId;

public function __construct(
UuidInterface $id,
Expand All @@ -33,7 +33,7 @@ public function __construct(
UserPermissions $permissions,
array $userGroups,
?string $avatarHash,
?int $steamId,
?string $steamId,
) {
parent::__construct($id);
$this->userGroups = new ArrayCollection();
Expand All @@ -54,7 +54,7 @@ public function update(
UserPermissions $permissions,
array $userGroups,
?string $avatarHash,
?int $steamId,
?string $steamId,
): void {
$this->username = $username;
$this->email = $email;
Expand Down Expand Up @@ -103,7 +103,7 @@ public function getAvatarHash(): ?string
return $this->avatarHash;
}

public function getSteamId(): ?int
public function getSteamId(): ?string
{
return $this->steamId;
}
Expand Down
10 changes: 4 additions & 6 deletions src/Form/User/Dto/UserFormDto.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@
use App\Validator\User\UniqueUserSteamId;
use Ramsey\Uuid\UuidInterface;

/**
* @UniqueUserSteamId(errorPath="steamId")
*/
#[UniqueUserSteamId(errorPath: 'steamId')]
class UserFormDto extends AbstractFormDto
{
protected ?UuidInterface $id = null;

#[SteamProfileId]
protected ?int $steamId = null;
protected ?string $steamId = null;

protected ?UserPermissions $permissions = null;

Expand All @@ -32,12 +30,12 @@ public function setId(?UuidInterface $id): void
$this->id = $id;
}

public function getSteamId(): ?int
public function getSteamId(): ?string
{
return $this->steamId;
}

public function setSteamId(?int $steamId): void
public function setSteamId(?string $steamId): void
{
$this->steamId = $steamId;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Security/Authenticator/DiscordAuthenticator.php
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public function authenticate(Request $request): Passport
->first()
;

$steamId = $steamConnection ? (int) $steamConnection->id : null;
$steamId = $steamConnection ? $steamConnection->id : null;

$user = $this->userRepository->findOneByExternalId($externalId);
if ($user instanceof User) {
Expand Down
6 changes: 5 additions & 1 deletion src/Validator/User/UniqueUserSteamIdValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@ public function validate(mixed $value, Constraint $constraint): void
}

$steamId = $value->getSteamId();
if (null === $steamId) {
return;
}

$id = $value->getId();
if (!$steamId || $this->isColumnValueUnique(User::class, ['steamId' => $steamId], $id)) {
if ($this->isColumnValueUnique(User::class, ['steamId' => $steamId], $id)) {
return;
}

Expand Down
Loading

0 comments on commit 7212d7f

Please sign in to comment.