Ejemplo n.º 1
0
        public void bug_010_permission(){
            ioc.finish();
            ioc.Container.setupSecurity();

            myapp.SetCurrentUser("ugmk\test2".toPrincipal("OPERATOR"));
            AclRule r1 = null;
            Assert.False((r1 =
                          new AclRule{
                                         RuleType = AclRuleType.Require,
                                         TokenMask = "/input",
                                         PrincipalMask = "r:UNDERWRITER",
                                         Permissions = "underwrite;"
                                     }
                         ).IsRequireMatched(new AclRequest
                                            {Principal = myapp.usr, Token = "/input", Permission = "underwrite"}));
            AclRule r2 = null;
            Assert.True((r2 =
                         new AclRule
                         {RuleType = AclRuleType.Require, TokenMask = "/input", PrincipalMask = "r:OPERATOR",})
                            .IsRequireMatched(new AclRequest
                                              {Principal = myapp.usr, Token = "/input", Permission = "underwrite"}));


            acl.repository.Add(r1);
            acl.repository.Add(r2);
            Assert.True(acl.get("/input", "access"));
            Assert.False(acl.get("/input", "underwrite"));
        }
        public void can_define_local_application_rules(){
            ioc.finish();
            ioc.Container.setupSecurity();
            ioc.Container.setupFilesystem();
            myapp.files.Write("~/mod/acl.config", mod);
            myapp.files.Write("~/usr/acl.config", usrRule);
            var appRules = ioc.get<IAclApplicationRuleProvider>();
            Assert.AreEqual(2, appRules.GetRules().Count());
            appRules.Clear();
            var content = "";
            Assert.AreNotEqual(usrRule, (content = myapp.files.Read("~/usr/acl.config")));
            Assert.AreEqual(mod, myapp.files.Read("~/mod/acl.config"));

            //check that mod file is not affected
            Assert.AreEqual(1, appRules.GetRules().Count());
            var rule = new AclRule{PrincipalMask = "test\\test3", TokenMask = "/test/test3"};
            appRules.Add(rule);
            CollectionAssert.Contains(appRules.GetRules(),rule);
            Assert.AreNotEqual(content, myapp.files.Read("~/usr/acl.config"));
            Assert.AreEqual(mod, myapp.files.Read("~/mod/acl.config"));
            appRules.GetRules().First(x => x.Equals(rule));
        }