public void TestNotificationOnPOP3Deletion() { _settings.IMAPIdleEnabled = true; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Message 1", "Body 1"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Message 1", "Body 1"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 2); var imapSimulator = new ImapClientSimulator(); string sWelcomeMessage = imapSimulator.Connect(); Assert.IsTrue(imapSimulator.Logon("*****@*****.**", "test")); Assert.IsTrue(imapSimulator.SelectFolder("INBOX")); Assert.IsTrue(imapSimulator.StartIdle()); var sim = new Pop3ClientSimulator(); Assert.IsTrue(sim.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim.DELE(1)); sim.QUIT(); // After a delete, the following should be sent tot he IMAP client: // - EXPUNGE // - EXISTS // - RECENT Assert.IsTrue(imapSimulator.AssertPendingDataExists(), "No pending data exist"); var deadline = DateTime.Now.AddSeconds(10); var message = new StringBuilder(); while (DateTime.Now < deadline) { if (imapSimulator.GetPendingDataExists()) message.Append(imapSimulator.Receive()); var str = message.ToString(); if (str.Contains("* 1 EXPUNGE") && str.Contains("EXISTS") && str.Contains("RECENT")) { return; } } var receivedText = message.ToString(); Assert.IsTrue(receivedText.Contains("* 1 EXPUNGE"), receivedText); Assert.IsTrue(receivedText.Contains("EXISTS"), receivedText); Assert.IsTrue(receivedText.Contains("RECENT"), receivedText); }
public void TestAttachmentEncoding() { string[] testFiles = GetTestFiles(); SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); foreach (string testFile in testFiles) { Trace.WriteLine(testFile); string fileHash = GetFileHash(testFile); var mail = new MailMessage(); mail.From = new MailAddress("*****@*****.**"); mail.To.Add("*****@*****.**"); mail.Subject = "Test"; mail.Attachments.Add(new Attachment(testFile)); SendMessage(mail); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon("*****@*****.**", "test"); string fileContent = sim.RETR(1); sim.DELE(1); sim.QUIT(); var message = new Message(); try { File.WriteAllText(message.Filename, fileContent); message.RefreshContent(); message.Attachments[0].SaveAs(message.Filename); string fileHashAfter = GetFileHash(message.Filename); Assert.AreEqual(fileHash, fileHashAfter); } finally { File.Delete(message.Filename); } } }
public void TestPOP3TransactionSafety() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); // Now delete the message using an IMAP client. var imapSimulator = new ImapClientSimulator(); Assert.IsTrue(imapSimulator.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(imapSimulator.SelectFolder("INBOX")); Assert.IsTrue(imapSimulator.SetDeletedFlag(1)); Assert.IsTrue(imapSimulator.Expunge()); Assert.AreEqual(0, imapSimulator.GetMessageCount("Inbox")); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"); ImapClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); // This deletion should not have any effect, since the POP3 connection is referencing an old message. sim.DELE(1); sim.QUIT(); Assert.AreEqual(1, imapSimulator.GetMessageCount("Inbox")); }
public void TestUIDLWithDeleted() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 1; i <= 10; i++) SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody" + i.ToString()); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 10); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); sim.DELE(2); sim.DELE(4); string result = sim.UIDL(); Assert.IsTrue(result.Contains("8 messages")); Assert.IsTrue(result.Contains("\r\n1")); Assert.IsTrue(result.Contains("\r\n3")); Assert.IsTrue(result.Contains("\r\n5")); Assert.IsTrue(result.Contains("\r\n.")); }
public void TestDELEInvalid() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 1; i <= 10; i++) SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody" + i.ToString()); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 10); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); Assert.IsFalse(sim.DELE(0)); Assert.IsFalse(sim.DELE(-1)); Assert.IsFalse(sim.DELE(1000)); Assert.IsTrue(sim.DELE(5)); }