3 namespace Tests\Permissions\Scenarios;
5 use BookStack\Entities\Models\Entity;
6 use BookStack\Users\Models\User;
9 // Cases defined in dev/docs/permission-scenario-testing.md
11 class PermissionScenarioTestCase extends TestCase
13 protected function assertVisibleToUser(Entity $entity, User $user)
15 $this->actingAs($user);
16 $funcView = userCan($entity->getMorphClass() . '-view', $entity);
17 $queryView = $entity->newQuery()->scopes(['visible'])->find($entity->id) !== null;
19 $id = $entity->getMorphClass() . ':' . $entity->id;
20 $msg = "Item [{$id}] should be visible but was not found via ";
21 $msg .= implode(' and ', array_filter([!$funcView ? 'userCan' : '', !$queryView ? 'query' : '']));
23 static::assertTrue($funcView && $queryView, $msg);
26 protected function assertNotVisibleToUser(Entity $entity, User $user)
28 $this->actingAs($user);
29 $funcView = userCan($entity->getMorphClass() . '-view', $entity);
30 $queryView = $entity->newQuery()->scopes(['visible'])->find($entity->id) !== null;
32 $id = $entity->getMorphClass() . ':' . $entity->id;
33 $msg = "Item [{$id}] should not be visible but was found via ";
34 $msg .= implode(' and ', array_filter([$funcView ? 'userCan' : '', $queryView ? 'query' : '']));
36 static::assertTrue(!$funcView && !$queryView, $msg);