]> BookStack Code Mirror - bookstack/blob - dev/docs/permission-scenario-testing.md
Added method for using enity ownership in relation queries
[bookstack] / dev / docs / permission-scenario-testing.md
1 # Permission Scenario Testing
2
3 Due to complexity that can arise in the various combinations of permissions, this document details scenarios and their expected results.
4
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.
6
7 Tests are categorised by the most specific element involved in the scenario, where the below list is most specific to least:
8
9 - User entity permissions.
10 - Role entity permissions.
11 - Fallback entity permissions.
12 - Role permissions.
13
14 - TODO - Test fallback in the context of the above.
15
16 ## General Permission Logical Rules
17
18 The below are some general rules we follow to standardise the behaviour of permissions in the platform:
19
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.
23
24 ## Cases
25
26 ### Content Role Permissions
27
28 These are tests related to item/entity permissions that are set only at a role level.
29
30 #### test_01_allow
31
32 - Role A has role all-page permission.
33 - User has Role A.
34
35 User granted page permission.
36
37 #### test_02_deny
38
39 - Role A has no page permission.
40 - User has Role A.
41
42 User denied page permission.
43
44 #### test_10_allow_on_own_with_own
45
46 - Role A has role own-page permission.
47 - User has Role A.
48 - User is owner of page.
49
50 User granted page permission.
51
52 #### test_11_deny_on_other_with_own
53
54 - Role A has role own-page permission.
55 - User has Role A.
56 - User is not owner of page.
57
58 User denied page permission.
59
60 #### test_20_multiple_role_conflicting_all
61
62 - Role A has role all-page permission.
63 - Role B has no page permission.
64 - User has Role A & B.
65
66 User granted page permission.
67
68 #### test_21_multiple_role_conflicting_own
69
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.
74
75 User granted page permission.
76
77 ---
78
79 ### Entity Role Permissions
80
81 These are tests related to entity-level role-specific permission overrides.
82
83 #### test_01_explicit_allow
84
85 - Page permissions have inherit disabled.
86 - Role A has entity allow page permission.
87 - User has Role A.
88
89 User granted page permission.
90
91 #### test_02_explicit_deny
92
93 - Page permissions have inherit disabled.
94 - Role A has entity deny page permission.
95 - User has Role A.
96
97 User denied page permission.
98
99 #### test_03_same_level_conflicting
100
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.
105
106 User granted page permission. 
107 Explicit grant overrides entity deny at same level.
108
109 #### test_20_inherit_allow
110
111 - Page permissions have inherit enabled.
112 - Chapter permissions has inherit disabled.
113 - Role A has entity allow chapter permission.
114 - User has Role A.
115
116 User granted page permission.
117
118 #### test_21_inherit_deny
119
120 - Page permissions have inherit enabled.
121 - Chapter permissions has inherit disabled.
122 - Role A has entity deny chapter permission.
123 - User has Role A.
124
125 User denied page permission.
126
127 #### test_22_same_level_conflict_inherit 
128
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.
134
135 User granted page permission.
136
137 #### test_30_child_inherit_override_allow
138
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.
143 - User has Role A.
144
145 User granted page permission.
146
147 #### test_31_child_inherit_override_deny
148
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.
153 - User has Role A.
154
155 User denied page permission.
156
157 #### test_40_multi_role_inherit_conflict_override_deny
158
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.
164
165 User granted page permission.
166
167 #### test_41_multi_role_inherit_conflict_retain_allow
168
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.
174
175 User granted page permission.
176
177 #### test_50_role_override_allow
178
179 - Page permissions have inherit enabled.
180 - Role A has no page role permission.
181 - Role A has entity allow page permission.
182 - User has Role A.
183
184 User granted page permission.
185
186 #### test_51_role_override_deny
187
188 - Page permissions have inherit enabled.
189 - Role A has no page-view-all role permission.
190 - Role A has entity deny page permission.
191 - User has Role A.
192
193 User denied page permission.
194
195 #### test_60_inherited_role_override_allow
196
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.
201 - User has Role A.
202
203 User granted page permission.
204
205 #### test_61_inherited_role_override_deny
206
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.
211 - User has Role A.
212
213 User denied page permission.
214
215 #### test_62_inherited_role_override_deny_on_own
216
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.
221 - User has Role A.
222 - User owns Page.
223
224 User denied page permission.
225
226 #### test_70_multi_role_inheriting_deny
227
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.
232
233 User denied page permission.
234
235 #### test_80_multi_role_inherited_deny_via_parent
236
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.
242
243 User denied page permission.
244
245 ---
246
247 ### Entity User Permissions
248
249 These are tests related to entity-level user-specific permission overrides.
250
251 #### test_01_explicit_allow
252
253 - Page permissions have inherit disabled.
254 - User has entity allow page permission.
255
256 User granted page permission.
257
258 #### test_02_explicit_deny
259
260 - Page permissions have inherit disabled.
261 - User has entity deny page permission.
262
263 User denied page permission.
264
265 #### test_10_allow_inherit
266
267 - Page permissions have inherit enabled.
268 - Chapter permissions have inherit disabled.
269 - User has entity allow chapter permission.
270
271 User granted page permission.
272
273 #### test_11_deny_inherit
274
275 - Page permissions have inherit enabled.
276 - Chapter permissions have inherit disabled.
277 - User has entity deny chapter permission.
278
279 User denied page permission.
280
281 #### test_12_allow_inherit_override
282
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.
287
288 User granted page permission.
289
290 #### test_13_deny_inherit_override
291
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.
296
297 User denied page permission.
298
299 #### test_40_entity_role_override_allow
300
301 - Page permissions have inherit disabled.
302 - User has entity allow page permission.
303 - Role A has entity deny page permission.
304 - User has role A.
305
306 User granted page permission.
307
308 #### test_41_entity_role_override_deny
309
310 - Page permissions have inherit disabled.
311 - User has entity deny page permission.
312 - Role A has entity allow page permission.
313 - User has role A.
314
315 User denied page permission.
316
317 #### test_42_entity_role_override_allow_via_inherit
318
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.
323 - User has role A.
324
325 User granted page permission.
326
327 #### test_43_entity_role_override_deny_via_inherit
328
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.
333 - User has role A.
334
335 User denied page permission.
336
337 #### test_50_role_override_allow
338
339 - Page permissions have inherit enabled.
340 - Role A has no page role permission.
341 - User has entity allow page permission.
342 - User has Role A.
343
344 User granted page permission.
345
346 #### test_51_role_override_deny
347
348 - Page permissions have inherit enabled.
349 - Role A has all-page role permission.
350 - User has entity deny page permission.
351 - User has Role A.
352
353 User denied page permission.
354
355 #### test_60_inherited_role_override_allow
356
357 - Page permissions have inherit enabled.
358 - Role A has no page role permission.
359 - User has entity allow chapter permission.
360 - User has Role A.
361
362 User granted page permission.
363
364 #### test_61_inherited_role_override_deny
365
366 - Page permissions have inherit enabled.
367 - Role A has view-all page role permission.
368 - User has entity deny chapter permission.
369 - User has Role A.
370
371 User denied page permission.
372
373 #### test_61_inherited_role_override_deny_on_own
374
375 - Page permissions have inherit enabled.
376 - Role A has view-own page role permission.
377 - User has entity deny chapter permission.
378 - User has Role A.
379 - User owns Page.
380
381 User denied page permission.
382
383 #### test_70_all_override_allow
384
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.
389 - User has Role A.
390
391 User granted page permission.
392
393 #### test_71_all_override_deny
394
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.
399 - User has Role A.
400
401 User denied page permission.
402
403 #### test_80_inherited_all_override_allow
404
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.
409 - User has Role A.
410
411 User granted page permission.
412
413 #### test_81_inherited_all_override_deny
414
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.
419 - User has Role A.
420
421 User denied page permission.