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 NonDeliveryReport() { using (CreateTransactionScopeObject()) { string emailContent = System.IO.File.OpenText(@".\..\..\NonDeliveryReport Test Email.eml").ReadToEnd(); EmailProcessingDetails processingDetail = EventsManager.Instance.ProcessBounceEmail(emailContent); Assert.AreEqual(EmailProcessingResult.SuccessBounce, processingDetail.ProcessingResult); MantaEventCollection events = EventsManager.Instance.GetEvents(); Assert.AreEqual(1, events.Count); Assert.IsTrue(events[0] is MantaBounceEvent); MantaBounceEvent bounce = (MantaBounceEvent)events[0]; Assert.AreEqual(MantaBounceCode.BadEmailAddress, bounce.BounceInfo.BounceCode); Assert.AreEqual(MantaBounceType.Hard, bounce.BounceInfo.BounceType); Assert.AreEqual("*****@*****.**", bounce.EmailAddress); Assert.AreEqual("550 5.1.1 unknown or illegal alias: [email protected]", bounce.Message); Assert.AreEqual("TestData", bounce.SendID); } }
public void SmtpResponseTest() { using (CreateTransactionScopeObject()) { EmailProcessingDetails processingDetails; bool result = EventsManager.Instance.ProcessSmtpResponseMessage("550 User Unknown", "*****@*****.**", 1, out processingDetails); Assert.IsTrue(result); MantaEventCollection events = EventsManager.Instance.GetEvents(); Assert.AreEqual(1, events.Count); Assert.IsTrue(events[0] is MantaBounceEvent); MantaBounceEvent bounce = (MantaBounceEvent)events[0]; Assert.AreEqual(MantaBounceCode.BadEmailAddress, bounce.BounceInfo.BounceCode); Assert.AreEqual(MantaBounceType.Hard, bounce.BounceInfo.BounceType); Assert.AreEqual("*****@*****.**", bounce.EmailAddress); Assert.AreEqual("550 User Unknown", bounce.Message); Assert.AreEqual("TestData", bounce.SendID); } }
public void TimedOutInQueue() { using (System.Transactions.TransactionScope ts = CreateTransactionScopeObject()) { MantaEventCollection events = EventsManager.Instance.GetEvents(); int initialMaxEventID = events.Max(e => e.ID); bool result = false; EmailProcessingDetails processingDetails; result = EventsManager.Instance.ProcessSmtpResponseMessage(MtaParameters.TIMED_OUT_IN_QUEUE_MESSAGE, "*****@*****.**", 1, out processingDetails); Assert.IsTrue(result); Assert.IsNull(processingDetails); // Check an Event has been created. events = EventsManager.Instance.GetEvents(); int newMaxEventID = events.Max(e => e.ID); Assert.AreNotEqual(initialMaxEventID, newMaxEventID); MantaEvent ev = events.First(e => e.ID == newMaxEventID); // Check the new Event record. Assert.IsTrue(ev is MantaTimedOutInQueueEvent); Assert.AreEqual(ev.ID, newMaxEventID); Assert.AreEqual(ev.EventType, MantaEventType.TimedOutInQueue); Assert.AreEqual(ev.EmailAddress, "*****@*****.**"); Assert.AreEqual(ev.SendID, SendDB.GetSend(1).ID); Assert.That(ev.EventTime, Is.EqualTo(DateTime.UtcNow).Within(TimeSpan.FromSeconds(1))); // Depends on how long it takes to get the Events out of the DB. Assert.IsFalse(ev.Forwarded); } }