Пример #1
0
        public void TestPOP3TransactionSafety()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            POP3Simulator sim = new POP3Simulator();

            sim.ConnectAndLogon(account.Address, "test");

            // Now delete the message using an IMAP client.
            IMAPSimulator 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"));
        }
Пример #2
0
        public void TestLogonMailboxWithDeletedMessage()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            for (int i = 1; i <= 3; i++)
            {
                SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "Line1\r\nLine2\r\nLine3\r\nLine4\r\nLine\r\n");
            }

            // Mark the second message as deleted using IMAP.
            POP3Simulator.AssertMessageCount(account.Address, "test", 3);

            IMAPSimulator sim = new IMAPSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            sim.SetDeletedFlag(2);
            sim.Disconnect();

            // Now list messages and confirm that all are listed.

            POP3Simulator pop3Client = new POP3Simulator();

            pop3Client.ConnectAndLogon(account.Address, "test");
            string listResponse = pop3Client.LIST();
            string uidlResponse = pop3Client.UIDL();

            Assert.IsTrue(listResponse.Contains("\r\n1"));
            Assert.IsTrue(listResponse.Contains("\r\n2"));
            Assert.IsTrue(listResponse.Contains("\r\n3"));
            Assert.IsTrue(listResponse.Contains("\r\n.\r\n"));
            Assert.IsTrue(listResponse.Contains("3 messages"));

            Assert.IsTrue(uidlResponse.Contains("\r\n1"));
            Assert.IsTrue(uidlResponse.Contains("\r\n2"));
            Assert.IsTrue(uidlResponse.Contains("\r\n3"));
            Assert.IsTrue(uidlResponse.Contains("\r\n.\r\n"));
            Assert.IsTrue(uidlResponse.Contains("3 messages"));
        }
Пример #3
0
        public void TestFolderUpdateNotification()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody");

              IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

              IMAPSimulator simulator1 = new IMAPSimulator();
              IMAPSimulator simulator2 = new IMAPSimulator();

              simulator1.ConnectAndLogon(account.Address, "test");
              simulator2.ConnectAndLogon(account.Address, "test");

              simulator1.SelectFolder("Inbox");
              simulator2.SelectFolder("Inbox");

              string result = simulator2.NOOP() + simulator2.NOOP();
              Assert.IsFalse(result.Contains("Deleted"));
              Assert.IsFalse(result.Contains("Seen"));

              simulator1.SetDeletedFlag(1);
              simulator1.SetSeenFlag(1);

              result = simulator2.NOOP() + simulator2.NOOP();
              Assert.IsTrue(result.Contains("Deleted"));
              Assert.IsTrue(result.Contains("Seen"));

              simulator1.Disconnect();
              simulator2.Disconnect();
        }
Пример #4
0
        public void TestFolderExpungeNotification()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody");
              IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

              IMAPSimulator simulator1 = new IMAPSimulator();
              IMAPSimulator simulator2 = new IMAPSimulator();

              simulator1.ConnectAndLogon(account.Address, "test");
              simulator2.ConnectAndLogon(account.Address, "test");

              simulator1.SelectFolder("Inbox");
              simulator2.SelectFolder("Inbox");

              string result = simulator2.NOOP();
              Assert.IsFalse(result.Contains("Deleted"));
              Assert.IsFalse(result.Contains("Seen"));

              simulator1.SetDeletedFlag(1);
              simulator1.Expunge();

              // the result may (should) come after the first NOOP response stream so do noop twice.
              result = simulator2.NOOP() + simulator2.NOOP();
              Assert.IsTrue(result.Contains("* 1 EXPUNGE"));

              simulator1.Disconnect();
              simulator2.Disconnect();
        }
Пример #5
0
        public void TestPublicFolderUpdateNotification()
        {
            hMailServer.IMAPFolders folders = _application.Settings.PublicFolders;
             hMailServer.IMAPFolder folder = folders.Add("Share");
             folder.Save();

             hMailServer.IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone;
             permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteOthers, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteSeen, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteDeleted, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true);
             permission.Save();

             hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody");
             IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

             IMAPSimulator simulator1 = new IMAPSimulator();
             IMAPSimulator simulator2 = new IMAPSimulator();

             simulator1.ConnectAndLogon(account.Address, "test");
             simulator2.ConnectAndLogon(account.Address, "test");

             simulator1.SelectFolder("Inbox");
             simulator2.SelectFolder("Inbox");

             Assert.IsTrue(simulator1.Copy(1, "#Public.Share"));

             simulator1.SelectFolder("#Public.Share");
             simulator2.SelectFolder("#Public.Share");

             string result = simulator2.NOOP() + simulator2.NOOP();
             Assert.IsFalse(result.Contains("Deleted"));
             Assert.IsFalse(result.Contains("Seen"));

             simulator1.SetDeletedFlag(1);
             simulator1.SetSeenFlag(1);

             result = simulator2.NOOP() + simulator2.NOOP();
             Assert.IsTrue(result.Contains("Deleted"));
             Assert.IsTrue(result.Contains("Seen"));

             simulator1.Disconnect();
             simulator2.Disconnect();
        }
Пример #6
0
        public void TestExpunge()
        {
            hMailServer.Application application = SingletonProvider<Utilities>.Instance.GetApp();

             hMailServer.Account account1 = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.IMAPFolders publicFolders = _settings.PublicFolders;
             hMailServer.IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             hMailServer.IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(hMailServer.eACLPermission.ePermissionCreate, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteDeleted, true);
             permission.Save();

             string folderName = "#Public.Share1";
             SMTPClientSimulator.StaticSend("*****@*****.**", account1.Address, "TestMessage", "Body");
             Utilities.AssertMessageExistsInFolder(account1.IMAPFolders.get_ItemByName("INBOX"), 1);
             Utilities.AssertMessageExistsInFolder(folder, 0);

             IMAPSimulator oSimulator1 = new IMAPSimulator();
             oSimulator1.Connect();
             oSimulator1.Logon(account1.Address, "test");
             oSimulator1.SelectFolder("INBOX");
             Assert.IsTrue(oSimulator1.Copy(1, folderName));
             Assert.IsTrue(oSimulator1.SelectFolder(folderName));
             Assert.IsTrue(oSimulator1.SetDeletedFlag(1));

             Assert.IsFalse(oSimulator1.Expunge());

             permission.set_Permission(hMailServer.eACLPermission.ePermissionExpunge, true);
             permission.Save();
             Assert.IsTrue(oSimulator1.Expunge());

             oSimulator1.Disconnect();
        }