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); }
public void MockMventry_has_settable_attributes() { MVEntry mventry = new MockMventry(); mventry["uid"].Value = "testman"; mventry["fafa"].Value = "fafa"; Assert.AreEqual("testman", mventry["uid"].Value); }
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); }
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)); }
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)); }
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); }
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); }
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)); }
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); }