@@ -100,6 +100,36 @@ async def test_add_policy(self):
100
100
self .assertTrue (e .enforce ("alice" , "data2" , "read" ))
101
101
self .assertTrue (e .enforce ("alice" , "data2" , "write" ))
102
102
103
+ async def test_add_policies (self ):
104
+ """
105
+ test add_policies
106
+ """
107
+ e = await get_enforcer ()
108
+ adapter = e .get_adapter ()
109
+ self .assertTrue (e .enforce ("alice" , "data1" , "read" ))
110
+ self .assertFalse (e .enforce ("alice" , "data1" , "write" ))
111
+ self .assertFalse (e .enforce ("bob" , "data2" , "read" ))
112
+ self .assertTrue (e .enforce ("bob" , "data2" , "write" ))
113
+ self .assertTrue (e .enforce ("alice" , "data2" , "read" ))
114
+ self .assertTrue (e .enforce ("alice" , "data2" , "write" ))
115
+
116
+ # test add_policies after insert 2 rules
117
+ await adapter .add_policies (
118
+ sec = "p" ,
119
+ ptype = "p" ,
120
+ rules = (("alice" , "data1" , "write" ), ("bob" , "data2" , "read" )),
121
+ )
122
+
123
+ # reload policies from database
124
+ await e .load_policy ()
125
+
126
+ self .assertTrue (e .enforce ("alice" , "data1" , "read" ))
127
+ self .assertTrue (e .enforce ("alice" , "data1" , "write" ))
128
+ self .assertTrue (e .enforce ("bob" , "data2" , "read" ))
129
+ self .assertTrue (e .enforce ("bob" , "data2" , "write" ))
130
+ self .assertTrue (e .enforce ("alice" , "data2" , "read" ))
131
+ self .assertTrue (e .enforce ("alice" , "data2" , "write" ))
132
+
103
133
async def test_remove_policy (self ):
104
134
"""
105
135
test remove_policy
@@ -129,6 +159,38 @@ async def test_remove_policy(self):
129
159
self .assertFalse (e .enforce ("alice" , "data2" , "write" ))
130
160
self .assertTrue (result )
131
161
162
+ async def test_remove_policies (self ):
163
+ """
164
+ test remove_policies
165
+ """
166
+ e = await get_enforcer ()
167
+ adapter = e .get_adapter ()
168
+
169
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
170
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
171
+
172
+ await adapter .add_policies (
173
+ sec = "p" ,
174
+ ptype = "p" ,
175
+ rules = (("alice" , "data3" , "write" ), ("alice" , "data3" , "read" )),
176
+ )
177
+
178
+ await e .load_policy ()
179
+ self .assertTrue (e .enforce ("alice" , "data3" , "write" ))
180
+ self .assertTrue (e .enforce ("alice" , "data3" , "read" ))
181
+
182
+ # test remove_policies after delete delete 2 rules
183
+ result = await adapter .remove_policies (
184
+ sec = "p" ,
185
+ ptype = "p" ,
186
+ rules = (("alice" , "data3" , "read" ), ("alice" , "data3" , "write" )),
187
+ )
188
+
189
+ await e .load_policy ()
190
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
191
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
192
+ self .assertTrue (result )
193
+
132
194
async def test_remove_policy_no_remove_when_rule_is_incomplete (self ):
133
195
adapter = Adapter ("localhost" , 6379 )
134
196
e = casbin .AsyncEnforcer (get_fixture ("rbac_with_resources_roles.conf" ), adapter )
@@ -213,6 +275,121 @@ async def test_remove_filtered_policy(self):
213
275
self .assertFalse (e .enforce ("alice" , "data2" , "read" ))
214
276
self .assertFalse (e .enforce ("alice" , "data2" , "write" ))
215
277
278
+ async def test_update_policy (self ):
279
+ """
280
+ test update_policy
281
+ """
282
+ e = await get_enforcer ()
283
+ adapter = e .get_adapter ()
284
+ self .assertTrue (e .enforce ("alice" , "data1" , "read" ))
285
+ self .assertFalse (e .enforce ("alice" , "data1" , "write" ))
286
+ self .assertFalse (e .enforce ("bob" , "data2" , "read" ))
287
+ self .assertTrue (e .enforce ("bob" , "data2" , "write" ))
288
+ self .assertTrue (e .enforce ("alice" , "data2" , "read" ))
289
+ self .assertTrue (e .enforce ("alice" , "data2" , "write" ))
290
+
291
+ # test update_policy after update a rule
292
+ result = await adapter .update_policy (
293
+ sec = "p" ,
294
+ ptype = "p" ,
295
+ old_rule = ("bob" , "data2" , "write" ),
296
+ new_rule = ("bob" , "data1" , "write" ),
297
+ )
298
+
299
+ # reload policies from database
300
+ await e .load_policy ()
301
+
302
+ self .assertTrue (e .enforce ("alice" , "data1" , "read" ))
303
+ self .assertFalse (e .enforce ("alice" , "data1" , "write" ))
304
+ self .assertFalse (e .enforce ("bob" , "data2" , "read" ))
305
+ self .assertFalse (e .enforce ("bob" , "data2" , "write" ))
306
+ self .assertTrue (e .enforce ("bob" , "data1" , "write" ))
307
+ self .assertTrue (e .enforce ("alice" , "data2" , "read" ))
308
+ self .assertTrue (e .enforce ("alice" , "data2" , "write" ))
309
+ self .assertTrue (result )
310
+
311
+ async def test_update_policies (self ):
312
+ """
313
+ test update_policies
314
+ """
315
+ e = await get_enforcer ()
316
+ adapter = e .get_adapter ()
317
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
318
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
319
+
320
+ await adapter .add_policies (
321
+ sec = "p" ,
322
+ ptype = "p" ,
323
+ rules = (("alice" , "data3" , "write" ), ("alice" , "data3" , "read" )),
324
+ )
325
+
326
+ await e .load_policy ()
327
+ self .assertTrue (e .enforce ("alice" , "data3" , "write" ))
328
+ self .assertTrue (e .enforce ("alice" , "data3" , "read" ))
329
+
330
+ # test update_policies after update 2 rules
331
+ result = await adapter .update_policies (
332
+ sec = "p" ,
333
+ ptype = "p" ,
334
+ old_rules = (("alice" , "data3" , "write" ), ("alice" , "data3" , "read" )),
335
+ new_rules = (("alice" , "data4" , "write" ), ("alice" , "data4" , "read" )),
336
+ )
337
+
338
+ await e .load_policy ()
339
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
340
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
341
+ self .assertTrue (e .enforce ("alice" , "data4" , "write" ))
342
+ self .assertTrue (e .enforce ("alice" , "data4" , "read" ))
343
+ self .assertTrue (result )
344
+
345
+ async def test_update_filtered_policies (self ):
346
+ """
347
+ test update_filtered_policies
348
+ """
349
+ e = await get_enforcer ()
350
+ adapter = e .get_adapter ()
351
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
352
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
353
+
354
+ await adapter .add_policies (
355
+ sec = "p" ,
356
+ ptype = "p" ,
357
+ rules = (("alice" , "data3" , "write" ), ("alice" , "data3" , "read" )),
358
+ )
359
+
360
+ await e .load_policy ()
361
+ self .assertTrue (e .enforce ("alice" , "data3" , "write" ))
362
+ self .assertTrue (e .enforce ("alice" , "data3" , "read" ))
363
+
364
+ # test update_filtered_policies
365
+ result = await adapter .remove_filtered_policy (
366
+ "g" , "g" , 6 , "alice" , "data2_admin"
367
+ )
368
+ await e .load_policy ()
369
+ self .assertFalse (result )
370
+
371
+ result = await adapter .remove_filtered_policy (
372
+ "g" , "g" , 0 , * [f"v{ i } " for i in range (7 )]
373
+ )
374
+ await e .load_policy ()
375
+ self .assertFalse (result )
376
+
377
+ result = await adapter .update_filtered_policies (
378
+ "p" ,
379
+ "p" ,
380
+ (("alice" , "data4" , "write" ), ("alice" , "data4" , "read" )),
381
+ 0 ,
382
+ "alice" ,
383
+ "data3" ,
384
+ )
385
+
386
+ await e .load_policy ()
387
+ self .assertFalse (e .enforce ("alice" , "data3" , "write" ))
388
+ self .assertFalse (e .enforce ("alice" , "data3" , "read" ))
389
+ self .assertTrue (e .enforce ("alice" , "data4" , "write" ))
390
+ self .assertTrue (e .enforce ("alice" , "data4" , "read" ))
391
+ self .assertTrue (result )
392
+
216
393
def test_str (self ):
217
394
"""
218
395
test __str__ function
0 commit comments