Beispiel #1
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));
        }
Beispiel #2
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);
        }
        public void Test_flowrule_from_file()
        {
            CSEntry entry = new MockCsentry();

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

            var             loader = new FileFlowRuleRepo("Samples\\pyFlowRules.json");
            List <FlowRule> rules  = loader.GetAllRules();

            Assert.IsTrue(rules.Any(rule => rule.Name == "UpperCaser"));
            var upperCaseRule = rules.FirstOrDefault(rule => rule.Name == "UpperCaser");

            string uppercasedName = RuleEval.GetValue(upperCaseRule, entry);

            Assert.AreEqual("ESPEN ASKELADD", uppercasedName);

            var    lowerCaseRule  = rules.FirstOrDefault(rule => rule.Name == "LowerCaser");
            string lowerCasedName = RuleEval.GetValue(lowerCaseRule, entry);

            Assert.AreEqual("espen askeladd", lowerCasedName);
        }