public void TestSetPreDefinedConditionType()
        {
            IConditionGroup conditionGroup = new ConditionGroup();
            Assert.AreEqual("", conditionGroup[PreDefinedConditionTypeAttribute].Value);
            CustomAttributes.SetPreDefinedConditionType(conditionGroup, ConditionUnitFactory.PreDefinedConditionType.ContentInFileContext);
            Assert.AreEqual(Guid.Empty, conditionGroup[PreDefinedConditionTypeAttribute].Identifier);
            Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.ContentInFileContext), conditionGroup[PreDefinedConditionTypeAttribute].Value);
            CustomAttributes.SetPreDefinedConditionType(conditionGroup, ConditionUnitFactory.PreDefinedConditionType.ContentInFileName);
            Assert.AreEqual(Guid.Empty, conditionGroup[PreDefinedConditionTypeAttribute].Identifier);
            Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.ContentInFileName), conditionGroup[PreDefinedConditionTypeAttribute].Value);
            CustomAttributes.SetPreDefinedConditionType(conditionGroup, ConditionUnitFactory.PreDefinedConditionType.FileSize);
            Assert.AreEqual(Guid.Empty, conditionGroup[PreDefinedConditionTypeAttribute].Identifier);
            Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.FileSize), conditionGroup[PreDefinedConditionTypeAttribute].Value);
            try
            {
                CustomAttributes.SetPreDefinedConditionType(conditionGroup, ConditionUnitFactory.PreDefinedConditionType.Undefined);
                Assert.IsTrue(false);
            }
            catch (ArgumentException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception)
            {
                Assert.IsTrue(false);
            }

        }
        public void TestAddConditionGroupWithChildren()
        {
            IPolicyLanguage language = new PolicyLanguage(new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}"), "en");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            PolicyCatalogue policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            PolicySetObserver policySetObserver = new PolicySetObserver(policyCatalogue);

            Assert.AreEqual(0, policyCatalogue.Conditions.Count);
            Assert.AreEqual(0, policyCatalogue.ConditionGroups.Count);

            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{5823E98A-1F4D-44B9-BC0E-A538BD2C9262}"), new TranslateableLanguageItem("Test group"), ConditionLogic.AND, false);
            IConditionGroup subConditionGroup = new ConditionGroup(new Guid("{B87DF614-2400-4C1F-BEA8-3C2EB3964EAE}"), new TranslateableLanguageItem("Test sub group"), ConditionLogic.AND, false);
            ICondition condition = new Condition(new Guid("{98C73BC3-3E20-403C-8023-C91E2818355F}"), "TestClass", new TranslateableLanguageItem("This is a test"), OperatorType.Equals);
            subConditionGroup.Conditions.Add(condition);
            conditionGroup.Conditions.Add(subConditionGroup);

            policySetObserver.AddObject(conditionGroup);

            Assert.AreEqual(1, policyCatalogue.Conditions.Count);
            Assert.AreEqual(2, policyCatalogue.ConditionGroups.Count);
        }
        public void AddActionCondition(ConditionGroup conditionGroup, ActionGroup actionGroup, bool readOnly)
        {
            if ((null == conditionGroup) || (null == actionGroup))
                return;

            m_actionGroups.Add(new ActionConditionGroup(conditionGroup, actionGroup, readOnly));
        }
Exemple #4
0
		private void ApplyConditions()
		{
			IPolicySet policySet = Template.PolicySet.Data;
			IPolicy p2 = Template[TemplatePolicy.AlertPolicy];

			foreach (ContentRule contentRule in m_rules)
			{
				P5Policy policy = new P5Policy(policySet, Guid.NewGuid(), new TranslateableLanguageItem(contentRule.RuleName), PolicyStatus.Active);

				string ruleName = contentRule.RuleName;
				string rating = contentRule.Level;
				List<ContentCondition> conditions = contentRule.Conditions;

				ConditionGroup conditionGroup = new ConditionGroup(Guid.NewGuid(), new TranslateableLanguageItem(""), ConditionLogic.OR, false);
				foreach (ContentCondition contentCondition in conditions)
				{
					List<string> contexts = contentCondition.Contexts;
					string explanation = contentCondition.Explanation;
					string conditionName = contentCondition.Name;
					string regex = contentCondition.Regex;

					DataMethod dm = BuildRegex(regex, BuildContexts(contexts), BuildCurrentFile(), BuildFileTypes());
					Condition condition = BuildCondition(conditionName, rating, BuildDataLeft(dm), BuildDataRight());
					condition["Description"] = new TranslateableLanguageItem(Guid.NewGuid(), explanation);
					conditionGroup.Conditions.Add(condition);
				}
				policy["AuditLevel"] = new NonTranslateableLanguageItem("None");
				policy["blockOnException"] = new NonTranslateableLanguageItem("false");
				policy.Conditions.Add(conditionGroup);
				policy.Channels = p2.Channels;
				policySet.Policies.Add(policy);
			}
		}
        private IPolicyObjectCollection<IPolicyObject> BuildConditions()
        {
            DataMethod dataMethod = new DataMethod("Test method");
            dataMethod.Parameters.Add(new Parameter("FindSomething", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "missing")));
            dataMethod.Parameters.Add(new Parameter("RunSomething", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "just do it!")));
            DataSource dataSource = new DataSource("Testme.dll", "TestMe", dataMethod);

            ICondition subCondition = new Condition(new Guid("{6B7F6B0C-747A-4BD0-A65D-A1FB9E44FE7C}"), "ITestOne", OperatorType.GreaterThan);
            subCondition.DataLeft = new DataElement(new Guid("{4E2F50C5-D310-47A1-AE3A-621F5C77FA68}"), new TranslateableLanguageItem("Do testing stuff"), new TranslateableLanguageItem(""), DataType.Object, dataSource);
            IDataItem dataItem = DataItem.CreateDataItem(new TranslateableLanguageItem("Test data item"), DataType.Long, "10");
            subCondition.DataRight = new DataElement(new Guid("{EB56B397-954D-45C2-ADBA-263372A8B59F}"), new TranslateableLanguageItem("Test data item stored in data element"), new TranslateableLanguageItem(""), DataType.Long, dataItem);

            IConditionGroup subConditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("Test group two"), ConditionLogic.AND, false);
            subConditionGroup.Conditions.Add(subCondition);
            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{D64056E5-A19D-4B29-8F4A-A70337B42A19}"), new TranslateableLanguageItem("Test group one"), ConditionLogic.OR, true);
            conditionGroup.Conditions.Add(subConditionGroup);

            DataMethod dataMethod2 = new DataMethod("Test method two");
            dataMethod2.Parameters.Add(new Parameter("DoIt", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "You should do this")));
            dataMethod2.Parameters.Add(new Parameter("DontDoIt", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "You should not do this")));
            DataSource dataSource2 = new DataSource("Test2.dll", "JustDoIt", dataMethod2);

            ICondition condition = new Condition(new Guid("{A6F876B6-AD6D-4842-BC0D-4635D1EEE916}"), "ITestTwo", OperatorType.GreaterThanOrEqualTo);
            condition.DataLeft = new DataElement(new Guid("{7CED5561-FD8C-423C-838F-9440EDFE6758}"), new TranslateableLanguageItem("Some data source"), new TranslateableLanguageItem(""), DataType.Object, dataSource2);
            IDataItem dataItem2 = DataItem.CreateDataItem(new TranslateableLanguageItem("Test data item 2"), DataType.Long, "2");
            condition.DataRight = new DataElement(new Guid("{C6E38158-AB8C-496B-B97D-FD413680977D}"), new TranslateableLanguageItem("Test result2"), new TranslateableLanguageItem(""), DataType.Long, dataItem2);

            IPolicyObjectCollection<IPolicyObject> conditions = new PolicyObjectCollection<IPolicyObject>();
            conditions.Add(conditionGroup);
            conditions.Add(condition);

            return conditions;
        }
        private void ReadConditionGroup(XmlNode conditionGroupNode)
        {
            IPolicyObjectCollection<IPolicyObject> conditions = m_parent as IPolicyObjectCollection<IPolicyObject>;
            if (null == conditions)
            {
                conditions = (m_parent as IConditionGroup).Conditions;
            }

            if (null == conditions)
                throw new Workshare.Policy.Exceptions.ArgumentNullException("m_parent", "Expected the object to be of type IPolicyObjectCollection<IPolicyObject>");

            string guid = conditionGroupNode.Attributes.GetNamedItem("id").InnerText;
            Guid identifier = new Guid(guid);
            bool readOnly = PolicyUtilities.IsReadOnly(conditionGroupNode);
            IConditionGroup conditionGroup = new ConditionGroup(m_availableConditionGroups[identifier] as ConditionGroup, readOnly, false);
            conditionGroup.Parent = m_parent as IConditionGroup;

            string conditionGroupXpath = string.Format(CultureInfo.InvariantCulture, @"{0}/ConditionGroup[@id='{1}']",
                m_xpath.Substring(0, m_xpath.LastIndexOf("/")),
                identifier.ToString("B").ToUpper(CultureInfo.InvariantCulture));

            new XmlConditionGroupReader(m_reader, conditionGroup.Conditions, conditionGroupXpath).Read();

            conditions.Add(conditionGroup);
        }
Exemple #7
0
        public ConditionGroup(ConditionGroup conditionGroup, IPolicyObjectCollection<IPolicyObject> conditions)
            : base(conditionGroup)
		{            
            if (null == conditionGroup)
				throw new Workshare.Policy.Exceptions.ArgumentNullException("conditionGroup", "Input condition group is null");

            m_parent = conditionGroup.m_parent;
            m_logic = conditionGroup.Logic;
			m_exitOnFirstPass = conditionGroup.ExitOnFirstPass;
            m_conditions = new PolicyObjectCollection<IPolicyObject>(conditions as PolicyObjectCollection<IPolicyObject>);
		}
Exemple #8
0
        private void CopyConditionGroup(ConditionGroup conditionGroup)
        {            
            if (null == conditionGroup)
				throw new Workshare.Policy.Exceptions.ArgumentNullException("conditionGroup", "Input condition group is null");

            m_parent = conditionGroup.m_parent;
            m_logic = conditionGroup.Logic;
            m_exitOnFirstPass = conditionGroup.ExitOnFirstPass;
            m_policySetObserver = conditionGroup.PolicySetObserver;

            if (null != conditionGroup.Conditions)
            {
                m_conditions = new PolicyObjectCollection<IPolicyObject>(conditionGroup.Conditions as PolicyObjectCollection<IPolicyObject>);
                (m_conditions as PolicyObjectCollection<IPolicyObject>).PolicySetObserver = m_policySetObserver;
            }
        }
        public void TestAddConditionGroup()
        {
            IPolicyLanguage language = new PolicyLanguage(new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}"), "en");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            PolicyCatalogue policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            PolicySetObserver policySetObserver = new PolicySetObserver(policyCatalogue);

            Assert.AreEqual(0, policyCatalogue.ConditionGroups.Count);

            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{B87DF614-2400-4C1F-BEA8-3C2EB3964EAE}"), new TranslateableLanguageItem("Test group"), ConditionLogic.AND, false);
            policySetObserver.AddObject(conditionGroup);

            Assert.AreEqual(1, policyCatalogue.ConditionGroups.Count);
        }
        private void AddActionPostAddToChannel(out PolicyChannel channel, out PolicyCatalogue policyCatalogue)
        {
            IPolicyLanguage language = new PolicyLanguage(new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}"), "en");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            PolicySetObserver policySetObserver = new PolicySetObserver(policyCatalogue);

            Assert.AreEqual(0, policyCatalogue.Channels.Count);
            Assert.AreEqual(0, policyCatalogue.ActionGroups.Count);
            Assert.AreEqual(0, policyCatalogue.Actions.Count);
            Assert.AreEqual(0, policyCatalogue.LocationsCollection.Count);
            Assert.AreEqual(0, policyCatalogue.Locations.Count);

            channel = new PolicyChannel(new Guid("{0FE26539-7AAD-46DC-8D5B-9651CC00B9E4}"), new TranslateableLanguageItem("Test channel"), ChannelType.SMTP);
            policySetObserver.AddObject(channel);

            IRoutingItemCollection senders = new RoutingItemCollection(new Guid("{441FDCBF-B606-4325-8CD5-E829AD5303B9}"), "Test sources");
            senders.Add(new RoutingItem(new Guid("{D41A47E2-CC13-46FF-BE83-829625792576}"), "James Brown", "*****@*****.**"));
            senders.Add(new RoutingItem(new Guid("{B031DFE9-54E7-482B-8955-18CFB8F06A40}"), "Nat King Cole", "*****@*****.**"));
            IRoutingItemCollection recipients = new RoutingItemCollection(new Guid("{29C44E5C-5405-409F-8513-A99AE246536F}"), "Test destinations");
            recipients.Add(new RoutingItem(new Guid("{9E26C6A2-ABE2-427D-9D78-5B8547ADA8D2}"), "Jet Li", "*****@*****.**"));
            ActionMatrix actionMatrix = new ActionMatrix();
            ActionMatrixCell actionMatrixCell = new ActionMatrixCell(senders, recipients);

            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{9D065722-1106-4FC1-8D48-58733661B929}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            ActionGroup actionGroup = new ActionGroup(new Guid("{E2A16C4D-E112-4249-92B9-612732117809}"), new TranslateableLanguageItem("Test action group"), 1);
            Action action = new Action(new Guid("{A5FAA63E-4F25-456F-92F9-9BB465C18F1F}"), "Test.dll", "Do.It", RunAt.Client, false, 1); //TODO JE
            ActionConditionGroup actionConditionGroup = new ActionConditionGroup(conditionGroup, actionGroup, false);

            actionMatrixCell.ActionConditionGroups.Add(actionConditionGroup);
            actionGroup.Actions.Add(action);

            actionMatrix[senders, recipients] = actionMatrixCell;

            channel.Actions = actionMatrix;
        }
        public void TestAddActionPreAddToChannel()
        {
            IPolicyLanguage language = new PolicyLanguage(new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}"), "en");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            PolicyCatalogue policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            PolicySetObserver policySetObserver = new PolicySetObserver(policyCatalogue);

            Assert.AreEqual(0, policyCatalogue.Channels.Count);
            Assert.AreEqual(0, policyCatalogue.ActionGroups.Count);
            Assert.AreEqual(0, policyCatalogue.Actions.Count);
            Assert.AreEqual(0, policyCatalogue.LocationsCollection.Count);
            Assert.AreEqual(0, policyCatalogue.Locations.Count);

            PolicyChannel channel = new PolicyChannel(new Guid("{0FE26539-7AAD-46DC-8D5B-9651CC00B9E4}"), new TranslateableLanguageItem("Test channel"), ChannelType.SMTP);
            policySetObserver.AddObject(channel);

            IRoutingItemCollection senders = new RoutingItemCollection(new Guid("{441FDCBF-B606-4325-8CD5-E829AD5303B9}"), "Test sources");
            IRoutingItemCollection recipients = new RoutingItemCollection(new Guid("{29C44E5C-5405-409F-8513-A99AE246536F}"), "Test destinations");
            ActionMatrix actionMatrix = new ActionMatrix();
            channel.Actions = actionMatrix;

            ActionMatrixCell actionMatrixCell = new ActionMatrixCell(senders, recipients);
            actionMatrix[senders, recipients] = actionMatrixCell;          

            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{9D065722-1106-4FC1-8D48-58733661B929}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            ActionGroup actionGroup = new ActionGroup(new Guid("{E2A16C4D-E112-4249-92B9-612732117809}"), new TranslateableLanguageItem("Test action group"), 1);
            Action action = new Action(new Guid("{A5FAA63E-4F25-456F-92F9-9BB465C18F1F}"), "Test.dll", "Do.It", RunAt.Client, false, 1); //TODO JE
            ActionConditionGroup actionConditionGroup = new ActionConditionGroup(conditionGroup, actionGroup, false);
            
            actionMatrixCell.ActionConditionGroups.Add(actionConditionGroup);
            actionGroup.Actions.Add(action);

            Assert.AreEqual(1, policyCatalogue.Channels.Count, "Expected one channel");
            Assert.AreEqual(1, policyCatalogue.ActionGroups.Count, "Expected one action group");
            Assert.AreEqual(1, policyCatalogue.Actions.Count, "Expected one action");
            Assert.AreEqual(2, policyCatalogue.LocationsCollection.Count, "Expected two location groups");
            Assert.AreEqual(0, policyCatalogue.Locations.Count, "Expected no locations");
        }
 public void TestGetPreDefinedConditionType()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     Assert.AreEqual(ConditionUnitFactory.PreDefinedConditionType.Undefined, CustomAttributes.GetPreDefinedConditionType(conditionGroup));
     conditionGroup[PreDefinedConditionTypeAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.FileType));
     Assert.AreEqual(ConditionUnitFactory.PreDefinedConditionType.FileType, CustomAttributes.GetPreDefinedConditionType(conditionGroup));
     conditionGroup[PreDefinedConditionTypeAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.RegexInFileContext));
     Assert.AreEqual(ConditionUnitFactory.PreDefinedConditionType.RegexInFileContext, CustomAttributes.GetPreDefinedConditionType(conditionGroup));
     conditionGroup[PreDefinedConditionTypeAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.PreDefinedConditionType), ConditionUnitFactory.PreDefinedConditionType.RegexInFileName));
     Assert.AreEqual(ConditionUnitFactory.PreDefinedConditionType.RegexInFileName, CustomAttributes.GetPreDefinedConditionType(conditionGroup));
 }
Exemple #13
0
        public static void BuildActionMatrix(IPolicy policy, ActionMatrix actionMatrix, ActionGroup actionGroup)
        {
            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            policy.Conditions.Add(conditionGroup);

            PolicyCataloguesCache policyCataloguesCache = PolicyCataloguesCache.Instance();
            IRoutingItemCollection senders1 = policyCataloguesCache.LocationsCollections[new Guid("{A81631A6-6AA3-45F7-AADD-4853447E5BD6}")];
            IRoutingItemCollection senders2 = policyCataloguesCache.LocationsCollections[new Guid("{0DAACC5C-6167-42C7-AED0-55D1D9CC5096}")];
            IRoutingItemCollection recipients1 = policyCataloguesCache.LocationsCollections[new Guid("{FA13BE82-9EB1-407E-9DD5-8005F3E840E4}")];
            IRoutingItemCollection recipients2 = policyCataloguesCache.LocationsCollections[new Guid("{13A8EBE5-8B1E-4919-82E2-8A860DE4043E}")];

            ActionMatrixCell actionMatrixCell1 = new ActionMatrixCell(senders1, recipients1);
            actionMatrixCell1.AddActionCondition(conditionGroup, actionGroup, false);

            ActionMatrixCell actionMatrixCell2 = new ActionMatrixCell(senders1, recipients2);
            actionMatrixCell1.AddActionCondition(conditionGroup, actionGroup, false);

            actionMatrix[senders1, recipients1] = actionMatrixCell1;
            actionMatrix[senders1, recipients2] = actionMatrixCell2;

            ConditionGroup conditionGroup2 = new ConditionGroup(new Guid("{D64056E5-A19D-4B29-8F4A-A70337B42A19}"), new TranslateableLanguageItem("Test condition group 2"), ConditionLogic.AND, false);
            policy.Conditions.Add(conditionGroup2);
            ActionMatrixCell actionMatrixCell3 = new ActionMatrixCell(senders2, recipients2);
            actionMatrixCell3.AddActionCondition(conditionGroup2, actionGroup, false);

            ActionMatrixCell actionMatrixCell4 = new ActionMatrixCell(senders2, recipients1);
            actionMatrixCell4.AddActionCondition(conditionGroup2, actionGroup, false);

            actionMatrix[senders2, recipients2] = actionMatrixCell3;
            actionMatrix[senders2, recipients1] = actionMatrixCell4;
        }
 public void TestGetRiskRating()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     Assert.AreEqual(ConditionUnitFactory.RiskRatingType.Undefined, CustomAttributes.GetRiskRating(conditionGroup));
     conditionGroup[RiskRatingAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.High));
     Assert.AreEqual(ConditionUnitFactory.RiskRatingType.High, CustomAttributes.GetRiskRating(conditionGroup));
     conditionGroup[RiskRatingAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.Medium));
     Assert.AreEqual(ConditionUnitFactory.RiskRatingType.Medium, CustomAttributes.GetRiskRating(conditionGroup));
     conditionGroup[RiskRatingAttribute] = new NonTranslateableLanguageItem(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.Low));
     Assert.AreEqual(ConditionUnitFactory.RiskRatingType.Low, CustomAttributes.GetRiskRating(conditionGroup));
 }
        public void TestWriteConditionGroupWithParent()
        {
            string testCatalogue = m_testPath + "TestRealPolicyCatalogue.xml";
            string testLanguage = m_testPath + "TestRealPolicyLanguage.xml";

            XmlPolicyLanguageStore.Instance.AddLanguage(System.IO.File.ReadAllText(testLanguage));

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            PolicyCatalogue policyCatalogue = catalogueStore.AddPolicyCatalogue(System.IO.File.ReadAllText(testCatalogue));

            XmlStore store = new XmlStore();
            Store.IPolicyStoreWriter writer = store.Writer;
            Assert.IsNotNull(writer, "Expected a valid [IPolicyStoreWriter] writer");

            ObjectModel.PolicySet policySet = new ObjectModel.PolicySet(new Guid("{8FC9EB93-C376-4E96-B22E-71FAA848393D}"), new TranslateableLanguageItem("{D803727B-5C81-44CC-8BFC-9B68797AC6EB}"), store, policyCatalogue, false);
            P5Policy policy = new P5Policy(store, policySet, new Guid("{C0F6D4BB-CBF1-41FC-8A28-616D6FC1DC73}"), new TranslateableLanguageItem("{F0DD86A0-5D21-4784-88AF-C5321B5998F6}"), PolicyStatus.Active);

            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("{55FB0DE7-DCAF-47CF-A1F3-1F93E8AC1EE7}"), ConditionLogic.AND, false);
            writer.WritePolicySet(policySet);
            writer.WritePolicy(policySet, policy);
            writer.WriteConditionGroup(policySet, policy, conditionGroup);
            writer.Close();

            TestHelpers.CompareXml(m_testPath + "ExpectedWriteConditionGroupWithParent.xml", store.StoreXML);
        }
Exemple #16
0
        public static void BuildActionMatrix(IPolicy policy, ActionMatrix actionMatrix, ActionGroup actionGroup, IRoutingItemCollections senders, IRoutingItemCollections recipients)
        {
            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            policy.Conditions.Add(conditionGroup);

            // Just fill out each cell with the same condition group for now...
            int i = 0;
            foreach (IRoutingItemCollection senderCollection in senders)
            {
                foreach (IRoutingItemCollection recipientCollection in recipients)
                {
                    ActionMatrixCell cell = new ActionMatrixCell(senderCollection, recipientCollection);
                    cell.AddActionCondition(conditionGroup, actionGroup, false);
                    actionMatrix[senderCollection, recipientCollection] = cell;
                    i++;
                }
            }

        }
 public ActionConditionGroup(ConditionGroup conditionGroup, ActionGroup actionGroup, bool readOnly)
     : base(conditionGroup, readOnly, false)
 {
     m_actionGroup = actionGroup;
     SetActionGroupObserver();
 }
        public void TestCreatePolicySetConditionsMasterCatalogue()
        {
            string testCatalogue = m_testPath + "TestCreatePolicySetConditionsMasterCatalogue.xml";
            string languageFilename = m_testPath + "TestCreatePolicySetConditionsMasterCatalogueLanguage.xml";
            string policySetFilename = m_testPath + "TestCreatePolicySetConditionsMasterCataloguePolicySet.xml";

            XmlPolicyLanguageStore languageStore = XmlPolicyLanguageStore.Instance;
            languageStore.Reset();

            Guid languageId = new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}");
            IPolicyLanguage language = new PolicyLanguage(languageId, "en");
            language.DefaultLanguage = true;
            languageStore.AddLanguage(language);

            PolicyLanguageCache policyLanguageCache = PolicyLanguageCache.Instance;
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), "New catalogue");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{9465CA41-A0A1-40BD-BE26-E83E17D83148}"), "New policy set");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{08BC5764-4879-42ED-9AD8-15040C4ADEDE}"), "New policy");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            PolicyCatalogue policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            IPolicyStore policyStore = new XmlStore();
            IPolicySet policySet = new PolicySet(new Guid("{29EC30A5-1271-4306-89C8-5811172D901A}"), new TranslateableLanguageItem("{9465CA41-A0A1-40BD-BE26-E83E17D83148}"), policyStore, policyCatalogue, false);
            IPolicy newPolicy = new P5Policy(policySet, new Guid("{D257D4DC-4A12-438F-A32A-CF1CE4474441}"), new TranslateableLanguageItem("{08BC5764-4879-42ED-9AD8-15040C4ADEDE}"), PolicyStatus.Active);
            policySet.Policies.Add(newPolicy);

            // Create a condition group for the policy.
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{8EB7FF08-1DC8-4F11-9D55-AF47F83F843A}"), "Test condition group");
            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{B87DF614-2400-4C1F-BEA8-3C2EB3964EAE}"), new TranslateableLanguageItem("{8EB7FF08-1DC8-4F11-9D55-AF47F83F843A}"), ConditionLogic.AND, false);
            newPolicy.Conditions.Add(conditionGroup);

            // Create a condition for the condition group.
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{EC8E1E63-7097-4330-8130-5776D4FDF1ED}"), "Test condition");
            ICondition condition = new Condition(new Guid("{98C73BC3-3E20-403C-8023-C91E2818355F}"), "TestClass", new TranslateableLanguageItem("{EC8E1E63-7097-4330-8130-5776D4FDF1ED}"), OperatorType.Equals);
            conditionGroup.Conditions.Add(condition);

            // Create the data left for the condition data.
            DataMethod dataMethod = new DataMethod("ThisIsATest");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{BA56AB4C-43D0-465A-BE67-D8A569A1894C}"), "Test data item to the left");

            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{AB454A4B-1A0F-4864-9F46-3AAC8A34ACA5}"), "Test parameter data element");
            DataElement parameterDataElement = new DataElement(new Guid("{015035B7-1793-464D-AF69-030E9DC7151E}"), new TranslateableLanguageItem("{AB454A4B-1A0F-4864-9F46-3AAC8A34ACA5}"), new NonTranslateableLanguageItem(""), DataType.String, "Lets go dynamo");
            dataMethod.Parameters.Add(new Parameter("somethingTerrible", parameterDataElement));
            IDataSource dataSource = new DataSource("ThisIsADodgyAssembly.dll", "ItWantsToTakeOverYourComputer", dataMethod);

            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{79784B11-5FCC-47A8-A35E-C8399BE71C05}"), "Test data left");
            condition.DataLeft = new DataElement(new Guid("{454672AC-BCED-4DAB-813F-6CF14E6289C5}"), new TranslateableLanguageItem("{79784B11-5FCC-47A8-A35E-C8399BE71C05}"), new NonTranslateableLanguageItem(""), DataType.Object, dataSource);

            // Create the data right for the condition data.
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{BD40DDEE-B045-4D3B-8092-D596329230FE}"), "Test data item to the right");
            IDataItem dataRightDataItem = DataItem.CreateDataItem(new TranslateableLanguageItem("{BD40DDEE-B045-4D3B-8092-D596329230FE}"), DataType.String, "This is a test");

            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{8549333F-0A4D-4939-8A36-36FB0FF1C89A}"), "Test data right");
            condition.DataRight = new DataElement(new Guid("{4E2F50C5-D310-47A1-AE3A-621F5C77FA68}"), new TranslateableLanguageItem("{8549333F-0A4D-4939-8A36-36FB0FF1C89A}"), new NonTranslateableLanguageItem(""), DataType.String, dataRightDataItem);

            // Save everything
            IPolicyCatalogueWriter catalogueWriter = catalogueStore.GetWriter(policyCatalogue.Identifier, language.Identifier);
            catalogueWriter.WriteCatalogue(policyCatalogue);
            catalogueWriter.Close();

            policySet.Save();

            TestHelpers.CompareXml(policySetFilename, policyStore.XMLRepresentation);
            TestHelpers.CompareXml(testCatalogue, catalogueStore.GetStoreXML(policySet.MasterCatalogue.Identifier));
            TestHelpers.CompareXml(languageFilename, languageStore.GetXMLRepresentation(language.Identifier, language.Name.Value));
        }
 public void TestSetIgnore()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     Assert.AreEqual("", conditionGroup[IgnoreAttribute].Value);
     CustomAttributes.SetIgnore(conditionGroup, true);
     Assert.AreEqual(Guid.Empty, conditionGroup[IgnoreAttribute].Identifier);
     Assert.AreEqual(Boolean.TrueString, conditionGroup[IgnoreAttribute].Value);
     CustomAttributes.SetIgnore(conditionGroup, false);
     Assert.AreEqual(Guid.Empty, conditionGroup[IgnoreAttribute].Identifier);
     Assert.AreEqual(Boolean.FalseString, conditionGroup[IgnoreAttribute].Value);
 }
        public void TestActionExceptionHandlerWithOffline()
        {
            string testCatalogue = m_testPath + "TestActionExceptionHandlerWithOffline.Catalogue.xml";
            string testLanguage = m_testPath + "TestActionExceptionHandlerWithOffline.Language.xml";

            Guid languageId = XmlPolicyLanguageStore.Instance.AddLanguage(System.IO.File.ReadAllText(testLanguage));

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            PolicyCatalogue policyCatalogue = catalogueStore.AddPolicyCatalogue(System.IO.File.ReadAllText(testCatalogue));

            XmlStore store = new XmlStore();

            ObjectModel.PolicySet policySet = new ObjectModel.PolicySet(new Guid("{8FC9EB93-C376-4E96-B22E-71FAA848393D}"), new TranslateableLanguageItem("{D803727B-5C81-44CC-8BFC-9B68797AC6EB}"), store, policyCatalogue, false);
            P5Policy policy = new P5Policy(store, policySet, new Guid("{C0F6D4BB-CBF1-41FC-8A28-616D6FC1DC73}"), new TranslateableLanguageItem("{F0DD86A0-5D21-4784-88AF-C5321B5998F6}"), PolicyStatus.Active);

            IPolicyObjectCollection<IPolicyChannel> channels = new PolicyObjectCollection<IPolicyChannel>();
            PolicyChannel channel = new PolicyChannel(new Guid("{390F589A-24B0-4DF0-B750-D47EDD1FF0BE}"), new TranslateableLanguageItem("{463A0FAF-CE8C-470E-8077-A093B9350719}"), ChannelType.SMTP);

            // Build the ActionException cell for the action matrix.
            IActionMatrix actions = new ObjectModel.ActionMatrix();

            ActionExceptionCell actionExceptionCell = actions.ActionExceptionHandler as ObjectModel.ActionExceptionCell;
            Assert.IsNotNull(actionExceptionCell);

            OfflineActionMatrixCell offlineCell = actions.Offline as OfflineActionMatrixCell;

            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            ICondition subCondition = new Condition(new Guid("{6B7F6B0C-747A-4BD0-A65D-A1FB9E44FE7C}"), "ITestOne", OperatorType.GreaterThan);

            DataMethod dataMethod = new DataMethod("Test method");
            dataMethod.Parameters.Add(new Parameter("FindSomething", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "missing")));
            dataMethod.Parameters.Add(new Parameter("RunSomething", new DataElement(new TranslateableLanguageItem("string value"), new TranslateableLanguageItem(""), DataType.String, "just do it!")));
            DataSource dataSource = new DataSource("Testme.dll", "TestMe", dataMethod);
            subCondition.DataLeft = new DataElement(new Guid("{4E2F50C5-D310-47A1-AE3A-621F5C77FA68}"), new TranslateableLanguageItem("Do testing stuff"), new TranslateableLanguageItem(""), DataType.Object, dataSource);
            IDataItem dataItem = DataItem.CreateDataItem(new TranslateableLanguageItem("Test data item"), DataType.Long, "10");
            subCondition.DataRight = new DataElement(new Guid("{EB56B397-954D-45C2-ADBA-263372A8B59F}"), new TranslateableLanguageItem("Test data item stored in data element"), new TranslateableLanguageItem(""), DataType.Long, dataItem);
            conditionGroup.Conditions.Add(subCondition);

            policy.Conditions.Add(conditionGroup);
            actionExceptionCell.AddActionCondition(conditionGroup, BuildActionGroup(), false);

            channel.Actions = actions;
            channels.Add(channel);
            policy.Channels = channels;

            Store.IPolicyStoreWriter writer = store.Writer;
            Assert.IsNotNull(writer, "Expected a valid [IPolicyStoreWriter] writer");
            writer.WritePolicySet(policySet);
            writer.WritePolicy(policySet, policy);
            writer.WriteChildCollection(policySet, policy, policy.Name.Value, policy.Conditions);
            writer.WriteChildCollection(policySet, policy, policy.Name.Value, CollectionConverter.Convert<IPolicyChannel, IPolicyObject>(channels));
            writer.Close();

            string expectedPolicySetFile = m_testPath + "TestActionExceptionHandlerWithOffline.PolicySet.xml";
            TestHelpers.CompareXml(expectedPolicySetFile, store.StoreXML);
        }
        public void TestWriteHttpOfflineNoActions()
        {
            string testCatalogue = m_testPath + "TestHttpOfflineRouting.Catalogue.xml";
            string testLanguage = m_testPath + "TestHttpOfflineRouting.Language.xml";

            Guid languageId = XmlPolicyLanguageStore.Instance.AddLanguage(System.IO.File.ReadAllText(testLanguage));

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            PolicyCatalogue policyCatalogue = catalogueStore.AddPolicyCatalogue(System.IO.File.ReadAllText(testCatalogue));

            XmlStore store = new XmlStore();

            ObjectModel.PolicySet policySet = new ObjectModel.PolicySet(new Guid("{8FC9EB93-C376-4E96-B22E-71FAA848393D}"), new TranslateableLanguageItem("{D803727B-5C81-44CC-8BFC-9B68797AC6EB}"), store, policyCatalogue, false);
            P5Policy policy = new P5Policy(store, policySet, new Guid("{C0F6D4BB-CBF1-41FC-8A28-616D6FC1DC73}"), new TranslateableLanguageItem("{F0DD86A0-5D21-4784-88AF-C5321B5998F6}"), PolicyStatus.Active);

            IPolicyObjectCollection<IPolicyChannel> channels = new PolicyObjectCollection<IPolicyChannel>();
            PolicyChannel channel = new PolicyChannel(new Guid("{390F589A-24B0-4DF0-B750-D47EDD1FF0BE}"), new TranslateableLanguageItem("{463A0FAF-CE8C-470E-8077-A093B9350719}"), ChannelType.HTTP);

            // Build the offline cell for the action matrix.
            IActionMatrix actions = new ObjectModel.ActionMatrix();

            OfflineActionMatrixCell offlineCell = actions.Offline as OfflineActionMatrixCell;
            Assert.IsNotNull(offlineCell);

            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new NonTranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            policy.Conditions.Add(conditionGroup);
            offlineCell.AddActionCondition(conditionGroup, BuildActionGroupNoActions(), false);

            channel.Actions = actions;
            channels.Add(channel);
            policy.Channels = channels;

            Store.IPolicyStoreWriter writer = store.Writer;
            Assert.IsNotNull(writer, "Expected a valid [IPolicyStoreWriter] writer");
            writer.WritePolicySet(policySet);
            writer.WritePolicy(policySet, policy);
            writer.WriteChildCollection(policySet, policy, policy.Name.Value, CollectionConverter.Convert<IPolicyChannel, IPolicyObject>(channels));
            writer.Close();

            string expectedPolicySetFile = m_testPath + "TestHttpOfflineNoActions.PolicySet.xml";
            TestHelpers.CompareXml(expectedPolicySetFile, store.StoreXML);

            IPolicyCatalogueWriter catalogueWriter = catalogueStore.GetWriter(policyCatalogue.Identifier, languageId);
            catalogueWriter.WriteCatalogue(policySet.MasterCatalogue);
            catalogueWriter.Close();

            string expectedCatalogueFile = m_testPath + "TestHttpOfflineNoActions.Catalogue.xml";
            TestHelpers.CompareXml(expectedCatalogueFile, catalogueStore.GetStoreXML(policyCatalogue.Identifier));
        }
        public void TestConditionGroupCopyConstructors()
        {
            IConditionGroup conditionGroup = ReadConditionGroupAttributesHelper();
            Assert.AreEqual("This is my first custom property", conditionGroup["custom1"].Value);
            Assert.AreEqual("This is my second custom property", conditionGroup["custom2"].Value);

            ConditionGroup conditionGroupCopy = new ConditionGroup(conditionGroup as ConditionGroup);
            Assert.AreEqual("This is my first custom property", conditionGroupCopy["custom1"].Value);
            Assert.AreEqual("This is my second custom property", conditionGroupCopy["custom2"].Value);

            ConditionGroup conditionGroupCopy2 = new ConditionGroup(conditionGroup as ConditionGroup, false, false);
            Assert.AreEqual("This is my first custom property", conditionGroupCopy2["custom1"].Value);
            Assert.AreEqual("This is my second custom property", conditionGroupCopy2["custom2"].Value);

            IPolicyObjectCollection<IPolicyObject> conditions = new PolicyObjectCollection<IPolicyObject>();
            conditions.Add(new Condition(Guid.Empty, "Test condition", OperatorType.GreaterThan));
            ConditionGroup conditionGroupCopy3 = new ConditionGroup(conditionGroup as ConditionGroup, conditions);
            Assert.AreEqual("This is my first custom property", conditionGroupCopy3["custom1"].Value);
            Assert.AreEqual("This is my second custom property", conditionGroupCopy3["custom2"].Value);

            ConditionGroup conditionGroupCopy4 = new ConditionGroup(conditionGroup.Identifier, conditionGroup.Name, conditionGroup.Logic, conditionGroup.ExitOnFirstPass);
            Assert.AreEqual("", conditionGroupCopy4["custom1"].Value);
            Assert.AreEqual("", conditionGroupCopy4["custom2"].Value);
        }
        public void TestAddActionGroupMultipleTimes()
        {
            PolicyCatalogue policyCatalogue;
            PolicyChannel channel;
            AddActionPostAddToChannel(out channel, out policyCatalogue);

            IActionMatrix actionMatrix = channel.Actions;
            Dictionary<KeyValuePair<Guid, Guid>, IActionMatrixCell>.Enumerator enumerator = actionMatrix.GetEnumerator();
            enumerator.MoveNext();
            KeyValuePair<KeyValuePair<Guid, Guid>, IActionMatrixCell> currentKeyValuePair = enumerator.Current;
            IPolicyObjectCollection<IActionConditionGroup> actionConditionGroups = currentKeyValuePair.Value.ActionConditionGroups;
            Assert.AreEqual(1, actionConditionGroups.Count);
            IActionConditionGroup actionConditionGroup = actionConditionGroups[0];
            Assert.IsNotNull(actionConditionGroup, "Expected a valid action condition group");
            ActionGroup actionGroup = actionConditionGroup.ActionGroup as ActionGroup;
            Assert.AreEqual(1, actionGroup.Actions.Count, "Expected one action");
            IAction action = actionConditionGroup.ActionGroup.Actions[0];
            Assert.IsNotNull(action, "Expected a valid action");

            // Lets add another cell
            IRoutingItemCollection senders = new RoutingItemCollection(new Guid("{1B5380C6-EFD3-445E-80EE-0AFAB63B870A}"), "Another sources");
            IRoutingItemCollection recipients = new RoutingItemCollection(new Guid("{AE069B6D-2CD9-4EB1-8128-A28421D35FB1}"), "Another destinations");
            ActionMatrixCell actionMatrixCell = new ActionMatrixCell(senders, recipients);

            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{0E409581-5ED4-4563-933C-E6272F4521FD}"), new TranslateableLanguageItem("Another test condition group"), ConditionLogic.AND, false);

            ActionConditionGroup actionConditionGroup2 = new ActionConditionGroup(conditionGroup, actionGroup, false);

            actionMatrixCell.ActionConditionGroups.Add(actionConditionGroup2);

            actionMatrix[senders, recipients] = actionMatrixCell;

            Assert.AreEqual(1, policyCatalogue.Channels.Count, "Expected one channel");
            Assert.AreEqual(1, policyCatalogue.ActionGroups.Count, "Expected one action group");
            Assert.AreEqual(1, policyCatalogue.Actions.Count, "Expected one action");
            Assert.AreEqual(4, policyCatalogue.LocationsCollection.Count, "Expected two location groups");
            Assert.AreEqual(3, policyCatalogue.Locations.Count, "Expected three locations");
        }
 public void TestSetRiskRating()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     Assert.AreEqual("", conditionGroup[RiskRatingAttribute].Value);
     CustomAttributes.SetRiskRating(conditionGroup, ConditionUnitFactory.RiskRatingType.High);
     Assert.AreEqual(Guid.Empty, conditionGroup[RiskRatingAttribute].Identifier);
     Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.High), conditionGroup[RiskRatingAttribute].Value);
     CustomAttributes.SetRiskRating(conditionGroup, ConditionUnitFactory.RiskRatingType.Medium);
     Assert.AreEqual(Guid.Empty, conditionGroup[RiskRatingAttribute].Identifier);
     Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.Medium), conditionGroup[RiskRatingAttribute].Value);
     CustomAttributes.SetRiskRating(conditionGroup, ConditionUnitFactory.RiskRatingType.Low);
     Assert.AreEqual(Guid.Empty, conditionGroup[RiskRatingAttribute].Identifier);
     Assert.AreEqual(Enum.GetName(typeof(ConditionUnitFactory.RiskRatingType), ConditionUnitFactory.RiskRatingType.Low), conditionGroup[RiskRatingAttribute].Value);
     try
     {
         CustomAttributes.SetRiskRating(conditionGroup, ConditionUnitFactory.RiskRatingType.Undefined);
         Assert.IsTrue(false);
     }
     catch (ArgumentException)
     {
         Assert.IsTrue(true);
     }
     catch (Exception)
     {
         Assert.IsTrue(false);
     }
 }
 public void TestGetIgnore()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     conditionGroup[IgnoreAttribute] = new NonTranslateableLanguageItem(Boolean.TrueString);
     Assert.AreEqual(true, CustomAttributes.GetIgnore(conditionGroup));
     conditionGroup[IgnoreAttribute].Value = Boolean.FalseString;
     Assert.AreEqual(false, CustomAttributes.GetIgnore(conditionGroup));
 }
        public void TestWriteConditionGroup()
        {
            string testCatalogue = m_testPath + "TestRealPolicyCatalogue.xml";
            string testLanguage = m_testPath + "TestRealPolicyLanguage.xml";

            XmlPolicyLanguageStore.Instance.AddLanguage(System.IO.File.ReadAllText(testLanguage));

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.AddPolicyCatalogue(System.IO.File.ReadAllText(testCatalogue));

            XmlStore store = new XmlStore();
            Store.IPolicyStoreWriter writer = store.Writer;
            Assert.IsNotNull(writer, "Expected a valid [IPolicyStoreWriter] writer");

            IConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("Test condition group"), ConditionLogic.AND, false);
            writer.WriteConditionGroup(null, null, conditionGroup);
            writer.Close();

            TestHelpers.CompareXml(m_testPath + "ExpectedWriteConditionGroup.xml", store.StoreXML);
        }
        public void TestCreatePolicySetChannelsMasterCataloguePrepopulateRouting()
        {
            string testCatalogue = m_testPath + "TestCreatePolicySetChannelsMasterCatalogue.xml";
            string languageFilename = m_testPath + "TestCreatePolicySetChannelsMasterCatalogueLanguage.xml";
            string policySetFilename = m_testPath + "TestCreatePolicySetChannelsMasterCataloguePolicySet.xml";

            XmlPolicyLanguageStore languageStore = XmlPolicyLanguageStore.Instance;
            languageStore.Reset();

            Guid languageId = new Guid("{E8B22533-98EB-4D00-BDE4-406DC3E1858B}");
            PolicyLanguageCache.Instance.ActiveLanguageId = languageId;
            IPolicyLanguage language = new PolicyLanguage(languageId, "en");
            language.DefaultLanguage = true;
            languageStore.AddLanguage(language);

            PolicyLanguageCache policyLanguageCache = PolicyLanguageCache.Instance;
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), "New catalogue");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{9465CA41-A0A1-40BD-BE26-E83E17D83148}"), "New policy set");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{08BC5764-4879-42ED-9AD8-15040C4ADEDE}"), "New policy");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{39C06E29-074C-46C8-BE3D-F1CD92BB8D66}"), "Test channel");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{03005F4E-04FC-4287-B2A6-25F877D9C31B}"), "Test sources");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{3BF2C1D6-0F40-4A32-A311-6F65A5D271BD}"), "Test destinations");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{A8CEBEDF-92EA-4DCC-8053-08E5245ED84D}"), "Test routing table");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{86D8056D-BA38-44FA-B9BD-100CFB7113F8}"), "Test condition group");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{040C4E16-EE88-4B91-833F-8F30A536DAC6}"), "Test action group");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{F03E6CD1-98C0-4590-B789-907ECF90BEBF}"), "Test data element");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{6197CDBE-9F42-4A61-9369-238355BAB404}"), "Test data element display");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{E5C29C65-9600-42D9-8CD6-6638F40F9341}"), "Test data item");
            policyLanguageCache.SetLanguageItemText(languageId, new Guid("{463295F1-A5A2-4BB1-B029-7917AC75E9E6}"), "Test action");

            XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance;
            catalogueStore.Reset();
            PolicyCatalogue policyCatalogue = new PolicyCatalogue(new Guid("{AB5E2A43-01FB-4AA6-98FC-8F74BB0621CA}"), language.Identifier, new TranslateableLanguageItem("{B5C31A66-1B39-4CA7-BF02-AF271B5864F7}"), catalogueStore);
            catalogueStore.AddPolicyCatalogue(policyCatalogue);

            IPolicyStore policyStore = new XmlStore();
            IPolicySet policySet = new PolicySet(new Guid("{29EC30A5-1271-4306-89C8-5811172D901A}"), new TranslateableLanguageItem("{9465CA41-A0A1-40BD-BE26-E83E17D83148}"), policyStore, policyCatalogue, false);
            IPolicy newPolicy = new P5Policy(policySet, new Guid("{D257D4DC-4A12-438F-A32A-CF1CE4474441}"), new TranslateableLanguageItem("{08BC5764-4879-42ED-9AD8-15040C4ADEDE}"), PolicyStatus.Active);
            policySet.Policies.Add(newPolicy);

            // Create policy set channel
            PolicyChannel channel = new PolicyChannel(new Guid("{0FE26539-7AAD-46DC-8D5B-9651CC00B9E4}"), new TranslateableLanguageItem("{39C06E29-074C-46C8-BE3D-F1CD92BB8D66}"), ChannelType.SMTP);           

            // Create routing table
            RoutingTable routingTable = new RoutingTable(new Guid("{CDF0252C-3D5D-4AFB-98C2-89CF00FE2175}"), new TranslateableLanguageItem("{A8CEBEDF-92EA-4DCC-8053-08E5245ED84D}"), ChannelType.SMTP);
            
            IRoutingItemCollection senders = new RoutingItemCollection(new Guid("{441FDCBF-B606-4325-8CD5-E829AD5303B9}"), "{03005F4E-04FC-4287-B2A6-25F877D9C31B}");
            senders.Add(new RoutingItem(new Guid("{D41A47E2-CC13-46FF-BE83-829625792576}"), "James Brown", "*****@*****.**"));
            senders.Add(new RoutingItem(new Guid("{B031DFE9-54E7-482B-8955-18CFB8F06A40}"), "Nat King Cole", "*****@*****.**"));
            IRoutingItemCollection recipients = new RoutingItemCollection(new Guid("{29C44E5C-5405-409F-8513-A99AE246536F}"), "{3BF2C1D6-0F40-4A32-A311-6F65A5D271BD}");
            recipients.Add(new RoutingItem(new Guid("{9E26C6A2-ABE2-427D-9D78-5B8547ADA8D2}"), "Jet Li", "*****@*****.**"));
            
            routingTable.Sources.Add(senders);
            routingTable.Destinations.Add(recipients);

            // Assign routing table to channel
            channel.Routing = routingTable;

            // Create action matrix
            ActionMatrix actionMatrix = new ObjectModel.ActionMatrix(false);

            // Create an action matrix cell
            ActionMatrixCell actionMatrixCell = new ObjectModel.ActionMatrixCell(senders, recipients);

            // Populate the action matrix cell
            ConditionGroup conditionGroup = new ConditionGroup(new Guid("{661EDD6F-D750-493A-9932-E56C8C22E2CF}"), new TranslateableLanguageItem("{86D8056D-BA38-44FA-B9BD-100CFB7113F8}"), ConditionLogic.AND, false);
            ActionGroup actionGroup = new ObjectModel.ActionGroup(new Guid("{32D97853-2680-4B02-A391-22CAEE87B017}"), new TranslateableLanguageItem("{040C4E16-EE88-4B91-833F-8F30A536DAC6}"), 1);
            IActionConditionGroup actionConditionGroup = new ObjectModel.ActionConditionGroup(conditionGroup, actionGroup, false);

            ObjectModel.Action action = new ObjectModel.Action(new Guid("{5153B00E-7D30-4D37-90F9-75E55AA1B32B}"), new TranslateableLanguageItem("{463295F1-A5A2-4BB1-B029-7917AC75E9E6}"), "TestAction.dll", "Test.Action", RunAt.Client, false, 1); //TODO JE

            DataItem dataItem = DataItem.CreateDataItem(new TranslateableLanguageItem("{E5C29C65-9600-42D9-8CD6-6638F40F9341}"), DataType.String, "Not again, when will it ever end!");
            DataElement dataElement = new DataElement(new Guid("{39500989-0B41-4C4E-85DF-CCB4FBD5BEB8}"), new TranslateableLanguageItem("{F03E6CD1-98C0-4590-B789-907ECF90BEBF}"), new TranslateableLanguageItem("{6197CDBE-9F42-4A61-9369-238355BAB404}"), DataType.String, dataItem);
            action.DataElements.Add(dataElement);
            actionConditionGroup.ActionGroup.Actions.Add(action);

            // Assign the action condition group to the matrix cell
            actionMatrixCell.ActionConditionGroups.Add(actionConditionGroup);

            // Assign the action matrix cell to the action matrix
            actionMatrix[senders, recipients] = actionMatrixCell;

            // Assign action matrix to channel
            channel.Actions = actionMatrix;

            // Assign channel to policy
            newPolicy.Channels.Add(channel);

            // Save everything
            IPolicyCatalogueWriter catalogueWriter = catalogueStore.GetWriter(policyCatalogue.Identifier, language.Identifier);
            catalogueWriter.WriteCatalogue(policyCatalogue);
            catalogueWriter.Close();

            policySet.Save();

            TestHelpers.CompareXml(policySetFilename, policyStore.XMLRepresentation);

            IRoutingMatrixCell routingMatrixCell = routingTable[senders, recipients];

            string expectedCatalogueXml = System.IO.File.ReadAllText(testCatalogue);
            expectedCatalogueXml = expectedCatalogueXml.Replace("{0}", routingMatrixCell.Name.Identifier.ToString("B").ToUpper());
            expectedCatalogueXml = expectedCatalogueXml.Replace("{1}", routingMatrixCell.Description.Identifier.ToString("B").ToUpper());
            testCatalogue += ".tmp";

            System.IO.File.WriteAllText(testCatalogue, expectedCatalogueXml);

            TestHelpers.CompareXml(testCatalogue, catalogueStore.GetStoreXML(policySet.MasterCatalogue.Identifier));

            string expectedLanguageXml = System.IO.File.ReadAllText(languageFilename);
            expectedLanguageXml = expectedLanguageXml.Replace("{0}", routingMatrixCell.Name.Identifier.ToString("B").ToUpper());
            expectedLanguageXml = expectedLanguageXml.Replace("{1}", routingMatrixCell.Description.Identifier.ToString("B").ToUpper());
            languageFilename += ".tmp";
            System.IO.File.WriteAllText(languageFilename, expectedLanguageXml);

            TestHelpers.CompareXml(languageFilename, languageStore.GetXMLRepresentation(language.Identifier, language.Name.Value));
        }
 public void TestSetLongDescription()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     Assert.AreEqual("", conditionGroup[LongDescriptionAttribute].Value);
     CustomAttributes.SetLongDescription(conditionGroup, "This is a long description");
     Assert.AreNotEqual(Guid.Empty, conditionGroup[LongDescriptionAttribute].Identifier);
     Assert.AreEqual("This is a long description", conditionGroup[LongDescriptionAttribute].Value);
     Guid attributeGuid = conditionGroup[LongDescriptionAttribute].Identifier;
     CustomAttributes.SetLongDescription(conditionGroup, "This is another long description");
     Assert.AreEqual(attributeGuid, conditionGroup[LongDescriptionAttribute].Identifier);
     Assert.AreEqual("This is another long description", conditionGroup[LongDescriptionAttribute].Value);
 }
Exemple #29
0
 public static IActionConditionGroup ActionConditionGroupFactory()
 {
     //TODO: Do we need to suppport nested Action Groups, but for the intial beta 
     //Steve says we assume a single action group containing all actions
     ConditionGroup conditionGroup = new ConditionGroup(Guid.NewGuid(), new TranslateableLanguageItem(""), ConditionLogic.AND, false);
     ActionGroup actionGroup = new ActionGroup(Guid.NewGuid(), new TranslateableLanguageItem(""), 1);
     ActionConditionGroup actionConditionGroup = new ActionConditionGroup(conditionGroup, actionGroup, false);
     return actionConditionGroup;
 }
 public void TestGetLongDescription()
 {
     IConditionGroup conditionGroup = new ConditionGroup();
     conditionGroup[LongDescriptionAttribute] = new TranslateableLanguageItem("Test long description");
     Assert.AreEqual("Test long description", CustomAttributes.GetLongDescription(conditionGroup));
     conditionGroup[LongDescriptionAttribute].Value = "Another long description";
     Assert.AreEqual("Another long description", CustomAttributes.GetLongDescription(conditionGroup));
 }