feat(firewall): add scoped rule administration reads
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -57,6 +57,39 @@ class FirewallRuleServicesTest extends TestCase
|
||||
$this->systemService()->blockIp('203.0.113.10');
|
||||
}
|
||||
|
||||
#[TestDox('Read operations require their scope-specific permission')]
|
||||
public function testReadPermissions(): void
|
||||
{
|
||||
$this->identity->method('hasPermission')->willReturn(false);
|
||||
$this->store->expects(self::never())->method('queryRules');
|
||||
|
||||
try {
|
||||
$this->tenantService()->queryRules();
|
||||
self::fail('Tenant read should have been rejected.');
|
||||
} catch (\RuntimeException $error) {
|
||||
self::assertStringContainsString(TenantFirewallRuleService::PERMISSION_READ, $error->getMessage());
|
||||
}
|
||||
|
||||
$this->expectExceptionMessage(SystemFirewallRuleService::PERMISSION_READ);
|
||||
$this->systemService()->queryRules();
|
||||
}
|
||||
|
||||
#[TestDox('Tenant reads derive ownership and effective policy from context')]
|
||||
public function testTenantReads(): void
|
||||
{
|
||||
$this->allow(TenantFirewallRuleService::PERMISSION_READ);
|
||||
$this->tenant->method('requireIdentifier')->willReturn('tenant-a');
|
||||
$this->store->expects(self::once())
|
||||
->method('queryRules')
|
||||
->with(FirewallRuleObject::SCOPE_TENANT, 'tenant-a', 'active', null, null, 50, 0)
|
||||
->willReturn(['items' => [], 'total' => 0, 'limit' => 50, 'offset' => 0]);
|
||||
$this->store->method('listSystemRules')->willReturn([]);
|
||||
$this->store->method('listRules')->with('tenant-a')->willReturn([]);
|
||||
|
||||
self::assertSame(0, $this->tenantService()->queryRules()['total']);
|
||||
self::assertSame([], $this->tenantService()->effectivePolicy()['system']);
|
||||
}
|
||||
|
||||
#[TestDox('Tenant management derives scope from tenant context')]
|
||||
public function testTenantScope(): void
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user