major update
This commit is contained in:
36
tests/Service/Access/AuthorizationPolicyTestSupport.php
Normal file
36
tests/Service/Access/AuthorizationPolicyTestSupport.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user