Esempio n. 1
0
        public void Test_Adapter_AutoSave()
        {
            var      efAdapter = new CasbinDbAdapter(_context);
            Enforcer e         = new Enforcer("examples/rbac_model.conf", efAdapter);

            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write"),
                              AsList("data2_admin", "data2", "read"),
                              AsList("data2_admin", "data2", "write")
                              ));

            e.AddPolicy("alice", "data1", "write");
            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write"),
                              AsList("data2_admin", "data2", "read"),
                              AsList("data2_admin", "data2", "write"),
                              AsList("alice", "data1", "write")
                              ));

            e.RemovePolicy("alice", "data1", "write");
            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write"),
                              AsList("data2_admin", "data2", "read"),
                              AsList("data2_admin", "data2", "write")
                              ));

            e.RemoveFilteredPolicy(0, "data2_admin");
            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write")
                              ));
        }
        public CasbinController(DatabaseContext context)
        {
            _context = context;
            var efAdapter = new CasbinDbAdapter <int>(_context);

            _enforcer = new Enforcer("CasbinConfig/rbac_model.conf", efAdapter);
        }
        public async Task TestAdapterAutoSaveAsync()
        {
            var adapter  = new CasbinDbAdapter <int, CasbinRule <int> >(_asyncContext);
            var enforcer = new Enforcer(_modelProvideFixture.GetNewRbacModel(), adapter);

            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() == 5);

            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() == 6);

            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() == 5);

            await enforcer.RemoveFilteredPolicyAsync(0, "data2_admin");

            TestGetPolicy(enforcer, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write")
                              ));
            Assert.True(_asyncContext.CasbinRule.AsNoTracking().Count() == 3);
        }
Esempio n. 4
0
        public void Test_Adapter_AutoSave()
        {
            var      efAdapter = new CasbinDbAdapter(_contextMock.Object);
            Enforcer e         = new Enforcer("examples/rbac_model.conf", efAdapter);
            var      _context  = _contextMock.Object;

            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write"),
                              AsList("data2_admin", "data2", "read"),
                              AsList("data2_admin", "data2", "write")
                              ));
            Assert.True(_context.CasbinRule.Count() == 5);

            e.AddPolicy("alice", "data1", "write");
            TestGetPolicy(e, 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(_context.CasbinRule.Count() == 6);

            e.RemovePolicy("alice", "data1", "write");
            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write"),
                              AsList("data2_admin", "data2", "read"),
                              AsList("data2_admin", "data2", "write")
                              ));
            Assert.True(_context.CasbinRule.Count() == 5);

            e.RemoveFilteredPolicy(0, "data2_admin");
            TestGetPolicy(e, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write")
                              ));
            Assert.True(_context.CasbinRule.Count() == 3);
        }
Esempio n. 5
0
        public void TestAdapterAutoSave()
        {
            var adapter  = new CasbinDbAdapter <int>(_context);
            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(_context.CasbinRule.AsNoTracking().Count() is 5);
            #endregion

            #region Add policy test
            enforcer.AddPolicy("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(_context.CasbinRule.AsNoTracking().Count() is 6);
            #endregion

            #region Remove poliy test
            enforcer.RemovePolicy("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(_context.CasbinRule.AsNoTracking().Count() is 5);

            enforcer.RemoveFilteredPolicy(0, "data2_admin");
            TestGetPolicy(enforcer, AsList(
                              AsList("alice", "data1", "read"),
                              AsList("bob", "data2", "write")
                              ));
            Assert.True(_context.CasbinRule.AsNoTracking().Count() is 3);
            #endregion

            #region Batch APIs test
            enforcer.AddPolicies(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(_context.CasbinRule.AsNoTracking().Count() is 5);

            enforcer.RemovePolicies(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(_context.CasbinRule.AsNoTracking().Count() is 3);
            #endregion

            #region IFilteredAdapter test
            enforcer.LoadFilteredPolicy(new Filter
            {
                P = new List <string> {
                    "bob", "data1", "read"
                },
            });
            TestGetPolicy(enforcer, AsList(
                              AsList("bob", "data1", "read")
                              ));
            Assert.True(_context.CasbinRule.AsNoTracking().Count() is 3);

            enforcer.LoadFilteredPolicy(new Filter
            {
                P = new List <string> {
                    "", "", "write"
                },
            });
            TestGetPolicy(enforcer, AsList(
                              AsList("alice", "data2", "write")
                              ));
            Assert.True(_context.CasbinRule.AsNoTracking().Count() is 3);
            #endregion
        }