feat: Divi read tools accept library entries (library access, E1/E3)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 01:02:25 +02:00
co-authored by Claude Opus 5.5
parent 2700fd615a
commit 48ecc627aa
13 changed files with 487 additions and 13 deletions
@@ -200,6 +200,16 @@ final class ExposurePolicyTest extends TestCase
self::assertSame([], $policy->directNames([$update, $delete, $outline]));
}
/** Ruling P9: only a group disabled as a whole is switched off; "nur lesen" still lets it read. */
public function testGroupEnabledUnlessTheWholeGroupIsDisabled(): void
{
self::assertTrue((new ExposurePolicy())->groupEnabled('divi-library'));
self::assertTrue((new ExposurePolicy(['@readonly:divi-library' => true]))->groupEnabled('divi-library'));
self::assertTrue((new ExposurePolicy(['@group:divi-library' => 'indirect']))->groupEnabled('divi-library'));
self::assertFalse((new ExposurePolicy(['@group:divi-library' => 'disabled']))->groupEnabled('divi-library'));
self::assertTrue((new ExposurePolicy(['@group:divi' => 'disabled']))->groupEnabled('divi-library'));
}
public function testSanitizeValidatesGroupEntries(): void
{
self::assertSame(