1 # Permission Scenario Testing
3 Due to complexity that can arise in the various combinations of permissions, this document details scenarios and their expected results.
5 Test cases are written ability abstract, since all abilities should act the same in theory. Functional test cases may test abilities separate due to implementation differences.
7 Tests are categorised by the most specific element involved in the scenario, where the below list is most specific to least:
9 - User entity permissions.
10 - Role entity permissions.
11 - Fallback entity permissions.
14 - TODO - Test fallback in the context of the above.
16 ## General Permission Logical Rules
18 The below are some general rules we follow to standardise the behaviour of permissions in the platform:
20 - Most specific permission application (as above) take priority and can deny less specific permissions.
21 - Parent user/role entity permissions that may be inherited, are considered to essentially be applied on the item they are inherited to unless a lower level has its own permission rule for an already specific role/user.
22 - Where both grant and deny exist at the same specificity, we side towards grant.
26 ### Content Role Permissions
28 These are tests related to item/entity permissions that are set only at a role level.
32 - Role A has role all-page permission.
35 User granted page permission.
39 - Role A has no page permission.
42 User denied page permission.
44 #### test_10_allow_on_own_with_own
46 - Role A has role own-page permission.
48 - User is owner of page.
50 User granted page permission.
52 #### test_11_deny_on_other_with_own
54 - Role A has role own-page permission.
56 - User is not owner of page.
58 User denied page permission.
60 #### test_20_multiple_role_conflicting_all
62 - Role A has role all-page permission.
63 - Role B has no page permission.
64 - User has Role A & B.
66 User granted page permission.
68 #### test_21_multiple_role_conflicting_own
70 - Role A has role own-page permission.
71 - Role B has no page permission.
72 - User has Role A & B.
73 - User is owner of page.
75 User granted page permission.
79 ### Entity Role Permissions
81 These are tests related to entity-level role-specific permission overrides.
83 #### test_01_explicit_allow
85 - Page permissions have inherit disabled.
86 - Role A has entity allow page permission.
89 User granted page permission.
91 #### test_02_explicit_deny
93 - Page permissions have inherit disabled.
94 - Role A has entity deny page permission.
97 User denied page permission.
99 #### test_03_same_level_conflicting
101 - Page permissions have inherit disabled.
102 - Role A has entity allow page permission.
103 - Role B has entity deny page permission.
104 - User has both Role A & B.
106 User granted page permission.
107 Explicit grant overrides entity deny at same level.
109 #### test_20_inherit_allow
111 - Page permissions have inherit enabled.
112 - Chapter permissions has inherit disabled.
113 - Role A has entity allow chapter permission.
116 User granted page permission.
118 #### test_21_inherit_deny
120 - Page permissions have inherit enabled.
121 - Chapter permissions has inherit disabled.
122 - Role A has entity deny chapter permission.
125 User denied page permission.
127 #### test_22_same_level_conflict_inherit
129 - Page permissions have inherit enabled.
130 - Chapter permissions has inherit disabled.
131 - Role A has entity deny chapter permission.
132 - Role B has entity allow chapter permission.
133 - User has both Role A & B.
135 User granted page permission.
137 #### test_30_child_inherit_override_allow
139 - Page permissions have inherit enabled.
140 - Chapter permissions has inherit disabled.
141 - Role A has entity deny chapter permission.
142 - Role A has entity allow page permission.
145 User granted page permission.
147 #### test_31_child_inherit_override_deny
149 - Page permissions have inherit enabled.
150 - Chapter permissions has inherit disabled.
151 - Role A has entity allow chapter permission.
152 - Role A has entity deny page permission.
155 User denied page permission.
157 #### test_40_multi_role_inherit_conflict_override_deny
159 - Page permissions have inherit enabled.
160 - Chapter permissions has inherit disabled.
161 - Role A has entity deny page permission.
162 - Role B has entity allow chapter permission.
163 - User has Role A & B.
165 User granted page permission.
167 #### test_41_multi_role_inherit_conflict_retain_allow
169 - Page permissions have inherit enabled.
170 - Chapter permissions has inherit disabled.
171 - Role A has entity allow page permission.
172 - Role B has entity deny chapter permission.
173 - User has Role A & B.
175 User granted page permission.
177 #### test_50_role_override_allow
179 - Page permissions have inherit enabled.
180 - Role A has no page role permission.
181 - Role A has entity allow page permission.
184 User granted page permission.
186 #### test_51_role_override_deny
188 - Page permissions have inherit enabled.
189 - Role A has no page-view-all role permission.
190 - Role A has entity deny page permission.
193 User denied page permission.
195 #### test_60_inherited_role_override_allow
197 - Page permissions have inherit enabled.
198 - Chapter permissions have inherit enabled.
199 - Role A has no page role permission.
200 - Role A has entity allow chapter permission.
203 User granted page permission.
205 #### test_61_inherited_role_override_deny
207 - Page permissions have inherit enabled.
208 - Chapter permissions have inherit enabled.
209 - Role A has page role permission.
210 - Role A has entity denied chapter permission.
213 User denied page permission.
215 #### test_62_inherited_role_override_deny_on_own
217 - Page permissions have inherit enabled.
218 - Chapter permissions have inherit enabled.
219 - Role A has own-page role permission.
220 - Role A has entity denied chapter permission.
224 User denied page permission.
226 #### test_70_multi_role_inheriting_deny
228 - Page permissions have inherit enabled.
229 - Role A has all page role permission.
230 - Role B has entity denied page permission.
231 - User has Role A and B.
233 User denied page permission.
235 #### test_80_multi_role_inherited_deny_via_parent
237 - Page permissions have inherit enabled.
238 - Chapter permissions have inherit enabled.
239 - Role A has all-pages role permission.
240 - Role B has entity denied chapter permission.
241 - User has Role A & B.
243 User denied page permission.
247 ### Entity User Permissions
249 These are tests related to entity-level user-specific permission overrides.
251 #### test_01_explicit_allow
253 - Page permissions have inherit disabled.
254 - User has entity allow page permission.
256 User granted page permission.
258 #### test_02_explicit_deny
260 - Page permissions have inherit disabled.
261 - User has entity deny page permission.
263 User denied page permission.
265 #### test_10_allow_inherit
267 - Page permissions have inherit enabled.
268 - Chapter permissions have inherit disabled.
269 - User has entity allow chapter permission.
271 User granted page permission.
273 #### test_11_deny_inherit
275 - Page permissions have inherit enabled.
276 - Chapter permissions have inherit disabled.
277 - User has entity deny chapter permission.
279 User denied page permission.
281 #### test_12_allow_inherit_override
283 - Page permissions have inherit enabled.
284 - Chapter permissions have inherit disabled.
285 - User has entity deny chapter permission.
286 - User has entity allow page permission.
288 User granted page permission.
290 #### test_13_deny_inherit_override
292 - Page permissions have inherit enabled.
293 - Chapter permissions have inherit disabled.
294 - User has entity allow chapter permission.
295 - User has entity deny page permission.
297 User denied page permission.
299 #### test_40_entity_role_override_allow
301 - Page permissions have inherit disabled.
302 - User has entity allow page permission.
303 - Role A has entity deny page permission.
306 User granted page permission.
308 #### test_41_entity_role_override_deny
310 - Page permissions have inherit disabled.
311 - User has entity deny page permission.
312 - Role A has entity allow page permission.
315 User denied page permission.
317 #### test_42_entity_role_override_allow_via_inherit
319 - Page permissions have inherit enabled.
320 - Chapter permissions have inherit disabled.
321 - User has entity allow chapter permission.
322 - Role A has entity deny page permission.
325 User granted page permission.
327 #### test_43_entity_role_override_deny_via_inherit
329 - Page permissions have inherit enabled.
330 - Chapter permissions have inherit disabled.
331 - User has entity deny chapter permission.
332 - Role A has entity allow page permission.
335 User denied page permission.
337 #### test_50_role_override_allow
339 - Page permissions have inherit enabled.
340 - Role A has no page role permission.
341 - User has entity allow page permission.
344 User granted page permission.
346 #### test_51_role_override_deny
348 - Page permissions have inherit enabled.
349 - Role A has all-page role permission.
350 - User has entity deny page permission.
353 User denied page permission.
355 #### test_60_inherited_role_override_allow
357 - Page permissions have inherit enabled.
358 - Role A has no page role permission.
359 - User has entity allow chapter permission.
362 User granted page permission.
364 #### test_61_inherited_role_override_deny
366 - Page permissions have inherit enabled.
367 - Role A has view-all page role permission.
368 - User has entity deny chapter permission.
371 User denied page permission.
373 #### test_61_inherited_role_override_deny_on_own
375 - Page permissions have inherit enabled.
376 - Role A has view-own page role permission.
377 - User has entity deny chapter permission.
381 User denied page permission.
383 #### test_70_all_override_allow
385 - Page permissions have inherit enabled.
386 - Role A has no page role permission.
387 - Role A has entity deny page permission.
388 - User has entity allow page permission.
391 User granted page permission.
393 #### test_71_all_override_deny
395 - Page permissions have inherit enabled.
396 - Role A has page-all role permission.
397 - Role A has entity allow page permission.
398 - User has entity deny page permission.
401 User denied page permission.
403 #### test_80_inherited_all_override_allow
405 - Page permissions have inherit enabled.
406 - Role A has no page role permission.
407 - Role A has entity deny chapter permission.
408 - User has entity allow chapter permission.
411 User granted page permission.
413 #### test_81_inherited_all_override_deny
415 - Page permissions have inherit enabled.
416 - Role A has view-all page role permission.
417 - Role A has entity allow chapter permission.
418 - User has entity deny chapter permission.
421 User denied page permission.