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:
@@ -9,8 +9,10 @@ use LIT\MCP\Integrations\Divi\DiviIntegration;
|
||||
use LIT\MCP\Integrations\Divi\Pages\DiviContentComposer;
|
||||
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
|
||||
use LIT\MCP\Tests\Support\FakeChangeLog;
|
||||
use LIT\MCP\Tests\Support\LibraryFixtures;
|
||||
use LIT\MCP\Tests\Unit\TestCase;
|
||||
use Mockery;
|
||||
use WP_Error;
|
||||
|
||||
final class DiviIntegrationTest extends TestCase
|
||||
{
|
||||
@@ -55,4 +57,23 @@ final class DiviIntegrationTest extends TestCase
|
||||
self::assertInstanceOf(DiviContentComposer::class, $composer);
|
||||
self::assertFalse($composer->available(), 'no Divi classes in unit tests');
|
||||
}
|
||||
|
||||
/** E1/E3: the Divi read tools reach library entries; ruling P9: a hidden library leaves them not found. */
|
||||
public function testTheReadToolsReachTheLibraryUnlessItIsHidden(): void
|
||||
{
|
||||
LibraryFixtures::given([LibraryFixtures::item(1055)]);
|
||||
$schema = Mockery::mock(ContentSchema::class);
|
||||
$schema->allows('isManaged')->andReturn(false);
|
||||
$outline = static fn (DiviIntegration $divi): mixed => $divi->abilities()[0]->permission(['post_id' => 1055]);
|
||||
|
||||
// No Divi in unit tests: DiviRoles allows nothing, so a reachable entry is refused, not missing.
|
||||
$visible = new DiviIntegration($schema, FakeChangeLog::forbidden(), null, static fn (): bool => true);
|
||||
self::assertToolError($outline($visible), 'forbidden');
|
||||
self::assertToolError($outline(new DiviIntegration($schema, FakeChangeLog::forbidden())), 'forbidden');
|
||||
|
||||
$hidden = new DiviIntegration($schema, FakeChangeLog::forbidden(), libraryVisible: static fn (): bool => false);
|
||||
$refusal = $outline($hidden);
|
||||
self::assertInstanceOf(WP_Error::class, $refusal);
|
||||
self::assertToolError($refusal, 'not_found');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user