Files
breadcrumb-the-shire/tests/Service/Access/AuthorizationPolicyTestSupport.php

37 lines
1.2 KiB
PHP
Raw Normal View History

2026-03-04 15:56:58 +01:00
<?php
namespace MintyPHP\Tests\Service\Access;
use MintyPHP\Service\Access\PermissionGateway;
trait AuthorizationPolicyTestSupport
{
/**
* @param array<int, array<int, string>> $permissionsByUser
*/
private function permissionGatewayAllowing(array $permissionsByUser): PermissionGateway
{
$permissionGateway = $this->createMock(PermissionGateway::class);
$permissionGateway->method('userHas')
->willReturnCallback(static function (int $userId, string $permission) use ($permissionsByUser): bool {
return in_array($permission, $permissionsByUser[$userId] ?? [], true);
});
return $permissionGateway;
}
private function assertForbiddenDecision(mixed $decision, string $error = 'forbidden'): void
{
$this->assertFalse($decision->isAllowed());
$this->assertSame(403, $decision->status());
$this->assertSame($error, $decision->error());
}
private function assertDeniedDecision(mixed $decision, int $status, string $error): void
{
$this->assertFalse($decision->isAllowed());
$this->assertSame($status, $decision->status());
$this->assertSame($error, $decision->error());
}
}