| Current Path : /var/www/v3.cesa.co.za/tests/Unit/UserBundle/ |
| Current File : //var/www/v3.cesa.co.za/tests/Unit/UserBundle/Echasl23UserServiceTest.php |
<?php
namespace App\Tests\Unit\UserBundle;
use App\UserBundle\Entity\UserOld;
use App\UserBundle\Entity\UserLevel;
use App\UserBundle\Service\Echasl23UserService;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use PHPUnit\Framework\TestCase;
class Echasl23UserServiceTest extends TestCase
{
public function testHashPlainPasswordUsesMd5(): void
{
$service = new Echasl23UserService($this->createStub(EntityManagerInterface::class));
$this->assertSame('5f4dcc3b5aa765d61d8327deb882cf99', $service->hashPlainPassword('password'));
}
public function testApplyPlainPasswordUpdatesHashAndDate(): void
{
$service = new Echasl23UserService($this->createStub(EntityManagerInterface::class));
$user = (new UserOld())->setUsername('staff');
$service->applyPlainPassword($user, 'secret');
$this->assertSame('5ebe2294ecd0e0f08eab7690d2a6ee69', $user->getPassword());
$this->assertInstanceOf(\DateTimeInterface::class, $user->getPwdchanged());
}
public function testResolveRolesForInactiveUser(): void
{
$service = new Echasl23UserService($this->createStub(EntityManagerInterface::class));
$user = (new UserOld())
->setUsername('inactive')
->setActivated(false)
->setAccessLevel(3);
$this->assertSame(['NONE'], $service->resolveRoles($user));
}
public function testResolveRolesForSuperAdminLevel(): void
{
$service = new Echasl23UserService($this->createStub(EntityManagerInterface::class));
$user = (new UserOld())
->setUsername('suadmin')
->setActivated(true)
->setAccessLevel(-1);
$roles = $service->resolveRoles($user);
$this->assertContains('ROLE_SUPER_ADMIN', $roles);
$this->assertContains('ROLE_ADMIN', $roles);
$this->assertContains('ROLE_SONATA_ADMIN', $roles);
}
public function testResolveRolesMergesUserLevelRoles(): void
{
$userLevel = $this->createMock(UserLevel::class);
$userLevel->method('getRoles')->willReturn('reports_only,custom');
$repository = $this->createMock(EntityRepository::class);
$repository->method('findOneBy')->with(['user_level_id' => 3])->willReturn($userLevel);
$em = $this->createMock(EntityManagerInterface::class);
$em->method('getRepository')->with(UserLevel::class)->willReturn($repository);
$service = new Echasl23UserService($em);
$user = (new UserOld())
->setUsername('editor')
->setActivated(true)
->setAccessLevel(3);
$roles = $service->resolveRoles($user);
$this->assertContains('ROLE_REPORTS_ONLY', $roles);
$this->assertContains('ROLE_CUSTOM', $roles);
$this->assertContains('ROLE_ADMIN', $roles);
}
}