3 namespace Tests\Permissions\Scenarios;
5 class EntityUserPermissionsTest extends PermissionScenarioTestCase
7 public function test_01_explicit_allow()
9 $user = $this->users->newUser();
10 $page = $this->entities->page();
11 $this->permissions->disableEntityInheritedPermissions($page);
12 $this->permissions->addEntityPermission($page, ['view'], null, $user);
14 $this->assertVisibleToUser($page, $user);
17 public function test_02_explicit_deny()
19 $user = $this->users->newUser();
20 $page = $this->entities->page();
21 $this->permissions->disableEntityInheritedPermissions($page);
22 $this->permissions->addEntityPermission($page, [], null, $user);
24 $this->assertNotVisibleToUser($page, $user);
27 public function test_10_allow_inherit()
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);
35 $this->assertVisibleToUser($page, $user);
38 public function test_11_deny_inherit()
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);
46 $this->assertNotVisibleToUser($page, $user);
49 public function test_12_allow_inherit_override()
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);
58 $this->assertVisibleToUser($page, $user);
61 public function test_13_deny_inherit_override()
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);
70 $this->assertNotVisibleToUser($page, $user);
73 public function test_40_entity_role_override_allow()
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);
81 $this->assertVisibleToUser($page, $user);
84 public function test_41_entity_role_override_deny()
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);
92 $this->assertNotVisibleToUser($page, $user);
95 public function test_42_entity_role_override_allow_via_inherit()
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);
104 $this->assertVisibleToUser($page, $user);
107 public function test_43_entity_role_override_deny_via_inherit()
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);
116 $this->assertNotVisibleToUser($page, $user);
119 public function test_50_role_override_allow()
121 [$user, $roleA] = $this->users->newUserWithRole();
122 $page = $this->entities->page();
123 $this->permissions->addEntityPermission($page, ['view'], null, $user);
125 $this->assertVisibleToUser($page, $user);
128 public function test_51_role_override_deny()
130 [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
131 $page = $this->entities->page();
132 $this->permissions->addEntityPermission($page, [], null, $user);
134 $this->assertNotVisibleToUser($page, $user);
137 public function test_60_inherited_role_override_allow()
139 [$user, $roleA] = $this->users->newUserWithRole([], []);
140 $page = $this->entities->pageWithinChapter();
141 $chapter = $page->chapter;
142 $this->permissions->addEntityPermission($chapter, ['view'], null, $user);
144 $this->assertVisibleToUser($page, $user);
147 public function test_61_inherited_role_override_deny()
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);
154 $this->assertNotVisibleToUser($page, $user);
157 public function test_61_inherited_role_override_deny_on_own()
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);
165 $this->assertNotVisibleToUser($page, $user);
168 public function test_70_all_override_allow()
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);
175 $this->assertVisibleToUser($page, $user);
178 public function test_71_all_override_deny()
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);
185 $this->assertNotVisibleToUser($page, $user);
188 public function test_80_inherited_all_override_allow()
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);
196 $this->assertVisibleToUser($page, $user);
199 public function test_81_inherited_all_override_deny()
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);
207 $this->assertNotVisibleToUser($page, $user);