(t *testing.T)
| 22 | ) |
| 23 | |
| 24 | func Test_KeyMatchRbac(t *testing.T) { |
| 25 | conf := ` |
| 26 | [request_definition] |
| 27 | r = sub, obj, act |
| 28 | |
| 29 | [policy_definition] |
| 30 | p = sub, obj, act |
| 31 | |
| 32 | [role_definition] |
| 33 | g = _ , _ |
| 34 | |
| 35 | [policy_effect] |
| 36 | e = some(where (p.eft == allow)) |
| 37 | |
| 38 | [matchers] |
| 39 | m = g(r.sub, p.sub) && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act) |
| 40 | ` |
| 41 | line := ` |
| 42 | p, alice, /alice_data/*, (GET)|(POST) |
| 43 | p, alice, /alice_data/resource1, POST |
| 44 | p, data_group_admin, /admin/*, POST |
| 45 | p, data_group_admin, /bob_data/*, POST |
| 46 | g, alice, data_group_admin |
| 47 | ` |
| 48 | a := NewAdapter(line) |
| 49 | m := model.NewModel() |
| 50 | err := m.LoadModelFromText(conf) |
| 51 | if err != nil { |
| 52 | t.Errorf("load model from text failed: %v", err.Error()) |
| 53 | return |
| 54 | } |
| 55 | e, _ := casbin.NewEnforcer(m, a) |
| 56 | sub := "alice" |
| 57 | obj := "/alice_data/login" |
| 58 | act := "POST" |
| 59 | if res, _ := e.Enforce(sub, obj, act); !res { |
| 60 | t.Error("unexpected enforce result") |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | func Test_StringRbac(t *testing.T) { |
| 65 | conf := ` |
nothing calls this directly
no test coverage detected
searching dependent graphs…