]> BookStack Code Mirror - bookstack/blob - dev/docs/permission-scenario-testing.md
Added entity user permission scenarios
[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 TODO - Role & entity-role interplay
24 TODO - Role & entity-user interplay
25 TODO - Role content relations?
26 TODO - Role system permissions?
27
28 ### Content Role Permissions
29
30 These are tests related to item/entity permissions that are set only at a role level.
31
32 #### test_01_allow
33
34 - Role A has role all-page permission.
35 - User has Role A.
36
37 User granted page permission.
38
39 #### test_02_deny
40
41 - Role A has no page permission.
42 - User has Role A.
43
44 User denied page permission.
45
46 #### test_10_allow_on_own_with_own
47
48 - Role A has role own-page permission.
49 - User has Role A.
50 - User is owner of page.
51
52 User granted page permission.
53
54 #### test_11_deny_on_other_with_own
55
56 - Role A has role own-page permission.
57 - User has Role A.
58 - User is not owner of page.
59
60 User denied page permission.
61
62 #### test_20_multiple_role_conflicting_all
63
64 - Role A has role all-page permission.
65 - Role B has no page permission.
66 - User has Role A & B.
67
68 User granted page permission.
69
70 #### test_21_multiple_role_conflicting_own
71
72 - Role A has role own-page permission.
73 - Role B has no page permission.
74 - User has Role A & B.
75 - User is owner of page.
76
77 User granted page permission.
78
79 ---
80
81 ### Entity Role Permissions
82
83 These are tests related to entity-level role-specific permission overrides.
84
85 #### test_01_explicit_allow
86
87 - Page permissions have inherit disabled.
88 - Role A has entity allow page permission.
89 - User has Role A.
90
91 User granted page permission.
92
93 #### test_02_explicit_deny
94
95 - Page permissions have inherit disabled.
96 - Role A has entity deny page permission.
97 - User has Role A.
98
99 User denied page permission.
100
101 #### test_03_same_level_conflicting
102
103 - Page permissions have inherit disabled.
104 - Role A has entity allow page permission.
105 - Role B has entity deny page permission.
106 - User has both Role A & B.
107
108 User granted page permission. 
109 Explicit grant overrides entity deny at same level.
110
111 #### test_20_inherit_allow
112
113 - Page permissions have inherit enabled.
114 - Chapter permissions has inherit disabled.
115 - Role A has entity allow chapter permission.
116 - User has Role A.
117
118 User granted page permission.
119
120 #### test_21_inherit_deny
121
122 - Page permissions have inherit enabled.
123 - Chapter permissions has inherit disabled.
124 - Role A has entity deny chapter permission.
125 - User has Role A.
126
127 User denied page permission.
128
129 #### test_22_same_level_conflict_inherit 
130
131 - Page permissions have inherit enabled.
132 - Chapter permissions has inherit disabled.
133 - Role A has entity deny chapter permission.
134 - Role B has entity allow chapter permission.
135 - User has both Role A & B.
136
137 User granted page permission.
138
139 #### test_30_child_inherit_override_allow
140
141 - Page permissions have inherit enabled.
142 - Chapter permissions has inherit disabled.
143 - Role A has entity deny chapter permission.
144 - Role A has entity allow page permission.
145 - User has Role A.
146
147 User granted page permission.
148
149 #### test_31_child_inherit_override_deny
150
151 - Page permissions have inherit enabled.
152 - Chapter permissions has inherit disabled.
153 - Role A has entity allow chapter permission.
154 - Role A has entity deny page permission.
155 - User has Role A.
156
157 User denied page permission.
158
159 #### test_40_multi_role_inherit_conflict_override_deny
160
161 - Page permissions have inherit enabled.
162 - Chapter permissions has inherit disabled.
163 - Role A has entity deny page permission.
164 - Role B has entity allow chapter permission.
165 - User has Role A & B.
166
167 User granted page permission.
168
169 #### test_41_multi_role_inherit_conflict_retain_allow
170
171 - Page permissions have inherit enabled.
172 - Chapter permissions has inherit disabled.
173 - Role A has entity allow page permission.
174 - Role B has entity deny chapter permission.
175 - User has Role A & B.
176
177 User granted page permission.
178
179 ---
180
181 ### Entity User Permissions
182
183 These are tests related to entity-level user-specific permission overrides.
184
185 #### test_01_explicit_allow
186
187 - Page permissions have inherit disabled.
188 - User has entity allow page permission.
189
190 User granted page permission.
191
192 #### test_02_explicit_deny
193
194 - Page permissions have inherit disabled.
195 - User has entity deny page permission.
196
197 User denied page permission.
198
199 #### test_10_allow_inherit
200
201 - Page permissions have inherit enabled.
202 - Chapter permissions have inherit disabled.
203 - User has entity allow chapter permission.
204
205 User granted page permission.
206
207 #### test_11_deny_inherit
208
209 - Page permissions have inherit enabled.
210 - Chapter permissions have inherit disabled.
211 - User has entity deny chapter permission.
212
213 User denied page permission.
214
215 #### test_12_allow_inherit_override
216
217 - Page permissions have inherit enabled.
218 - Chapter permissions have inherit disabled.
219 - User has entity deny chapter permission.
220 - User has entity allow page permission.
221
222 User granted page permission.
223
224 #### test_13_deny_inherit_override
225
226 - Page permissions have inherit enabled.
227 - Chapter permissions have inherit disabled.
228 - User has entity allow chapter permission.
229 - User has entity deny page permission.
230
231 User denied page permission.
232
233 #### test_40_entity_role_override_allow
234
235 - Page permissions have inherit disabled.
236 - User has entity allow page permission.
237 - Role A has entity deny page permission.
238 - User has role A.
239
240 User granted page permission.
241
242 #### test_41_entity_role_override_deny
243
244 - Page permissions have inherit disabled.
245 - User has entity deny page permission.
246 - Role A has entity allow page permission.
247 - User has role A.
248
249 User denied page permission.
250
251 #### test_42_entity_role_override_allow_via_inherit
252
253 - Page permissions have inherit enabled.
254 - Chapter permissions have inherit disabled.
255 - User has entity allow chapter permission.
256 - Role A has entity deny page permission.
257 - User has role A.
258
259 User granted page permission.
260
261 #### test_43_entity_role_override_deny_via_inherit
262
263 - Page permissions have inherit enabled.
264 - Chapter permissions have inherit disabled.
265 - User has entity deny chapter permission.
266 - Role A has entity allow page permission.
267 - User has role A.
268
269 User denied page permission.