]> BookStack Code Mirror - bookstack/blob - tests/Permissions/Scenarios/EntityUserPermissionsTest.php
Added method for using enity ownership in relation queries
[bookstack] / tests / Permissions / Scenarios / EntityUserPermissionsTest.php
1 <?php
2
3 namespace Tests\Permissions\Scenarios;
4
5 class EntityUserPermissionsTest extends PermissionScenarioTestCase
6 {
7     public function test_01_explicit_allow()
8     {
9         $user = $this->users->newUser();
10         $page = $this->entities->page();
11         $this->permissions->disableEntityInheritedPermissions($page);
12         $this->permissions->addEntityPermission($page, ['view'], null, $user);
13
14         $this->assertVisibleToUser($page, $user);
15     }
16
17     public function test_02_explicit_deny()
18     {
19         $user = $this->users->newUser();
20         $page = $this->entities->page();
21         $this->permissions->disableEntityInheritedPermissions($page);
22         $this->permissions->addEntityPermission($page, [], null, $user);
23
24         $this->assertNotVisibleToUser($page, $user);
25     }
26
27     public function test_10_allow_inherit()
28     {
29         $user = $this->users->newUser();
30         $page = $this->entities->pageWithinChapter();
31         $chapter = $page->chapter;
32         $this->permissions->disableEntityInheritedPermissions($chapter);
33         $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
34
35         $this->assertVisibleToUser($page, $user);
36     }
37
38     public function test_11_deny_inherit()
39     {
40         $user = $this->users->newUser();
41         $page = $this->entities->pageWithinChapter();
42         $chapter = $page->chapter;
43         $this->permissions->disableEntityInheritedPermissions($chapter);
44         $this->permissions->addEntityPermission($chapter, [], null, $user);
45
46         $this->assertNotVisibleToUser($page, $user);
47     }
48
49     public function test_12_allow_inherit_override()
50     {
51         $user = $this->users->newUser();
52         $page = $this->entities->pageWithinChapter();
53         $chapter = $page->chapter;
54         $this->permissions->disableEntityInheritedPermissions($chapter);
55         $this->permissions->addEntityPermission($chapter, [], null, $user);
56         $this->permissions->addEntityPermission($page, ['view'], null, $user);
57
58         $this->assertVisibleToUser($page, $user);
59     }
60
61     public function test_13_deny_inherit_override()
62     {
63         $user = $this->users->newUser();
64         $page = $this->entities->pageWithinChapter();
65         $chapter = $page->chapter;
66         $this->permissions->disableEntityInheritedPermissions($chapter);
67         $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
68         $this->permissions->addEntityPermission($page, ['deny'], null, $user);
69
70         $this->assertNotVisibleToUser($page, $user);
71     }
72
73     public function test_40_entity_role_override_allow()
74     {
75         [$user, $role] = $this->users->newUserWithRole();
76         $page = $this->entities->page();
77         $this->permissions->disableEntityInheritedPermissions($page);
78         $this->permissions->addEntityPermission($page, ['view'], null, $user);
79         $this->permissions->addEntityPermission($page, [], $role);
80
81         $this->assertVisibleToUser($page, $user);
82     }
83
84     public function test_41_entity_role_override_deny()
85     {
86         [$user, $role] = $this->users->newUserWithRole();
87         $page = $this->entities->page();
88         $this->permissions->disableEntityInheritedPermissions($page);
89         $this->permissions->addEntityPermission($page, [], null, $user);
90         $this->permissions->addEntityPermission($page, ['view'], $role);
91
92         $this->assertNotVisibleToUser($page, $user);
93     }
94
95     public function test_42_entity_role_override_allow_via_inherit()
96     {
97         [$user, $role] = $this->users->newUserWithRole();
98         $page = $this->entities->pageWithinChapter();
99         $chapter = $page->chapter;
100         $this->permissions->disableEntityInheritedPermissions($chapter);
101         $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
102         $this->permissions->addEntityPermission($page, [], $role);
103
104         $this->assertVisibleToUser($page, $user);
105     }
106
107     public function test_43_entity_role_override_deny_via_inherit()
108     {
109         [$user, $role] = $this->users->newUserWithRole();
110         $page = $this->entities->pageWithinChapter();
111         $chapter = $page->chapter;
112         $this->permissions->disableEntityInheritedPermissions($chapter);
113         $this->permissions->addEntityPermission($chapter, [], null, $user);
114         $this->permissions->addEntityPermission($page, ['view'], $role);
115
116         $this->assertNotVisibleToUser($page, $user);
117     }
118
119     public function test_50_role_override_allow()
120     {
121         [$user, $roleA] = $this->users->newUserWithRole();
122         $page = $this->entities->page();
123         $this->permissions->addEntityPermission($page, ['view'], null, $user);
124
125         $this->assertVisibleToUser($page, $user);
126     }
127
128     public function test_51_role_override_deny()
129     {
130         [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
131         $page = $this->entities->page();
132         $this->permissions->addEntityPermission($page, [], null, $user);
133
134         $this->assertNotVisibleToUser($page, $user);
135     }
136
137     public function test_60_inherited_role_override_allow()
138     {
139         [$user, $roleA] = $this->users->newUserWithRole([], []);
140         $page = $this->entities->pageWithinChapter();
141         $chapter = $page->chapter;
142         $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
143
144         $this->assertVisibleToUser($page, $user);
145     }
146
147     public function test_61_inherited_role_override_deny()
148     {
149         [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
150         $page = $this->entities->pageWithinChapter();
151         $chapter = $page->chapter;
152         $this->permissions->addEntityPermission($chapter, [], null, $user);
153
154         $this->assertNotVisibleToUser($page, $user);
155     }
156
157     public function test_61_inherited_role_override_deny_on_own()
158     {
159         [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-own']);
160         $page = $this->entities->pageWithinChapter();
161         $chapter = $page->chapter;
162         $this->permissions->addEntityPermission($chapter, [], null, $user);
163         $this->permissions->changeEntityOwner($page, $user);
164
165         $this->assertNotVisibleToUser($page, $user);
166     }
167
168     public function test_70_all_override_allow()
169     {
170         [$user, $roleA] = $this->users->newUserWithRole([], []);
171         $page = $this->entities->page();
172         $this->permissions->addEntityPermission($page, [], $roleA, null);
173         $this->permissions->addEntityPermission($page, ['view'], null, $user);
174
175         $this->assertVisibleToUser($page, $user);
176     }
177
178     public function test_71_all_override_deny()
179     {
180         [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
181         $page = $this->entities->page();
182         $this->permissions->addEntityPermission($page, ['view'], $roleA, null);
183         $this->permissions->addEntityPermission($page, [], null, $user);
184
185         $this->assertNotVisibleToUser($page, $user);
186     }
187
188     public function test_80_inherited_all_override_allow()
189     {
190         [$user, $roleA] = $this->users->newUserWithRole([], []);
191         $page = $this->entities->pageWithinChapter();
192         $chapter = $page->chapter;
193         $this->permissions->addEntityPermission($chapter, [], $roleA, null);
194         $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
195
196         $this->assertVisibleToUser($page, $user);
197     }
198
199     public function test_81_inherited_all_override_deny()
200     {
201         [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
202         $page = $this->entities->pageWithinChapter();
203         $chapter = $page->chapter;
204         $this->permissions->addEntityPermission($chapter, ['view'], $roleA, null);
205         $this->permissions->addEntityPermission($chapter, [], null, $user);
206
207         $this->assertNotVisibleToUser($page, $user);
208     }
209 }