/// <summary> /// Creates a MantaEvent object and Fills it with the values from the data record. /// </summary> /// <param name="record">Record to get the data from.</param> /// <returns>MantaAubseEvent or MantaBounceEvent</returns> private static MantaEvent CreateAndFillMantaEventFromRecord(IDataRecord record) { MantaEventType type = (MantaEventType)record.GetInt32("evn_type_id"); MantaEvent thisEvent = null; switch (type) { case MantaEventType.Abuse: thisEvent = new MantaAbuseEvent(); break; case MantaEventType.Bounce: thisEvent = new MantaBounceEvent(); FillMantaBounceEvent((thisEvent as MantaBounceEvent), record); break; case MantaEventType.TimedOutInQueue: thisEvent = new MantaTimedOutInQueueEvent(); break; default: throw new NotImplementedException("Unknown Event Type (" + type + ")"); } thisEvent.EmailAddress = record.GetString("evn_event_emailAddress"); thisEvent.EventTime = record.GetDateTime("evn_event_timestamp"); thisEvent.EventType = type; thisEvent.ID = record.GetInt32("evn_event_id"); thisEvent.SendID = record.GetString("snd_send_id"); thisEvent.Forwarded = record.GetBoolean("evn_event_forwarded"); return(thisEvent); }
public void FeedbackLoop() { using (CreateTransactionScopeObject()) { EmailProcessingDetails processingDetail = EventsManager.Instance.ProcessFeedbackLoop(FeedbackLoopEmails.AolAbuse); Assert.AreEqual(EmailProcessingResult.SuccessAbuse, processingDetail.ProcessingResult); MantaEventCollection events = EventsManager.Instance.GetEvents(); Assert.AreEqual(1, events.Count); Assert.IsTrue(events[0] is MantaAbuseEvent); MantaAbuseEvent abuse = (MantaAbuseEvent)events[0]; Assert.AreEqual("test@remote", abuse.EmailAddress); Assert.AreEqual("TestData", abuse.SendID); processingDetail = EventsManager.Instance.ProcessFeedbackLoop(FeedbackLoopEmails.YahooAbuse); Assert.AreEqual(EmailProcessingResult.SuccessAbuse, processingDetail.ProcessingResult); events = EventsManager.Instance.GetEvents(); Assert.AreEqual(2, events.Count); Assert.IsTrue(events[1] is MantaAbuseEvent); abuse = (MantaAbuseEvent)events[1]; Assert.AreEqual("*****@*****.**", abuse.EmailAddress); Assert.AreEqual("TestData", abuse.SendID); processingDetail = EventsManager.Instance.ProcessFeedbackLoop(FeedbackLoopEmails.HotmailAbuse); Assert.AreEqual(EmailProcessingResult.SuccessAbuse, processingDetail.ProcessingResult); events = EventsManager.Instance.GetEvents(); Assert.AreEqual(3, events.Count); Assert.IsTrue(events[2] is MantaAbuseEvent); abuse = (MantaAbuseEvent)events[2]; Assert.AreEqual("*****@*****.**", abuse.EmailAddress); Assert.AreEqual("TestData", abuse.SendID); } }
public void SaveAndGetAbuse() { using (CreateTransactionScopeObject()) { MantaAbuseEvent origAbuse = new MantaAbuseEvent { EmailAddress = "*****@*****.**", EventTime = DateTime.UtcNow, EventType = MantaEventType.Abuse, SendID = "qwerty" }; origAbuse.ID = EventsManager.Instance.Save(origAbuse); MantaAbuseEvent savedAbuse = (MantaAbuseEvent)EventsManager.Instance.GetEvent(origAbuse.ID); Assert.NotNull(savedAbuse); Assert.AreEqual(origAbuse.EmailAddress, savedAbuse.EmailAddress); Assert.That(savedAbuse.EventTime, Is.EqualTo(origAbuse.EventTime).Within(TimeSpan.FromSeconds(1))); Assert.AreEqual(origAbuse.EventType, savedAbuse.EventType); Assert.AreEqual(origAbuse.ID, savedAbuse.ID); Assert.AreEqual(origAbuse.SendID, savedAbuse.SendID); } }