63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Shared;
|
|
|
|
use App\Shared\Extension\AppExtension;
|
|
use App\Shared\Extension\CsrfExtension;
|
|
use App\Shared\Extension\SessionExtension;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Slim\Csrf\Guard;
|
|
use Slim\Psr7\Factory\ResponseFactory;
|
|
|
|
#[\PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations]
|
|
|
|
final class ExtensionTest extends TestCase
|
|
{
|
|
protected function setUp(): void
|
|
{
|
|
$_SESSION = [];
|
|
}
|
|
|
|
public function testAppExtensionExposesAppUrl(): void
|
|
{
|
|
$extension = new AppExtension('https://example.test');
|
|
|
|
self::assertSame(['app_url' => 'https://example.test'], $extension->getGlobals());
|
|
}
|
|
|
|
public function testSessionExtensionExposesSelectedSessionKeys(): void
|
|
{
|
|
$_SESSION = [
|
|
'user_id' => 12,
|
|
'username' => 'julien',
|
|
'role' => 'admin',
|
|
'flash' => ['notice' => 'x'],
|
|
];
|
|
|
|
$extension = new SessionExtension();
|
|
|
|
self::assertSame([
|
|
'session' => [
|
|
'user_id' => 12,
|
|
'username' => 'julien',
|
|
'role' => 'admin',
|
|
],
|
|
], $extension->getGlobals());
|
|
}
|
|
|
|
public function testCsrfExtensionExposesTokens(): void
|
|
{
|
|
$storage = [];
|
|
$guard = new Guard(new ResponseFactory(), storage: $storage);
|
|
$extension = new CsrfExtension($guard);
|
|
$globals = $extension->getGlobals();
|
|
|
|
self::assertArrayHasKey('csrf', $globals);
|
|
self::assertSame($guard->getTokenNameKey(), $globals['csrf']['keys']['name']);
|
|
self::assertSame($guard->getTokenValueKey(), $globals['csrf']['keys']['value']);
|
|
self::assertSame($guard->getTokenName(), $globals['csrf']['name']);
|
|
self::assertSame($guard->getTokenValue(), $globals['csrf']['value']);
|
|
}
|
|
}
|