]> BookStack Code Mirror - bookstack/blob - dev/docs/permission-scenario-testing.md
Merge branch 'development' into default-templates
[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 - Role entity permissions.
10 - Fallback 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 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.
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_71_multi_role_inheriting_deny_on_own
233
234 - Page permissions have inherit enabled.
235 - Role A has own page role permission.
236 - Role B has entity denied page permission.
237 - User has Role A and B.
238 - Use owns Page.
239
240 User denied page permission.
241
242 #### test_75_multi_role_inherited_deny_via_parent
243
244 - Page permissions have inherit enabled.
245 - Chapter permissions have inherit enabled.
246 - Role A has all-pages role permission.
247 - Role B has entity denied chapter permission.
248 - User has Role A & B.
249
250 User denied page permission.
251
252 #### test_76_multi_role_inherited_deny_via_parent_on_own
253
254 - Page permissions have inherit enabled.
255 - Chapter permissions have inherit enabled.
256 - Role A has own page role permission.
257 - Role B has entity denied chapter permission.
258 - User has Role A & B.
259
260 User denied page permission.
261
262 #### test_80_fallback_override_allow
263
264 - Page permissions have inherit disabled.
265 - Page fallback has entity deny permission.
266 - Role A has entity allow page permission.
267 - User has Role A.
268
269 User granted page permission.
270
271 #### test_81_fallback_override_deny
272
273 - Page permissions have inherit disabled.
274 - Page fallback has entity allow permission.
275 - Role A has entity deny page permission.
276 - User has Role A.
277
278 User denied page permission.
279
280 #### test_84_fallback_override_allow_multi_role
281
282 - Page permissions have inherit disabled.
283 - Page fallback has entity deny permission.
284 - Role A has entity allow page permission.
285 - Role B has no entity page permissions.
286 - User has Role A & B.
287
288 User granted page permission.
289
290 #### test_85_fallback_override_deny_multi_role
291
292 - Page permissions have inherit disabled.
293 - Page fallback has entity allow permission.
294 - Role A has entity deny page permission.
295 - Role B has no entity page permissions.
296 - User has Role A & B.
297
298 User denied page permission.
299
300 #### test_86_fallback_override_allow_inherit
301
302 - Chapter permissions have inherit disabled.
303 - Page permissions have inherit enabled.
304 - Chapter fallback has entity deny permission.
305 - Role A has entity allow chapter permission.
306 - User has Role A.
307
308 User granted page permission.
309
310 #### test_87_fallback_override_deny_inherit
311
312 - Chapter permissions have inherit disabled.
313 - Page permissions have inherit enabled.
314 - Chapter fallback has entity allow permission.
315 - Role A has entity deny chapter permission.
316 - User has Role A.
317
318 User denied page permission.
319
320 #### test_88_fallback_override_allow_multi_role_inherit
321
322 - Chapter permissions have inherit disabled.
323 - Page permissions have inherit enabled.
324 - Chapter fallback has entity deny permission.
325 - Role A has entity allow chapter permission.
326 - Role B has no entity chapter permissions.
327 - User has Role A & B.
328
329 User granted page permission.
330
331 #### test_89_fallback_override_deny_multi_role_inherit
332
333 - Chapter permissions have inherit disabled.
334 - Page permissions have inherit enabled.
335 - Chapter fallback has entity allow permission.
336 - Role A has entity deny chapter permission.
337 - Role B has no entity chapter permissions.
338 - User has Role A & B.
339
340 User denied page permission.
341
342 #### test_90_fallback_overrides_parent_entity_role_deny
343
344 - Chapter permissions have inherit disabled.
345 - Page permissions have inherit disabled.
346 - Chapter fallback has entity deny permission.
347 - Page fallback has entity deny permission.
348 - Role A has entity allow chapter permission.
349 - User has Role A.
350
351 User denied page permission.
352
353 #### test_91_fallback_overrides_parent_entity_role_inherit
354
355 - Book permissions have inherit disabled.
356 - Chapter permissions have inherit disabled. 
357 - Page permissions have inherit enabled.
358 - Book fallback has entity deny permission.
359 - Chapter fallback has entity deny permission.
360 - Role A has entity allow book permission.
361 - User has Role A.
362
363 User denied page permission.