Beispiel #1
0
        public void TestAttachmentEncoding()
        {
            string[] testFiles = GetTestFiles();

             SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             foreach (string testFile in testFiles)
             {
            Trace.WriteLine(testFile);

            string fileHash = TestSetup.GetFileHash(testFile);

            var mail = new MailMessage();
            mail.From = new MailAddress("*****@*****.**");
            mail.To.Add("*****@*****.**");
            mail.Subject = "Test";
            mail.Attachments.Add(new Attachment(testFile));

            TestSetup.SendMessage(mail);

            POP3Simulator.AssertMessageCount("*****@*****.**", "test", 1);

            var sim = new POP3Simulator();
            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 = TestSetup.GetFileHash(message.Filename);

               Assert.AreEqual(fileHash, fileHashAfter);
            }
            finally
            {
               File.Delete(message.Filename);
            }
             }
        }
Beispiel #2
0
        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");
             POP3Simulator.AssertMessageCount(account.Address, "test", 2);

             var imapSimulator = new IMAPSimulator();
             string sWelcomeMessage = imapSimulator.Connect();
             Assert.IsTrue(imapSimulator.Logon("*****@*****.**", "test"));
             Assert.IsTrue(imapSimulator.SelectFolder("INBOX"));
             Assert.IsTrue(imapSimulator.StartIdle());

             var sim = new POP3Simulator();
             Assert.IsTrue(sim.ConnectAndLogon(account.Address, "test"));
             Assert.IsTrue(sim.DELE(1));
             sim.QUIT();

             Assert.IsTrue(imapSimulator.AssertPendingDataExists(), "No pending data exist");
             string data = imapSimulator.Receive();
             Assert.IsTrue(data.Contains("* 1 EXPUNGE"), "No expunge message");
             Assert.IsFalse(imapSimulator.GetPendingDataExists(), "Pending data exists");
        }
Beispiel #3
0
        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());

             POP3Simulator.AssertMessageCount(account.Address, "test", 10);

             var sim = new POP3Simulator();
             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));
        }
Beispiel #4
0
        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());

             POP3Simulator.AssertMessageCount(account.Address, "test", 10);

             var sim = new POP3Simulator();
             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."));
        }
Beispiel #5
0
        public void TestPOP3TransactionSafety()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"));
             POP3Simulator.AssertMessageCount(account.Address, "test", 1);

             var sim = new POP3Simulator();
             sim.ConnectAndLogon(account.Address, "test");

             // Now delete the message using an IMAP client.
             var imapSimulator = new IMAPSimulator();
             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"));

             Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"));
             IMAPSimulator.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"));
        }