@@ -287,6 +287,51 @@ test('TestPriorityModel', async () => {
287
287
await testEnforce ( e , 'bob' , 'data2' , 'write' , false ) ;
288
288
} ) ;
289
289
290
+ test ( 'TestExplicitPriorityModel' , async ( ) => {
291
+ const e = await newEnforcer ( 'examples/priority_model_explicit.conf' , 'examples/priority_policy_explicit.csv' ) ;
292
+
293
+ await testEnforce ( e , 'alice' , 'data1' , 'write' , true ) ;
294
+ await testEnforce ( e , 'alice' , 'data1' , 'read' , true ) ;
295
+ await testEnforce ( e , 'bob' , 'data2' , 'read' , false ) ;
296
+ await testEnforce ( e , 'bob' , 'data2' , 'write' , true ) ;
297
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'read' , false ) ;
298
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'write' , false ) ;
299
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'read' , true ) ;
300
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'write' , true ) ;
301
+ } ) ;
302
+
303
+ test ( 'TestExplicitPriorityModelAddPolicy' , async ( ) => {
304
+ const e = await newEnforcer ( 'examples/priority_model_explicit.conf' , 'examples/priority_policy_explicit.csv' ) ;
305
+
306
+ await e . addPolicy ( '1' , 'bob' , 'data2' , 'write' , 'deny' ) ;
307
+
308
+ await testEnforce ( e , 'alice' , 'data1' , 'write' , true ) ;
309
+ await testEnforce ( e , 'alice' , 'data1' , 'read' , true ) ;
310
+ await testEnforce ( e , 'bob' , 'data2' , 'read' , false ) ;
311
+ await testEnforce ( e , 'bob' , 'data2' , 'write' , false ) ;
312
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'read' , false ) ;
313
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'write' , false ) ;
314
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'read' , true ) ;
315
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'write' , true ) ;
316
+ } ) ;
317
+
318
+ test ( 'TestExplicitPriorityModelUpdatePolicy' , async ( ) => {
319
+ const e = await newEnforcer ( 'examples/priority_model_explicit.conf' , 'examples/priority_policy_explicit_update.csv' ) ;
320
+
321
+ await e . updatePolicy ( [ '1' , 'bob' , 'data2' , 'write' , 'allow' ] , [ '1' , 'bob' , 'data2' , 'write' , 'deny' ] ) ;
322
+
323
+ await testEnforce ( e , 'alice' , 'data1' , 'write' , true ) ;
324
+ await testEnforce ( e , 'alice' , 'data1' , 'read' , true ) ;
325
+ await testEnforce ( e , 'bob' , 'data2' , 'read' , false ) ;
326
+ await testEnforce ( e , 'bob' , 'data2' , 'write' , false ) ;
327
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'read' , false ) ;
328
+ await testEnforce ( e , 'data1_deny_group' , 'data1' , 'write' , false ) ;
329
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'read' , true ) ;
330
+ await testEnforce ( e , 'data2_allow_group' , 'data2' , 'write' , true ) ;
331
+
332
+ await expect ( e . updatePolicy ( [ '1' , 'bob' , 'data2' , 'write' , 'allow' ] , [ '2999' , 'bob' , 'data2' , 'write' , 'deny' ] ) ) . resolves . toBe ( false ) ;
333
+ } ) ;
334
+
290
335
test ( 'TestPriorityModelIndeterminate' , async ( ) => {
291
336
const e = await newEnforcer ( 'examples/priority_model.conf' , 'examples/priority_indeterminate_policy.csv' ) ;
292
337
0 commit comments