예제 #1
0
        public void SimpleRuleSolver_solves_AttributeRule()
        {
            var mventry = new MockMventry();

            mventry["uid"].Value       = "espenaske";
            mventry["givenName"].Value = "per";


            var attributeRule = new AttributeRule()
            {
                IsPresent     = true,
                Attribute     = "uid",
                RequiredValue = "espenaske"
            };

            var attributeRule2 = new AttributeRule()
            {
                Attribute     = "givenName",
                RequiredValue = "per"
            };


            var provRule = new ProvisionRule();

            provRule.AttributeRules = new[] { attributeRule, attributeRule2 };

            var  ruleSolver = new SimpleRuleSolver(provRule);
            bool solved     = ruleSolver.PassesRule(mventry);

            Assert.IsTrue(solved);
        }
예제 #2
0
        public void MockMventry_has_settable_attributes()
        {
            MVEntry mventry = new MockMventry();

            mventry["uid"].Value  = "testman";
            mventry["fafa"].Value = "fafa";

            Assert.AreEqual("testman", mventry["uid"].Value);
        }
예제 #3
0
        public void AdvancedAttributeSetter_handles_multiple_attributes()
        {
            string       replaceFormat  = @"CN=[displayName],OU=Auto Users,OU=Employees,OU=[department],DC=TEST,DC=INT";
            const string expectedResult = @"CN=Test mannen,OU=Auto Users,OU=Employees,OU=Test Department,DC=TEST,DC=INT";

            var mventry = new MockMventry();

            mventry["displayName"].Value = "Test mannen";
            mventry["department"].Value  = "Test Department";

            string result = AttributeFormatter.FormatValue(mventry, replaceFormat);

            Assert.AreEqual(expectedResult, result);
        }
예제 #4
0
        public void SimpleRuleSolver_solves_ObjectRequirement()
        {
            var correctRule = new ProvisionRule();
            var wrongRule   = new ProvisionRule();
            var mventry     = new MockMventry("TestObj");

            wrongRule.RequiredObjects   = new[] { "WrongObj" };
            correctRule.RequiredObjects = new[] { "TestObj" };

            var ruleSolver = new SimpleRuleSolver(wrongRule);

            Assert.IsFalse(ruleSolver.PassesRule(mventry));
            ruleSolver = new SimpleRuleSolver(correctRule);
            Assert.IsTrue(ruleSolver.PassesRule(mventry));
        }
예제 #5
0
        public void ProvRules_python_rules_are_loaded_from_file()
        {
            MVEntry entry = new MockMventry("person");

            entry["FirstName"].Value = "per";
            entry["LastName"].Value  = "Askeladd";

            var loader = new FileProvRuleRepo("Samples\\pyProvRules.json");
            List <ProvisionRule> rules = loader.GetAllRules();

            var provRule = rules.FirstOrDefault();

            Assert.IsTrue(provRule.Agent == "TravelPortal MA");

            Assert.IsTrue(ProvisionEval.PassesCondition(provRule, entry));
        }
예제 #6
0
        public void SimpleRuleSolver_solves_AgentRequirement()
        {
            var mventry = new MockMventry();

            mventry.ConnectedMAs["HR MA"].Connectors.StartNewConnector("person");

            var provRule = new ProvisionRule();

            //provRule.AttributeRules = new[] { attributeRule };
            provRule.RequiredAgents = new [] { "HR MA" };

            var  ruleSolver = new SimpleRuleSolver(provRule);
            bool solved     = ruleSolver.PassesRule(mventry);

            Assert.IsTrue(solved);
        }
예제 #7
0
        public void MIM_attribs_work_in_function()
        {
            MVEntry entry = new MockMventry();

            entry["firstName"].Value = "espen";
            entry["lastName"].Value  = "askeladd";

            const string expression = "entry['firstName'].Value + ' ' + entry['lastName'].Value";
            string       script     = FuncCreator.GenerateFunction("entryTest", "entry", expression);

            Core.RegisterFlowScript(script);

            var    func = Core.GetFlowFunction("entryTest");
            string name = func(entry);

            Assert.AreEqual("espen askeladd", name);
        }
예제 #8
0
        public void ProvRules_handles_condition()
        {
            var provRule = new SimpleMIM.ProvisionExt.ProvisionRule()
            {
                Name         = "nunu",
                RuleType     = RuleType.Python,
                Agent        = "TestAgent",
                Condition    = "entry['FirstName'].Value == 'per'",
                SourceObject = "person",
                TargetObject = "HRMUser",
                InitialFlows = new[] { new FlowRule()
                                       {
                                           Name = "UpperCaser"
                                       } }
            };

            var flowRules = new FileFlowRuleRepo("Samples\\pyFlowRules.json").GetAllRules();

            RuleFactory.SetRules(new List <ProvisionRule>()
            {
                provRule
            }, flowRules);

            string script = FuncCreator.GenerateFunction(provRule.Name, "entry", provRule.Condition);

            Core.RegisterProvisionScript(script);
            var func = Core.GetProvisionFunction(provRule.Name);

            Assert.IsNotNull(func);

            var mventry = new MockMventry("person");

            mventry["FirstName"].Value = "per";

            Assert.IsTrue(ProvisionEval.PassesCondition(provRule, mventry));

            var mventryInvalid = new MockMventry("person");

            mventryInvalid["FirstName"].Value = "sitrus";

            Assert.IsFalse(ProvisionEval.PassesCondition(provRule, mventryInvalid));
        }
예제 #9
0
        public void ProvRules_initialflows_are_set()
        {
            var provRule = new SimpleMIM.ProvisionExt.ProvisionRule()
            {
                Name         = "nunu",
                RuleType     = RuleType.Python,
                Agent        = "TestAgent",
                Condition    = "entry['FirstName'].Value == per",
                SourceObject = "person",
                TargetObject = "HRMUser",
                InitialFlows = new [] { new FlowRule()
                                        {
                                            Name = "UpperCaser"
                                        } }
            };

            var flowRules = new FileFlowRuleRepo("Samples\\pyFlowRules.json").GetAllRules();

            RuleFactory.SetRules(new List <ProvisionRule>()
            {
                provRule
            }, flowRules);

            string script = FuncCreator.GenerateFunction(provRule.Name, "entry", provRule.Condition);

            Core.RegisterProvisionScript(script);
            var func = Core.GetProvisionFunction(provRule.Name);

            Assert.IsNotNull(func);

            var mventry = new MockMventry();

            mventry["FirstName"].Value = "Espen";
            mventry["LastName"].Value  = "Askeladd";

            var csentry = new MockCsentry();

            ProvisionEval.ApplyInitialFlows(provRule, csentry, mventry);

            Assert.AreEqual("ESPEN ASKELADD", csentry["DisplayName"].Value);
        }