2026-03-12 14:09:06 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MintyPHP\Tests\Http;
|
|
|
|
|
|
|
|
|
|
use MintyPHP\Http\AccessControl;
|
2026-04-13 19:28:07 +02:00
|
|
|
use MintyPHP\Http\IntendedUrlService;
|
2026-03-12 14:09:06 +01:00
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
|
|
class AccessControlTest extends TestCase
|
|
|
|
|
{
|
2026-04-13 19:28:07 +02:00
|
|
|
private function createAccessControl(array $publicPaths = []): AccessControl
|
|
|
|
|
{
|
|
|
|
|
return new AccessControl($publicPaths, new IntendedUrlService());
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-12 14:09:06 +01:00
|
|
|
public function testConfiguredPublicPathIsAccessible(): void
|
|
|
|
|
{
|
2026-04-13 19:28:07 +02:00
|
|
|
$accessControl = $this->createAccessControl(['imprint', 'privacy']);
|
2026-03-12 14:09:06 +01:00
|
|
|
|
|
|
|
|
$this->assertTrue($accessControl->isPublicPath('imprint'));
|
|
|
|
|
$this->assertTrue($accessControl->isPublicPath('/privacy'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testPageSlugPathIsNotAutoPublic(): void
|
|
|
|
|
{
|
2026-04-13 19:28:07 +02:00
|
|
|
$accessControl = $this->createAccessControl(['imprint']);
|
2026-03-12 14:09:06 +01:00
|
|
|
|
|
|
|
|
$this->assertTrue($accessControl->isPublicPath('imprint'));
|
|
|
|
|
$this->assertFalse($accessControl->isPublicPath('page/imprint'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testAlwaysPublicPrefixesRemainAccessible(): void
|
|
|
|
|
{
|
2026-04-13 19:28:07 +02:00
|
|
|
$accessControl = $this->createAccessControl([]);
|
2026-03-12 14:09:06 +01:00
|
|
|
|
|
|
|
|
$this->assertTrue($accessControl->isPublicPath('api/v1/health'));
|
|
|
|
|
$this->assertTrue($accessControl->isPublicPath('auth/microsoft/callback'));
|
|
|
|
|
}
|
|
|
|
|
}
|