Ejemplo n.º 1
0
        public AgentProvisioner(string maName, string provisionedObjectType, ProvisionRule provisionRule, SimpleAttributeSetter[] simpleAttributeSetters, AdvancedAttributeSetter[] advancedAttributeSetters, string[] handledObjectTypes)
        {
            MAName = maName;
            ProvisionedObjectType    = provisionedObjectType;
            ProvisionRule            = provisionRule;
            _ruleSolver              = new SimpleRuleSolver(ProvisionRule);
            SimpleAttributeSetters   = simpleAttributeSetters;
            AdvancedAttributeSetters = advancedAttributeSetters;
            HandledObjectTypes       = handledObjectTypes;

            if (simpleAttributeSetters == null)
            {
                SimpleAttributeSetters = new SimpleAttributeSetter[0];
            }

            if (advancedAttributeSetters == null)
            {
                AdvancedAttributeSetters = new AdvancedAttributeSetter[0];
            }

            if (HandledObjectTypes == null)
            {
                HandledObjectTypes = new string[0];
            }
        }
Ejemplo n.º 2
0
        public void SaveRule(ProvisionRule rule)
        {
            using (var conn = new SqlConnection(ConnectionString))
            {
                var existingRule = conn.Query <ProvisionRule>("select * from ProvisionRule where Name = @Name", new { Name = rule.Name }).FirstOrDefault();

                if (existingRule == null)
                {
                    conn.Execute(
                        "insert into ProvisionRule (Name, SourceObject, TargetObject, Agent, Condition, RuleType) values (@Name, @SourceObject, @TargetObject, @Agent, @Condition, @RuleType)",
                        rule);
                }
                else
                {
                    conn.Execute(
                        "update ProvisionRule " +
                        "set SourceObject = @SourceObject, TargetObject = @TargetObject, Agent = @Agent, Condition = @Condition " +
                        "where Name = @Name",
                        rule);
                }

                conn.Execute("delete from InitialFlowRule where ProvisionRuleName = @ProvisionRuleName",
                             new { ProvisionRuleName = rule.Name });

                if (rule.InitialFlows != null)
                {
                    foreach (FlowRule initialFlow in rule.InitialFlows)
                    {
                        conn.Execute("insert into InitialFlowRule (ProvisionRuleName, FlowRuleName) values (@ProvisionRuleName, @FlowRuleName))"
                                     , new { ProvisionRuleName = rule.Name, FlowRuleName = initialFlow.Name });
                    }
                }
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        public void SaveRule(ProvisionRule rule)
        {
            var existingRule = _provRules.FirstOrDefault(provRule => provRule.Name == rule.Name);

            if (existingRule != null)
            {
                _provRules.Remove(existingRule);
            }

            _provRules.Add(rule);
        }
Ejemplo n.º 5
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));
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 7
0
        public void SaveRule(ProvisionRule rule)
        {
            using (var conn = new SQLiteConnection(ConfigHelper.ConnectionString))
            {
                var existingRule = conn.Query <FlowRule>("select * from ProvisionRule where Name = @Name", new { Name = rule.Name }).FirstOrDefault();

                if (existingRule == null)
                {
                    conn.Execute(
                        "insert into ProvisionRule ([Name],[SourceObject],[TargetObject],[Agent],[Condition],[Deprovision],[InitialFlows],[RuleType]) values (@Name, @SourceObject, @TargetObject, @Agent, @Condition, @Deprovision, @InitialFlows, @RuleType)"
                        ,
                        new { rule.Name, rule.SourceObject, rule.TargetObject, rule.Agent, rule.Condition, rule.Deprovision, rule.RuleType });
                }

                //TODO: save initial flows
            }
        }
Ejemplo n.º 8
0
 public SimpleRuleSolver(ProvisionRule rule)
 {
     Rule = rule;
 }
 public void Save(ProvisionRule provisionRule)
 {
     RuleRepos.ProvRules.SaveRule(provisionRule);
 }
Ejemplo n.º 10
0
 public void SaveRule(ProvisionRule rule)
 {
     throw new NotImplementedException();
 }