public async Task TestModifyPolicyAsync() { var e = new Enforcer(_testModelFixture.GetNewRbacTestModel()); e.BuildRoleLinks(); TestGetPolicy(e, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write"), AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write"))); await e.RemovePolicyAsync("alice", "data1", "read"); await e.RemovePolicyAsync("bob", "data2", "write"); await e.RemovePolicyAsync("alice", "data1", "read"); await e.AddPolicyAsync("eve", "data3", "read"); await e.AddPolicyAsync("eve", "data3", "read"); var rules = AsList( AsList("jack", "data4", "read"), AsList("jack", "data4", "read"), AsList("jack", "data4", "read"), AsList("katy", "data4", "write"), AsList("leyo", "data4", "read"), AsList("katy", "data4", "write"), AsList("katy", "data4", "write"), AsList("ham", "data4", "write") ); _ = await e.AddPoliciesAsync(rules); _ = await e.AddPoliciesAsync(rules); TestGetPolicy(e, AsList( AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write"), AsList("eve", "data3", "read"), AsList("jack", "data4", "read"), AsList("katy", "data4", "write"), AsList("leyo", "data4", "read"), AsList("ham", "data4", "write") ) ); _ = await e.RemovePoliciesAsync(rules); _ = await e.RemovePoliciesAsync(rules); var namedPolicy = AsList("eve", "data3", "read"); await e.RemoveNamedPolicyAsync("p", namedPolicy); await e.AddNamedPolicyAsync("p", namedPolicy); TestGetPolicy(e, AsList( AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write"), AsList("eve", "data3", "read"))); await e.RemoveFilteredPolicyAsync(1, "data2"); TestGetPolicy(e, AsList(AsList("eve", "data3", "read"))); }
public async Task TestAdapterAutoSaveAsync() { var adapter = new EFCoreAdapter <int, CasbinRule <int> >(_asyncContext); var enforcer = new Enforcer(_modelProvideFixture.GetNewRbacModel(), adapter); #region Load policy test TestGetPolicy(enforcer, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write"), AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 5); #endregion #region Add policy test await enforcer.AddPolicyAsync("alice", "data1", "write"); TestGetPolicy(enforcer, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write"), AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write"), AsList("alice", "data1", "write") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 6); #endregion #region Remove policy test await enforcer.RemovePolicyAsync("alice", "data1", "write"); TestGetPolicy(enforcer, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write"), AsList("data2_admin", "data2", "read"), AsList("data2_admin", "data2", "write") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 5); await enforcer.RemoveFilteredPolicyAsync(0, "data2_admin"); TestGetPolicy(enforcer, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 3); #endregion #region Batch APIs test await enforcer.AddPoliciesAsync(new [] { new List <string> { "alice", "data2", "write" }, new List <string> { "bob", "data1", "read" } }); TestGetPolicy(enforcer, AsList( AsList("alice", "data1", "read"), AsList("bob", "data2", "write"), AsList("alice", "data2", "write"), AsList("bob", "data1", "read") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 5); await enforcer.RemovePoliciesAsync(new [] { new List <string> { "alice", "data1", "read" }, new List <string> { "bob", "data2", "write" } }); TestGetPolicy(enforcer, AsList( AsList("alice", "data2", "write"), AsList("bob", "data1", "read") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 3); #endregion #region IFilteredAdapter test await enforcer.LoadFilteredPolicyAsync(new Filter { P = new List <string> { "bob", "data1", "read" }, }); TestGetPolicy(enforcer, AsList( AsList("bob", "data1", "read") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 3); await enforcer.LoadFilteredPolicyAsync(new Filter { P = new List <string> { "", "", "write" }, }); TestGetPolicy(enforcer, AsList( AsList("alice", "data2", "write") )); Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() is 3); #endregion }