@@ -464,4 +464,27 @@ public void testGlobMatchModel() {
464464 testEnforce (e , "u4" , "/foo" , "read" , false );
465465 testEnforce (e , "u4" , "foo" , "read" , true );
466466 }
467+
468+ @ Test
469+ public void testRbacWithResourceRolesAndDomain () {
470+ Enforcer e = new Enforcer ("examples/rbac_with_resource_roles_and_domain_model.conf" , "examples/rbac_with_resource_roles_and_domain_policy.csv" );
471+
472+ testDomainEnforce (e , "alice" , "domain1" , "data1" , "read" , true );
473+ testDomainEnforce (e , "alice" , "domain1" , "data1" , "write" , true );
474+ testDomainEnforce (e , "alice" , "domain1" , "data2" , "read" , false );
475+ testDomainEnforce (e , "alice" , "domain1" , "data2" , "write" , false );
476+ testDomainEnforce (e , "alice" , "domain2" , "data1" , "read" , false );
477+ testDomainEnforce (e , "alice" , "domain2" , "data1" , "write" , false );
478+ testDomainEnforce (e , "alice" , "domain2" , "data2" , "read" , false );
479+ testDomainEnforce (e , "alice" , "domain2" , "data2" , "write" , false );
480+
481+ testDomainEnforce (e , "bob" , "domain1" , "data2" , "read" , false );
482+ testDomainEnforce (e , "bob" , "domain1" , "data2" , "write" , false );
483+ testDomainEnforce (e , "bob" , "domain1" , "data1" , "read" , false );
484+ testDomainEnforce (e , "bob" , "domain1" , "data1" , "write" , false );
485+ testDomainEnforce (e , "bob" , "domain2" , "data1" , "read" , false );
486+ testDomainEnforce (e , "bob" , "domain2" , "data1" , "write" , false );
487+ testDomainEnforce (e , "bob" , "domain2" , "data2" , "read" , true );
488+ testDomainEnforce (e , "bob" , "domain2" , "data2" , "write" , true );
489+ }
467490}
0 commit comments