|
14 | 14 |
|
15 | 15 | package org.casbin.jcasbin.main;
|
16 | 16 |
|
| 17 | +import org.casbin.jcasbin.persist.file_adapter.FileAdapter; |
| 18 | +import org.casbin.jcasbin.rbac.DefaultRoleManager; |
| 19 | +import org.casbin.jcasbin.util.BuiltInFunctions; |
17 | 20 | import org.casbin.jcasbin.util.Util;
|
18 | 21 | import org.junit.Test;
|
19 | 22 |
|
@@ -87,6 +90,40 @@ public void testRoleAPI() {
|
87 | 90 | testEnforce(e, "bob", "data2", "write", true);
|
88 | 91 | }
|
89 | 92 |
|
| 93 | + @Test |
| 94 | + public void testRoleAPIWithRegex() { |
| 95 | + Enforcer e = new Enforcer("examples/rbac_model.conf"); |
| 96 | + e.setAdapter(new FileAdapter("examples/rbac_with_pattern_regex_policy.csv")); |
| 97 | + e.setRoleManager("g", new DefaultRoleManager(10, BuiltInFunctions::regexMatch, null)); |
| 98 | + e.loadPolicy(); |
| 99 | + |
| 100 | + testGetRoles(e, "root", asList("admin")); |
| 101 | + testGetRoles(e, "^E\\d+$", asList("employee")); |
| 102 | + testGetRoles(e, "E101", asList("^E\\d+$")); |
| 103 | + assertEquals(e.getImplicitRolesForUser("E101"), asList("^E\\d+$", "employee")); |
| 104 | + |
| 105 | + testEnforce(e, "E101", "data1", "read", true); |
| 106 | + testEnforce(e, "E101", "data1", "write", false); |
| 107 | + |
| 108 | + e.addRoleForUser("^E\\d+$", "admin"); |
| 109 | + |
| 110 | + testGetRoles(e, "^E\\d+$", asList("employee","admin")); |
| 111 | + testGetRoles(e, "E101", asList("^E\\d+$")); |
| 112 | + assertEquals(e.getImplicitRolesForUser("E101"), asList("^E\\d+$", "employee", "admin")); |
| 113 | + |
| 114 | + testEnforce(e, "E101", "data1", "read", true); |
| 115 | + testEnforce(e, "E101", "data1", "write", true); |
| 116 | + |
| 117 | + e.deleteRoleForUser("^E\\d+$", "admin"); |
| 118 | + |
| 119 | + testGetRoles(e, "^E\\d+$", asList("employee")); |
| 120 | + testGetRoles(e, "E101", asList("^E\\d+$")); |
| 121 | + assertEquals(e.getImplicitRolesForUser("E101"), asList("^E\\d+$", "employee")); |
| 122 | + |
| 123 | + testEnforce(e, "E101", "data1", "read", true); |
| 124 | + testEnforce(e, "E101", "data1", "write", false); |
| 125 | + } |
| 126 | + |
90 | 127 | @Test
|
91 | 128 | public void testGFunctionCache() {
|
92 | 129 | Enforcer e = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv");
|
|
0 commit comments