public async Task TestMultipleGroupTypeModelInMemoryAsync() { var m = Model.Model.CreateDefault(); m.AddDef("r", "r", "sub, obj, act"); m.AddDef("p", "p", "sub, obj, act"); m.AddDef("g", "g", "_, _"); m.AddDef("g", "g2", "_, _"); m.AddDef("e", "e", "some(where (p.eft == allow))"); m.AddDef("m", "m", "g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act"); var e = new Enforcer(m); await e.AddPolicyAsync("alice", "data1", "read"); await e.AddPolicyAsync("bob", "data2", "write"); await e.AddPolicyAsync("data_group_admin", "data_group", "write"); await e.AddNamedGroupingPolicyAsync("g", "alice", "data_group_admin"); await e.AddNamedGroupingPolicyAsync("g2", "data1", "data_group"); await e.AddNamedGroupingPolicyAsync("g2", "data2", "data_group"); Assert.True(await e.EnforceAsync("alice", "data1", "read")); Assert.True(await e.EnforceAsync("alice", "data1", "write")); Assert.False(await e.EnforceAsync("alice", "data2", "read")); Assert.True(await e.EnforceAsync("alice", "data2", "write")); }
internal static async Task TestEnforceWithoutUsersAsync(Enforcer e, string obj, string act, bool res) { Assert.Equal(res, await e.EnforceAsync(obj, act)); }
internal static async Task TestEnforceAsync(Enforcer e, object sub, object obj, string act, bool res) { Assert.Equal(res, await e.EnforceAsync(sub, obj, act)); }