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 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)); }
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 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); } } }