public void TestEnforce_Construct_SystemNetMailMessage_CleanBody()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\SystemNetMailMessageRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\SystemNetMailMessageObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            string bodyText = "clean text";

            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("*****@*****.**", "[email protected],[email protected],[email protected]", "subject line", bodyText);
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestClean.doc"));

            MailMessage mailMessage = engine.Enforce(RunAtMode.Client, message, null);
            Assert.IsTrue(mailMessage.BodyEncoding == System.Text.Encoding.ASCII);
            Assert.IsTrue(mailMessage.From.Address == "*****@*****.**");
            Assert.IsTrue(mailMessage.To[0].Address == "*****@*****.**");
            Assert.IsTrue(mailMessage.To[1].Address == "*****@*****.**");
            Assert.IsTrue(mailMessage.To[2].Address == "*****@*****.**");
            Assert.IsTrue(mailMessage.Subject == "subject line"); 
            Assert.IsTrue(mailMessage.Body == "clean text");    
            Assert.IsTrue(mailMessage.Attachments.Count == 1);

            Assert.IsTrue(auditor.m_MailMessage.Attachments.Length == 2);
            Assert.IsTrue(auditor.m_MailMessage.Attachments[0].Name == "TestClean.doc");
            Assert.IsTrue(auditor.m_MailMessage.Attachments[1].Name == "subject line");
        }
        public void TestAuditMessageOnlyCalledOnce()
        {
            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore();

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("*****@*****.**", "[email protected],[email protected],[email protected]", "subject line", "body");
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestPrivacy.doc"));
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestProfanity.doc"));
            engine.Monitor(Workshare.Policy.Interfaces.RunAtMode.Both, message, null);
            Assert.AreEqual(1, auditor.m_AuditCalledCount);
            Assert.IsTrue(auditor.m_AuditMessageCalled);
            Assert.IsTrue(auditor.m_MailMessage.Attachments.Length == 3);
        }
        public void TestProcessActions_MetaDataViolation()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessActionsRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessActionsObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

           // string bodyText = "This is a safe email";

            List<IFile> files = new List<IFile>();
            files.Add(new Workshare.Policy.Engine.File(@"P:\projects\Hygiene\src\TestDocuments\Dirty.doc", "Dirty"));
            
            List<FileRouting> fileRoutings = engine.ProcessFiles(RunAtMode.Client, files);

            string from = @"*****@*****.**";
            List<string> to = new List<string>();
            to.Add(@"*****@*****.**");
            to.Add(@"*****@*****.**");

            List<string> cc = new List<string>();
            List<string> bcc = new List<string>();

            List<FileActions> fileActions = engine.ProcessRoutings(RunAtMode.Client, fileRoutings, from, to.ToArray(), cc.ToArray(), bcc.ToArray());
            Assert.IsTrue(fileActions[0].ActionObjects[0].Name == "HD_Remove");
            List<IFile> processedFiles = engine.ProcessActions(RunAtMode.Client, fileActions);
            Assert.IsTrue(processedFiles.Count == 1);
        }
        public void TestProcessFiles_NoViolations()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessFilesRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessFilesObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            List<IFile> files = new List<IFile>();
            files.Add(new Workshare.Policy.Engine.File(@"P:\projects\Hygiene\src\TestDocuments\TestClean.doc", "TestCleanDocument"));

            List<FileRouting> fileRoutings = engine.ProcessFiles(RunAtMode.Client, files);
            Assert.IsTrue(fileRoutings.Count == 1);
            Assert.IsTrue(fileRoutings[0].RoutingIds.Count == 0);

            DocumentEntity firstDocument = fileRoutings[0].DocumentEntity;

            Assert.IsTrue(firstDocument.DocumentEvents[0].ConditionRules[0].ConditionRuleName == "Privacy");
            Assert.IsFalse(firstDocument.DocumentEvents[0].ConditionRules[0].Violated);
            Assert.IsTrue(firstDocument.DocumentEvents[0].ConditionRules[1].ConditionRuleName == "Profanity");
            Assert.IsFalse(firstDocument.DocumentEvents[0].ConditionRules[1].Violated);
        }
        public void TestProcessFiles_MultipleViolations()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessFilesRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessFilesObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            List<IFile> files = new List<IFile>();
            files.Add(new Workshare.Policy.Engine.File(@"P:\projects\Hygiene\src\TestDocuments\TestProfanity.doc", "Profanity doc"));
            files.Add(new Workshare.Policy.Engine.File(@"P:\projects\Hygiene\src\TestDocuments\TestPrivacy.doc", "Privacy doc"));

            List<FileRouting> fileRoutings = engine.ProcessFiles(RunAtMode.Client, files);
            Assert.IsTrue(fileRoutings.Count == 2);
            
            Assert.IsTrue(fileRoutings[0].RoutingIds[0].RoutingId == "Profanity_Routing");
            Assert.IsTrue(fileRoutings[1].RoutingIds[0].RoutingId == "Privacy_Routing");

            DocumentEntity firstDocument = fileRoutings[0].DocumentEntity;

            Assert.IsTrue(firstDocument.DocumentEvents[0].ConditionRules[0].ConditionRuleName == "Privacy");
            Assert.IsFalse(firstDocument.DocumentEvents[0].ConditionRules[0].Violated);
            Assert.IsTrue(firstDocument.DocumentEvents[0].ConditionRules[1].ConditionRuleName == "Profanity");
            Assert.IsTrue(firstDocument.DocumentEvents[0].ConditionRules[1].Violated);
            ConditionEntity[] profanityConditions = firstDocument.DocumentEvents[0].ConditionRules[1].Conditions;
            Assert.IsTrue(profanityConditions[0].ConditionData == "The Seven Dirty Words! and some...");
            Assert.IsTrue(profanityConditions[0].ConditionRating == "Low");
            Assert.IsTrue(profanityConditions[0].ConditionType == "CONDITION");
            Assert.IsTrue(profanityConditions[0].ConditionViolated == true);

            ConditionPropertyEntity[] condtionProperties = profanityConditions[0].ConditionProperties;
            Assert.IsTrue(condtionProperties.Length == 5);
            
            DocumentEntity secondDocument = fileRoutings[1].DocumentEntity;
            Assert.IsTrue(secondDocument.DocumentEvents[0].ConditionRules[0].ConditionRuleName == "Privacy");
            Assert.IsTrue(secondDocument.DocumentEvents[0].ConditionRules[0].Violated);
            Assert.IsTrue(secondDocument.DocumentEvents[0].ConditionRules[1].ConditionRuleName == "Profanity");
            Assert.IsFalse(secondDocument.DocumentEvents[0].ConditionRules[1].Violated);
        }
        public void TestProcessMessageContent_MultipleViolations()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessMessageContentRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessMessageContentObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            string bodyText = "4408 0412 3456 7890 piss";

            List<string> attachmentNames = new List<string>();
            attachmentNames.Add("attachment1");
            attachmentNames.Add("F**k");
            attachmentNames.Add("c**t");

            FileRouting fileRouting = engine.ProcessMessageContent(RunAtMode.Client, "Random subject", bodyText, attachmentNames);

            EventEntity documentEvent = fileRouting.DocumentEntity.DocumentEvents[0];
            ConditionRuleEntity privacyRule = documentEvent.ConditionRules[0];

            Assert.IsTrue(privacyRule.ConditionRuleName == "Privacy");
            Assert.IsTrue(privacyRule.Violated == true);
            Assert.IsTrue(privacyRule.Conditions[0].ConditionData == "Possible Social Security Number");
            Assert.IsTrue(privacyRule.Conditions[0].ConditionViolated == false);
            Assert.IsTrue(privacyRule.Conditions[1].ConditionData == "Possible Credit Card Number");
            Assert.IsTrue(privacyRule.Conditions[1].ConditionViolated == true);
            Assert.IsTrue(privacyRule.Conditions[1].ConditionProperties[0].Name == "Body");
            Assert.IsTrue(privacyRule.Conditions[1].ConditionProperties[0].PropertyValue == "4408 0412 3456 7890");

            ConditionRuleEntity profanityRule = documentEvent.ConditionRules[1];

            Assert.IsTrue(profanityRule.ConditionRuleName == "Profanity");
            Assert.IsTrue(profanityRule.Violated == true);
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[0].Name == "Body");
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[0].PropertyValue == "piss");
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[1].Name == "Attachments");
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[1].PropertyValue == "F**k");
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[2].Name == "Attachments");
            Assert.IsTrue(profanityRule.Conditions[0].ConditionProperties[2].PropertyValue == "c**t");

            Assert.IsTrue(profanityRule.Conditions[0].ConditionData == "The Seven Dirty Words! and some...");
        }
        public void TestProcessMessageContent_NoViolation()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessMessageContentRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\TestProcessMessageContentObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            string bodyText = "Body Text with no violation";

            List<string> attachmentNames = new List<string>();
            attachmentNames.Add("attachment1");
            attachmentNames.Add("attachment2");
            attachmentNames.Add("attachment3");

            FileRouting fileRouting = engine.ProcessMessageContent(RunAtMode.Client, "Random subject", bodyText, attachmentNames);

            EventEntity documentEvent = fileRouting.DocumentEntity.DocumentEvents[0];
            ConditionRuleEntity privacyRule = documentEvent.ConditionRules[0];
            ConditionRuleEntity profanityRule = documentEvent.ConditionRules[1];

            Assert.IsTrue(privacyRule.ConditionRuleName == "Privacy");
            Assert.IsFalse(privacyRule.Violated);
            Assert.IsTrue(profanityRule.ConditionRuleName == "Profanity");
            Assert.IsFalse(profanityRule.Violated);
        }
        public void TestMailMessage_AttachmentRemoved_ProfanityViolation()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\rsa_server_rules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\rsa_server_objects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            System.Net.Mail.MailMessage profanityMessage = new System.Net.Mail.MailMessage("*****@*****.**", "[email protected],[email protected],[email protected]", "random subject line", "random body text");
            profanityMessage.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestProfanity.doc"));

            System.Net.Mail.MailMessage mailMessage = engine.Enforce(RunAtMode.Client, profanityMessage, null);
            Assert.IsTrue(mailMessage.Attachments.Count == 0);

            MailMessageEntity msgEntity = auditor.m_MailMessage;

            Assert.IsTrue(msgEntity.Attachments.Length == 2);
            ActionEntity actionEntity = msgEntity.Attachments[0].DocumentEvents[0].ConditionRules[0].EventActions[0];
            Assert.IsTrue(actionEntity.ActionData == "Server_Block");
        }
        //[Ignore("TODO: Fix this. Skipped by PW - test fails becaise ActionEntity action2 does not exist in ConditionRule")]
        public void TestEnforce_MailMessageEntity_ActionProperties()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\EnforceRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\EnforceObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            string bodyText = "4408 0412 3456 7890";

            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("*****@*****.**", "[email protected],[email protected],[email protected]", "subject line", bodyText);
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestPrivacy.doc"));
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestProfanity.doc"));

            engine.Enforce(RunAtMode.Client, message, null);
            MailMessageEntity mailMessage = auditor.m_MailMessage;

            ActionEntity action1 = mailMessage.Attachments[0].DocumentEvents[0].ConditionRules[0].EventActions[0];
            Assert.IsTrue(action1.ActionProcessed);
            Assert.IsTrue(action1.ActionProperties.Length == 3);
            Assert.IsTrue(action1.ActionProperties[0].Name == "Unblock");
            Assert.IsTrue(action1.ActionProperties[0].PropertyValue == "False");
            Assert.IsTrue(action1.ActionProperties[1].Name == "AllowOverride");
            Assert.IsTrue(action1.ActionProperties[1].PropertyValue == "True");
            Assert.IsTrue(action1.ActionProperties[2].Name == "FileSelected");
            Assert.IsTrue(action1.ActionProperties[2].PropertyValue == "False");

            ActionEntity action3 = mailMessage.Attachments[2].DocumentEvents[0].ConditionRules[0].EventActions[0];
            Assert.IsTrue(action3.ActionProcessed);
            Assert.IsTrue(action3.ActionProperties.Length == 3);
            Assert.IsTrue(action1.ActionProperties[0].Name == "Unblock");
            Assert.IsTrue(action1.ActionProperties[0].PropertyValue == "False");
            Assert.IsTrue(action1.ActionProperties[1].Name == "AllowOverride");
            Assert.IsTrue(action1.ActionProperties[1].PropertyValue == "True");
            Assert.IsTrue(action1.ActionProperties[2].Name == "FileSelected");
            Assert.IsTrue(action1.ActionProperties[2].PropertyValue == "False");
        }
示例#10
0
        public void TestExecuteEvents_AreCalled()
        {
            string rulesxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\EnforceRules.xml");
            string objectsxml = System.IO.File.ReadAllText(@"P:\projects\Hygiene\src\TestDocuments\EnforceObjects.xml");

            Workshare.Policy.Engine.EmailPolicyEngine engine = new Workshare.Policy.Engine.EmailPolicyEngine();
            IRuleStore store = new MockRuleStore(rulesxml, objectsxml);

            MockEmailPolicyAuditor auditor = new MockEmailPolicyAuditor();

            engine.SetRuleStore(store);
            engine.SetPolicyAuditor(auditor);

            string bodyText = "4408 0412 3456 7890";

            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("*****@*****.**", "[email protected],[email protected],[email protected]", "subject line", bodyText);
            message.Attachments.Add(new System.Net.Mail.Attachment(@"P:\projects\Hygiene\src\TestDocuments\TestPrivacy.doc"));

            MockPolicyEvents policyEvents = new MockPolicyEvents();
            engine.SetPolicyEvents(policyEvents);

            Assert.IsTrue(policyEvents.AfterExecuteEventArgs.Count == 0);
            Assert.IsTrue(policyEvents.BeforeExecuteEventArgs.Count == 0);
            
            engine.Enforce(RunAtMode.Client, message, null);

            Assert.IsTrue(policyEvents.AfterExecuteEventArgs.Count == 2);
            Assert.IsTrue(policyEvents.BeforeExecuteEventArgs.Count == 2);
        }