]> BookStack Code Mirror - bookstack/blob - tests/Permissions/Scenarios/RoleContentPermissionsTest.php
Added more inter-method permissions test cases
[bookstack] / tests / Permissions / Scenarios / RoleContentPermissionsTest.php
1 <?php
2
3 namespace Tests\Permissions\Scenarios;
4
5 class RoleContentPermissionsTest extends PermissionScenarioTestCase
6 {
7     public function test_01_allow()
8     {
9         [$user] = $this->users->newUserWithRole([], ['page-view-all']);
10         $page = $this->entities->page();
11
12         $this->assertVisibleToUser($page, $user);
13     }
14
15     public function test_02_deny()
16     {
17         [$user] = $this->users->newUserWithRole([], []);
18         $page = $this->entities->page();
19
20         $this->assertNotVisibleToUser($page, $user);
21     }
22
23     public function test_10_allow_on_own_with_own()
24     {
25         [$user] = $this->users->newUserWithRole([], ['page-view-own']);
26         $page = $this->entities->page();
27         $this->permissions->changeEntityOwner($page, $user);
28
29         $this->assertVisibleToUser($page, $user);
30     }
31
32     public function test_11_deny_on_other_with_own()
33     {
34         [$user] = $this->users->newUserWithRole([], ['page-view-own']);
35         $page = $this->entities->page();
36         $this->permissions->changeEntityOwner($page, $this->users->editor());
37
38         $this->assertNotVisibleToUser($page, $user);
39     }
40
41     public function test_20_multiple_role_conflicting_all()
42     {
43         [$user] = $this->users->newUserWithRole([], ['page-view-all']);
44         $this->users->attachNewRole($user, []);
45         $page = $this->entities->page();
46
47         $this->assertVisibleToUser($page, $user);
48     }
49
50     public function test_21_multiple_role_conflicting_own()
51     {
52         [$user] = $this->users->newUserWithRole([], ['page-view-own']);
53         $this->users->attachNewRole($user, []);
54         $page = $this->entities->page();
55         $this->permissions->changeEntityOwner($page, $user);
56
57         $this->assertVisibleToUser($page, $user);
58     }
59 }