]> BookStack Code Mirror - bookstack/blob - dev/docs/permission-scenario-testing.md
bfb5e7aa309468639f58bb72760bd23981e5764d
[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 - Role permissions.
12
13 ## General Permission Logical Rules
14
15 The below are some general rules we follow to standardise the behaviour of permissions in the platform:
16
17 - Most specific permission application (as above) take priority and can deny less specific permissions.
18 - 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.
19 - Where both grant and deny exist at the same specificity, we side towards grant.
20
21 ## Cases
22
23 ### Content Role Permissions
24
25 These are tests related to item/entity permissions that are set only at a role level.
26
27 #### test_01_allow
28
29 - Role A has role all-page permission.
30 - User has Role A.
31
32 User granted page permission.
33
34 #### test_02_deny
35
36 - Role A has no page permission.
37 - User has Role A.
38
39 User denied page permission.
40
41 #### test_10_allow_on_own_with_own
42
43 - Role A has role own-page permission.
44 - User has Role A.
45 - User is owner of page.
46
47 User granted page permission.
48
49 #### test_11_deny_on_other_with_own
50
51 - Role A has role own-page permission.
52 - User has Role A.
53 - User is not owner of page.
54
55 User denied page permission.
56
57 #### test_20_multiple_role_conflicting_all
58
59 - Role A has role all-page permission.
60 - Role B has no page permission.
61 - User has Role A & B.
62
63 User granted page permission.
64
65 #### test_21_multiple_role_conflicting_own
66
67 - Role A has role own-page permission.
68 - Role B has no page permission.
69 - User has Role A & B.
70 - User is owner of page.
71
72 User granted page permission.
73
74 ---
75
76 ### Entity Role Permissions
77
78 These are tests related to entity-level role-specific permission overrides.
79
80 #### test_01_explicit_allow
81
82 - Page permissions have inherit disabled.
83 - Role A has entity allow page permission.
84 - User has Role A.
85
86 User granted page permission.
87
88 #### test_02_explicit_deny
89
90 - Page permissions have inherit disabled.
91 - Role A has entity deny page permission.
92 - User has Role A.
93
94 User denied page permission.
95
96 #### test_03_same_level_conflicting
97
98 - Page permissions have inherit disabled.
99 - Role A has entity allow page permission.
100 - Role B has entity deny page permission.
101 - User has both Role A & B.
102
103 User granted page permission. 
104 Explicit grant overrides entity deny at same level.
105
106 #### test_20_inherit_allow
107
108 - Page permissions have inherit enabled.
109 - Chapter permissions has inherit disabled.
110 - Role A has entity allow chapter permission.
111 - User has Role A.
112
113 User granted page permission.
114
115 #### test_21_inherit_deny
116
117 - Page permissions have inherit enabled.
118 - Chapter permissions has inherit disabled.
119 - Role A has entity deny chapter permission.
120 - User has Role A.
121
122 User denied page permission.
123
124 #### test_22_same_level_conflict_inherit 
125
126 - Page permissions have inherit enabled.
127 - Chapter permissions has inherit disabled.
128 - Role A has entity deny chapter permission.
129 - Role B has entity allow chapter permission.
130 - User has both Role A & B.
131
132 User granted page permission.
133
134 #### test_30_child_inherit_override_allow
135
136 - Page permissions have inherit enabled.
137 - Chapter permissions has inherit disabled.
138 - Role A has entity deny chapter permission.
139 - Role A has entity allow page permission.
140 - User has Role A.
141
142 User granted page permission.
143
144 #### test_31_child_inherit_override_deny
145
146 - Page permissions have inherit enabled.
147 - Chapter permissions has inherit disabled.
148 - Role A has entity allow chapter permission.
149 - Role A has entity deny page permission.
150 - User has Role A.
151
152 User denied page permission.
153
154 #### test_40_multi_role_inherit_conflict_override_deny
155
156 - Page permissions have inherit enabled.
157 - Chapter permissions has inherit disabled.
158 - Role A has entity deny page permission.
159 - Role B has entity allow chapter permission.
160 - User has Role A & B.
161
162 User granted page permission.
163
164 #### test_41_multi_role_inherit_conflict_retain_allow
165
166 - Page permissions have inherit enabled.
167 - Chapter permissions has inherit disabled.
168 - Role A has entity allow page permission.
169 - Role B has entity deny chapter permission.
170 - User has Role A & B.
171
172 User granted page permission.
173
174 #### test_50_role_override_allow
175
176 - Page permissions have inherit enabled.
177 - Role A has no page role permission.
178 - Role A has entity allow page permission.
179 - User has Role A.
180
181 User granted page permission.
182
183 #### test_51_role_override_deny
184
185 - Page permissions have inherit enabled.
186 - Role A has no page-view-all role permission.
187 - Role A has entity deny page permission.
188 - User has Role A.
189
190 User denied page permission.
191
192 #### test_60_inherited_role_override_allow
193
194 - Page permissions have inherit enabled.
195 - Chapter permissions have inherit enabled.
196 - Role A has no page role permission.
197 - Role A has entity allow chapter permission.
198 - User has Role A.
199
200 User granted page permission.
201
202 #### test_61_inherited_role_override_deny
203
204 - Page permissions have inherit enabled.
205 - Chapter permissions have inherit enabled.
206 - Role A has page role permission.
207 - Role A has entity denied chapter permission.
208 - User has Role A.
209
210 User denied page permission.
211
212 #### test_62_inherited_role_override_deny_on_own
213
214 - Page permissions have inherit enabled.
215 - Chapter permissions have inherit enabled.
216 - Role A has own-page role permission.
217 - Role A has entity denied chapter permission.
218 - User has Role A.
219 - User owns Page.
220
221 User denied page permission.
222
223 #### test_70_multi_role_inheriting_deny
224
225 - Page permissions have inherit enabled.
226 - Role A has all page role permission.
227 - Role B has entity denied page permission.
228 - User has Role A and B.
229
230 User denied page permission.
231
232 #### test_80_multi_role_inherited_deny_via_parent
233
234 - Page permissions have inherit enabled.
235 - Chapter permissions have inherit enabled.
236 - Role A has all-pages role permission.
237 - Role B has entity denied chapter permission.
238 - User has Role A & B.
239
240 User denied page permission.
241
242 ---
243
244 ### Entity User Permissions
245
246 These are tests related to entity-level user-specific permission overrides.
247
248 #### test_01_explicit_allow
249
250 - Page permissions have inherit disabled.
251 - User has entity allow page permission.
252
253 User granted page permission.
254
255 #### test_02_explicit_deny
256
257 - Page permissions have inherit disabled.
258 - User has entity deny page permission.
259
260 User denied page permission.
261
262 #### test_10_allow_inherit
263
264 - Page permissions have inherit enabled.
265 - Chapter permissions have inherit disabled.
266 - User has entity allow chapter permission.
267
268 User granted page permission.
269
270 #### test_11_deny_inherit
271
272 - Page permissions have inherit enabled.
273 - Chapter permissions have inherit disabled.
274 - User has entity deny chapter permission.
275
276 User denied page permission.
277
278 #### test_12_allow_inherit_override
279
280 - Page permissions have inherit enabled.
281 - Chapter permissions have inherit disabled.
282 - User has entity deny chapter permission.
283 - User has entity allow page permission.
284
285 User granted page permission.
286
287 #### test_13_deny_inherit_override
288
289 - Page permissions have inherit enabled.
290 - Chapter permissions have inherit disabled.
291 - User has entity allow chapter permission.
292 - User has entity deny page permission.
293
294 User denied page permission.
295
296 #### test_40_entity_role_override_allow
297
298 - Page permissions have inherit disabled.
299 - User has entity allow page permission.
300 - Role A has entity deny page permission.
301 - User has role A.
302
303 User granted page permission.
304
305 #### test_41_entity_role_override_deny
306
307 - Page permissions have inherit disabled.
308 - User has entity deny page permission.
309 - Role A has entity allow page permission.
310 - User has role A.
311
312 User denied page permission.
313
314 #### test_42_entity_role_override_allow_via_inherit
315
316 - Page permissions have inherit enabled.
317 - Chapter permissions have inherit disabled.
318 - User has entity allow chapter permission.
319 - Role A has entity deny page permission.
320 - User has role A.
321
322 User granted page permission.
323
324 #### test_43_entity_role_override_deny_via_inherit
325
326 - Page permissions have inherit enabled.
327 - Chapter permissions have inherit disabled.
328 - User has entity deny chapter permission.
329 - Role A has entity allow page permission.
330 - User has role A.
331
332 User denied page permission.
333
334 #### test_50_role_override_allow
335
336 - Page permissions have inherit enabled.
337 - Role A has no page role permission.
338 - User has entity allow page permission.
339 - User has Role A.
340
341 User granted page permission.
342
343 #### test_51_role_override_deny
344
345 - Page permissions have inherit enabled.
346 - Role A has all-page role permission.
347 - User has entity deny page permission.
348 - User has Role A.
349
350 User denied page permission.
351
352 #### test_60_inherited_role_override_allow
353
354 - Page permissions have inherit enabled.
355 - Role A has no page role permission.
356 - User has entity allow chapter permission.
357 - User has Role A.
358
359 User granted page permission.
360
361 #### test_61_inherited_role_override_deny
362
363 - Page permissions have inherit enabled.
364 - Role A has view-all page role permission.
365 - User has entity deny chapter permission.
366 - User has Role A.
367
368 User denied page permission.
369
370 #### test_61_inherited_role_override_deny_on_own
371
372 - Page permissions have inherit enabled.
373 - Role A has view-own page role permission.
374 - User has entity deny chapter permission.
375 - User has Role A.
376 - User owns Page.
377
378 User denied page permission.
379
380 #### test_70_all_override_allow
381
382 - Page permissions have inherit enabled.
383 - Role A has no page role permission.
384 - Role A has entity deny page permission.
385 - User has entity allow page permission.
386 - User has Role A.
387
388 User granted page permission.
389
390 #### test_71_all_override_deny
391
392 - Page permissions have inherit enabled.
393 - Role A has page-all role permission.
394 - Role A has entity allow page permission.
395 - User has entity deny page permission.
396 - User has Role A.
397
398 User denied page permission.
399
400 #### test_80_inherited_all_override_allow
401
402 - Page permissions have inherit enabled.
403 - Role A has no page role permission.
404 - Role A has entity deny chapter permission.
405 - User has entity allow chapter permission.
406 - User has Role A.
407
408 User granted page permission.
409
410 #### test_81_inherited_all_override_deny
411
412 - Page permissions have inherit enabled.
413 - Role A has view-all page role permission.
414 - Role A has entity allow chapter permission.
415 - User has entity deny chapter permission.
416 - User has Role A.
417
418 User denied page permission.