public void TestAppendOnlyMessageBody() { var seed = _rand.Next(); Logger.InfoFormat("Using seed {0}", seed); var mailManager = new MailManagerMock(); var message1 = mailManager.AddMessage(false); var instanceConfig = GetConfig().Instances.First(); var workItemManagerMock = new WorkItemManagerMock(instanceConfig.WorkItemSettings.ConversationIndexFieldName); ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); Assert.AreEqual(1, workItemManagerMock.Bugs.Count, "Only one bug should exist"); var newBugId = workItemManagerMock.Bugs.First().Key + 1; workItemManagerMock.Bugs.Add(newBugId, new Dictionary <string, string>()); mailManager.Clear(); var appendOnlyMessage = mailManager.AddMessage(false); appendOnlyMessage.PlainTextBody = string.Format("Blah !!!bug #{0}freqmnclkwerqcnew", newBugId); // Message has a conversation index that suggests it's related to a thread with some work item ID x, but it has // a subject that connects it to work item ID x+1 // Should end up applying to the latter work-item (x+1) appendOnlyMessage.ConversationIndex = message1.ConversationIndex + "AAAA"; ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); var expectedValues = new Dictionary <string, string>(); expectedValues["Changed By"] = appendOnlyMessage.SenderName; expectedValues[WorkItemManagerMock.HistoryField] = TextUtils.FixLineBreaks(appendOnlyMessage.GetLastMessageText()); Assert.AreEqual(2, workItemManagerMock.Bugs.Count, "Only one bug should exist"); ValidateBugValues(expectedValues, workItemManagerMock.Bugs[newBugId]); }
public void TestAppendOnlyMessageSubject() { var seed = _rand.Next(); Logger.InfoFormat("Using seed {0}", seed); var mailManager = new MailManagerMock(); var message1 = mailManager.AddMessage(false); var instanceConfig = GetConfig().Instances.First(); var workItemManagerMock = new WorkItemManagerMock(instanceConfig.WorkItemSettings.ConversationIndexFieldName); ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); Assert.AreEqual(1, workItemManagerMock.Bugs.Count, "Only one bug should exist"); var newBugId = workItemManagerMock.Bugs.First().Key + 1; workItemManagerMock.Bugs.Add(newBugId, new Dictionary <string, string>()); mailManager.Clear(); const string comment = "Comment"; var appendOnlySubject = string.Format("RE: Bug #{0}: coverage drop and fluctuation in CO3 [was: RE: CX LATAM coverage drop observed on 12/29-12/30 UTC (TFS# 719845)]", newBugId); var appendOnlyMessage = mailManager.AddMessage(appendOnlySubject, comment); // Message has a conversation index that suggests it's related to a thread with some work item ID x, but it has // a subject that connects it to work item ID x+1 // Should end up applying to the latter work-item (x+1) appendOnlyMessage.ConversationIndex = message1.ConversationIndex + "AAAA"; ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); var expectedValues = new Dictionary <string, string>(); expectedValues["Changed By"] = appendOnlyMessage.SenderName; expectedValues[WorkItemManagerMock.HistoryField] = TextUtils.FixLineBreaks(appendOnlyMessage.GetLastMessageText()); Assert.AreEqual(2, workItemManagerMock.Bugs.Count, "Only one bug should exist"); ValidateBugValues(expectedValues, workItemManagerMock.Bugs[newBugId]); }
public void TestMenmonics() { var seed = _rand.Next(); var mnemonicDef = new Config.MnemonicDefinition { Mnemonic = "UPPERCASElowercase", Field = "Mnemonic Field", Value = "Mnemonic Value" }; Logger.InfoFormat("Using seed {0}", seed); var mailManager = new MailManagerMock(); var message = mailManager.AddMessage(false); message.PlainTextBody += string.Format("\n@@@{0}\n", mnemonicDef.Mnemonic.ToLower()); var instanceConfig = GetConfig().Instances.First(); instanceConfig.WorkItemSettings.Mnemonics.Add(mnemonicDef); var workItemManagerMock = new WorkItemManagerMock(instanceConfig.WorkItemSettings.ConversationIndexFieldName); ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); Assert.AreEqual(1, workItemManagerMock.Bugs.Count, "Only one bug should exist"); var bug = workItemManagerMock.Bugs.First(); foreach (var defaultValue in instanceConfig.WorkItemSettings.DefaultFieldValues) { var fieldValues = bug.Value; var fieldName = defaultValue.Field; Assert.IsTrue(fieldValues.ContainsKey(fieldName), string.Format("Default value {0} isn't set in the bug", fieldName)); Assert.AreEqual(defaultValue.Value, fieldValues[fieldName], string.Format("Value of field {0} is different than expected", fieldName)); } Assert.IsTrue(bug.Value.ContainsKey(mnemonicDef.Field), "Check mnemonic field is set"); Assert.AreEqual(mnemonicDef.Value, bug.Value[mnemonicDef.Field], "Check mnemonic field contains the right value"); }
private IMessageProcessingStrategy InitProcessingStrategy() { IWorkItemManager workItemManager = null; if ((_config.IcmClientConfig != null) && (_config.IncidentDefaults != null) && !_config.IcmClientConfig.SimulationMode) { workItemManager = new IcmWorkItemManagment(_config); } if (_config.TfsServerConfig != null && !_config.TfsServerConfig.SimulationMode) { Logger.InfoFormat("Working in standard mode, using TFSWorkItemManager"); workItemManager = new TFSWorkItemManager(_config); } if (_config.TfsServerConfig != null && _config.TfsServerConfig.SimulationMode) { Logger.InfoFormat("Working in simulation mode. Using WorkItemManagerMock"); workItemManager = new WorkItemManagerMock(_config.WorkItemSettings.ConversationIndexFieldName); } Logger.InfoFormat("Initializing MessageProcessingStrategy"); return(new SimpleBugStrategy(_config, workItemManager)); }
public void TestAttachOriginalMessage() { var rand = new Random(); var seed = rand.Next(); Logger.InfoFormat("Using seed {0}", seed); var mailManager = new MailManagerMock(); mailManager.AddMessage(false); var instanceConfig = GetConfig().Instances.First(); instanceConfig.WorkItemSettings.AttachOriginalMessage = true; var workItemManagerMock = new WorkItemManagerMock(instanceConfig.WorkItemSettings.ConversationIndexFieldName); ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); Assert.AreEqual(1, workItemManagerMock.Bugs.Count, "Only one bug should exist"); var bug = workItemManagerMock.Bugs.First(); Assert.IsTrue(workItemManagerMock.Attachments.ContainsKey(bug.Key)); Assert.AreEqual(workItemManagerMock.Attachments[bug.Key].Count, 1); }
public Mail2BugEngine(Config.InstanceConfig configInstance) { _config = configInstance; Logger.InfoFormat("Initalizing MailboxManager"); _mailboxManager = MailboxManagerFactory.CreateMailboxManager(_config.EmailSettings); Logger.InfoFormat("Initializing WorkItemManager"); IWorkItemManager workItemManager; if (configInstance.TfsServerConfig.SimulationMode) { Logger.InfoFormat("Working in simulation mode. Using WorkItemManagerMock"); workItemManager = new WorkItemManagerMock(_config.WorkItemSettings.ConversationIndexFieldName); } else { Logger.InfoFormat("Working in standard mode, using TFSWorkItemManager"); workItemManager = new TFSWorkItemManager(_config); } Logger.InfoFormat("Initializing MessageProcessingStrategy"); _messageProcessingStrategy = new SimpleBugStrategy(_config, workItemManager); }
public void TestAttachingUpdateMessages() { var seed = _rand.Next(); Logger.InfoFormat("Using seed {0}", seed); var mailManager = new MailManagerMock(); var message1 = mailManager.AddMessage(false); var message2 = mailManager.AddReply(message1, "message 1"); var message3 = mailManager.AddReply(message2, "message 2"); var instanceConfig = GetConfig().Instances.First(); instanceConfig.WorkItemSettings.AttachUpdateMessages = true; var workItemManagerMock = new WorkItemManagerMock(instanceConfig.WorkItemSettings.ConversationIndexFieldName); ProcessMailbox(mailManager, instanceConfig, workItemManagerMock); Assert.AreEqual(1, workItemManagerMock.Bugs.Count, "Only one bug should exist"); var bug = workItemManagerMock.Bugs.First(); var bugFields = bug.Value; var expectedValues = new Dictionary <string, string>(); instanceConfig.WorkItemSettings.DefaultFieldValues.ForEach(x => expectedValues[x.Field] = x.Value); expectedValues["Changed By"] = message3.SenderName; expectedValues[WorkItemManagerMock.HistoryField] = TextUtils.FixLineBreaks(message2.GetLastMessageText() + message3.GetLastMessageText()); ValidateBugValues(expectedValues, bugFields); Assert.IsTrue(workItemManagerMock.Attachments.ContainsKey(bug.Key)); Assert.AreEqual(workItemManagerMock.Attachments[bug.Key].Count, 3); }