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)); }
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); }
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>); }
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)); }
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); }
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); }
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)); }