50 lines
1.2 KiB
PHP
50 lines
1.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Shared;
|
|
|
|
use App\Shared\Http\SessionManager;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
#[\PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations]
|
|
final class SessionManagerEdgeCasesTest extends TestCase
|
|
{
|
|
private SessionManager $manager;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$_SESSION = [];
|
|
$this->manager = new SessionManager();
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
$_SESSION = [];
|
|
}
|
|
|
|
public function testGetUserIdReturnsNullForEmptyString(): void
|
|
{
|
|
$_SESSION['user_id'] = '';
|
|
|
|
self::assertNull($this->manager->getUserId());
|
|
self::assertFalse($this->manager->isAuthenticated());
|
|
}
|
|
|
|
public function testGetUserIdCastsNumericStringToInteger(): void
|
|
{
|
|
$_SESSION['user_id'] = '42';
|
|
|
|
self::assertSame(42, $this->manager->getUserId());
|
|
self::assertTrue($this->manager->isAuthenticated());
|
|
}
|
|
|
|
public function testSetUserUsesDefaultRoleUser(): void
|
|
{
|
|
$this->manager->setUser(12, 'julien');
|
|
|
|
self::assertSame('user', $_SESSION['role']);
|
|
self::assertFalse($this->manager->isAdmin());
|
|
self::assertFalse($this->manager->isEditor());
|
|
}
|
|
}
|