Beispiel #1
0
        public void TestFolderDeletion()
        {
            // Create a test account
            // Fetch the default domain
            Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPFolder folder = account1.IMAPFolders.Add("TestFolder1");

            folder.Save();

            var simulator1 = new IMAPClientSimulator();

            simulator1.ConnectAndLogon(account1.Address, "test");
            string result = simulator1.List();

            CustomAssert.IsTrue(result.Contains(folder.Name));
            simulator1.Disconnect();

            // Delete the folder and confirm it's no longer listed.
            folder.Delete();

            simulator1.ConnectAndLogon(account1.Address, "test");
            result = simulator1.List();
            CustomAssert.IsFalse(result.Contains(folder.Name));
            simulator1.Disconnect();
        }
Beispiel #2
0
        public void TestChangeRecentFlag()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"));
            POP3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1);

            var simulator = new IMAPClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            string result = simulator.ExamineFolder("Inbox");

            CustomAssert.IsTrue(result.Contains("* 1 RECENT"), result);
            simulator.Close();
            simulator.Disconnect();

            simulator = new IMAPClientSimulator();
            simulator.ConnectAndLogon(oAccount.Address, "test");
            CustomAssert.IsTrue(simulator.SelectFolder("Inbox", out result));
            CustomAssert.IsTrue(result.Contains("* 1 RECENT"), result);
            simulator.Close();
            simulator.Disconnect();

            simulator = new IMAPClientSimulator();
            simulator.ConnectAndLogon(oAccount.Address, "test");
            result = simulator.ExamineFolder("Inbox");
            CustomAssert.IsTrue(result.Contains("* 0 RECENT"), result);
            simulator.Close();
            simulator.Disconnect();
        }
Beispiel #3
0
        public void TestImportOfMessageIntoOtherFolder()
        {
            string @messageText =
                "From: [email protected]\r\n" +
                "\r\n" +
                "Test\r\n";

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

            account.IMAPFolders.Add("Woho");

            string domainPath  = Path.Combine(_application.Settings.Directories.DataDirectory, "test.com");
            string accountPath = Path.Combine(domainPath, "test");

            Directory.CreateDirectory(accountPath);
            string fileName = Path.Combine(accountPath, "something.eml");

            File.WriteAllText(fileName, messageText);

            CustomAssert.IsTrue(_application.Utilities.ImportMessageFromFileToIMAPFolder(fileName, account.ID, "Woho"));

            POP3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 0);
            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon("*****@*****.**", "test");
            CustomAssert.AreEqual(1, sim.GetMessageCount("Woho"));
            sim.Disconnect();
        }
Beispiel #4
0
        public void TestIMAPServerNormal()
        {
            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(GetUsername(), GetPassword());
            EnsureNoPassword();
        }
Beispiel #5
0
        public void TestChangeSeenFlag()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"));
            POP3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1);

            var simulator = new IMAPClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            simulator.ExamineFolder("Inbox");
            string flags      = simulator.GetFlags(1);
            string body       = simulator.Fetch("1 RFC822");
            string flagsAfter = simulator.GetFlags(1);

            simulator.Close();
            simulator.Disconnect();

            CustomAssert.AreEqual(flags, flagsAfter);

            var secondSimulator = new IMAPClientSimulator();

            secondSimulator.ConnectAndLogon(oAccount.Address, "test");
            secondSimulator.SelectFolder("Inbox");
            string secondFlags      = secondSimulator.GetFlags(1);
            string secondBody       = secondSimulator.Fetch("1 RFC822");
            string secondFlagsAfter = secondSimulator.GetFlags(1);

            secondSimulator.Close();
            secondSimulator.Disconnect();

            CustomAssert.AreNotEqual(secondFlags, secondFlagsAfter);
        }
Beispiel #6
0
        private static IMAPClientSimulator ConnectAndLogon()
        {
            IMAPClientSimulator sim = new IMAPClientSimulator();

            sim.ConnectAndLogon("*****@*****.**", "test");
            return(sim);
        }
Beispiel #7
0
        public void TestBodyStructureWithNonLatinCharacter()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, "tjena moss");

            var message = new Message();

            message.Charset = "utf-8";
            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = "hejsan";
            message.Attachments.Add(filename);
            message.Save();

            TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODYSTRUCTURE");

            oSimulator.Disconnect();

            // utf-8 representation of 本本本.zip:
            CustomAssert.IsTrue(result.Contains("=?utf-8?B?5pys5pys5pys?=.zip"));
        }
Beispiel #8
0
        public void TestFetchBody()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, "tjena moss");

            var message = new Message();

            message.Charset = "utf-8";
            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = "hejsan";
            message.Attachments.Add(filename);
            message.Save();

            TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string bodyStructureResponse = oSimulator.Fetch("1 BODYSTRUCTURE");
            string bodyResponse          = oSimulator.Fetch("1 BODY");

            oSimulator.Disconnect();

            CustomAssert.IsTrue(bodyStructureResponse.Contains("BOUNDARY"));
            CustomAssert.IsFalse(bodyResponse.Contains("BOUNDARY"));
        }
Beispiel #9
0
        public void TestExpunge()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"));
            POP3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1);

            var simulator = new IMAPClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            simulator.SelectFolder("Inbox");
            CustomAssert.IsTrue(simulator.SetFlagOnMessage(1, true, @"\Deleted"));

            var secondSimulator = new IMAPClientSimulator();

            secondSimulator.ConnectAndLogon(oAccount.Address, "test");
            string result = secondSimulator.ExamineFolder("INBOX");

            CustomAssert.IsTrue(result.Contains("1 EXISTS"), result);
            CustomAssert.IsFalse(secondSimulator.Expunge());

            simulator.SelectFolder("INBOX");
            CustomAssert.IsTrue(simulator.Expunge());

            simulator.Close();
            secondSimulator.Close();
        }
Beispiel #10
0
        public void TestRetrievalOfMessageInDeletedFolderUsingIMAP()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text;

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

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody");

            IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");


            TestSetup.AssertFolderMessageCount(inbox, 1);

            Message message = inbox.Messages[0];

            var           dir    = new DirectoryInfo(Path.GetFullPath(message.Filename));
            DirectoryInfo parent = dir.Parent.Parent.Parent;

            parent.Delete(true);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("1 BODY[1]");

            CustomAssert.IsTrue(result.Contains(deletedMessageText.Replace("%MACRO_FILE%", message.Filename)));
            TestSetup.AssertReportedError("Message retrieval failed because message file");
        }
Beispiel #11
0
        public void TestSearchUTF8TEXT()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string body = TestSetup.GetResource("Messages.MessageContainingGreekSubject.txt");

            SMTPClientSimulator.StaticSendRaw(account.Address, account.Address, body);

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var oSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(oSimulator.SelectFolder("INBOX"));

            string result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣK");

            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT 標準語");
            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣK標準語");
            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣKWHAT標準語");
            CustomAssert.AreEqual("", result);
        }
Beispiel #12
0
        public void TestPOP3TransactionSafety()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(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();

            CustomAssert.IsTrue(imapSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(imapSimulator.SelectFolder("INBOX"));
            CustomAssert.IsTrue(imapSimulator.SetDeletedFlag(1));
            CustomAssert.IsTrue(imapSimulator.Expunge());
            CustomAssert.AreEqual(0, imapSimulator.GetMessageCount("Inbox"));

            CustomAssert.IsTrue(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();

            CustomAssert.AreEqual(1, imapSimulator.GetMessageCount("Inbox"));
        }
Beispiel #13
0
        public void TestIMAPServer()
        {
            TestSetup.DeleteCurrentDefaultLog();

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

            for (int i = 0; i < 30; i++)
            {
                try
                {
                    var imapSim = new IMAPClientSimulator(true, 14301);
                    imapSim.ConnectAndLogon(account.Address, "test");
                    CustomAssert.IsTrue(imapSim.SelectFolder("Inbox"), "SelectInbox");
                    imapSim.CreateFolder("Test");
                    CustomAssert.IsTrue(imapSim.SelectFolder("Test"), "SelectTest");
                    CustomAssert.IsTrue(imapSim.Logout(), "Logout");

                    imapSim.Disconnect();
                    break;
                }
                catch (Exception)
                {
                    if (i == 29)
                    {
                        throw;
                    }
                }
            }
        }
Beispiel #14
0
        public void TestFetch()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody1");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody2");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 2);

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody3");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 3);


            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("1 BODY[1]");

            CustomAssert.IsTrue(result.Contains("SampleBody1"), result);
            result = sim.Fetch("2 BODY[1]");
            CustomAssert.IsTrue(result.Contains("SampleBody2"), result);
            result = sim.Fetch("3 BODY[1]");
            CustomAssert.IsTrue(result.Contains("SampleBody3"), result);
        }
Beispiel #15
0
        public void TestChangeFlags()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"));
            POP3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1);

            var simulator = new IMAPClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            simulator.ExamineFolder("Inbox");
            CustomAssert.IsFalse(simulator.SetFlagOnMessage(1, true, @"\Deleted"));
        }
Beispiel #16
0
        public void TestIMAPLogonFailure()
        {
            _settings.AutoBanOnLogonFailure         = true;
            _settings.MaxInvalidLogonAttempts       = 4;
            _settings.MaxInvalidLogonAttemptsWithin = 5;
            _settings.AutoBanMinutes = 3;

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

            var sim = new IMAPClientSimulator();

            CustomAssert.IsTrue(sim.ConnectAndLogon(account.Address, "test"));
            sim.Disconnect();

            // confirm that we can retrieve welcome message.
            CustomAssert.IsTrue(sim.GetWelcomeMessage().StartsWith("* OK"));

            // fail to log on 3 times.
            for (int i = 0; i < 4; i++)
            {
                string errorMessage;

                CustomAssert.IsFalse(sim.ConnectAndLogon(account.Address, "testA", out errorMessage));
                sim.Disconnect();

                if (i == 3)
                {
                    CustomAssert.IsTrue(errorMessage.Contains("Too many invalid logon attempts."));
                }
            }

            CustomAssert.IsTrue(sim.GetWelcomeMessage().Length == 0);

            string logText = TestSetup.ReadCurrentDefaultLog();

            CustomAssert.IsTrue(logText.Contains("Blocked either by IP range or by connection limit."), logText);
        }
Beispiel #17
0
        public void TestSaveMessageWithScriptAndMoveMessageWithGlobalRule()
        {
            _settings.Scripting.Enabled = true;

            Account testAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "Test'*****@*****.**",
                                                                                     "test");

            var sim = new IMAPClientSimulator();

            CustomAssert.IsTrue(sim.ConnectAndLogon(testAccount.Address, "test"));

            // First deliver two messages to the inbox.
            SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test");
            POP3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 1);
            IMAPFolder inboxFolder = testAccount.IMAPFolders[0];

            CustomAssert.AreEqual(1, inboxFolder.CurrentUID);
            CustomAssert.AreEqual(1, inboxFolder.Messages[0].UID);
            CustomAssert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 2"));

            SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test");
            POP3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 2);
            CustomAssert.AreEqual(2, inboxFolder.CurrentUID);
            CustomAssert.AreEqual(2, inboxFolder.Messages[1].UID);
            CustomAssert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 3"));

            CreateMessageModificationRule(_application.Rules);
            CreateMoveRule(_application.Rules, "TestFolder");


            // This message will be moved into the test folder.
            SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test");

            // Wait for the message to arrive.
            TestSetup.AssertFolderExists(testAccount.IMAPFolders, "TestFolder");
            IMAPFolder testFolder = testAccount.IMAPFolders.get_ItemByName("TestFolder");

            TestSetup.AssertFolderMessageCount(testFolder, 1);

            // Inbox UID should not have changed since nothing has been added to the inbox.
            CustomAssert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 3"));

            // Since the message is placed in a new folder, it should receive a unique UID.
            string status = sim.Status("TestFolder", "UIDNEXT");

            CustomAssert.IsTrue(status.Contains("UIDNEXT 2"), status);
            CustomAssert.AreEqual(1, testFolder.CurrentUID);
            CustomAssert.AreEqual(1, testFolder.Messages[0].UID);
        }
Beispiel #18
0
        public void TestSearchInvalidCharset()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "MySubject", "MyBody");

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var oSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(oSimulator.SelectFolder("INBOX"));

            string result = oSimulator.SendSingleCommand("A01 SEARCH CHARSET NONEXISTANT ALL SUBJECT MySubject");

            CustomAssert.AreEqual("A01 NO [BADCHARSET]\r\n", result);
        }
Beispiel #19
0
        public void TestListWithReference()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(oAccount.Address, "test");
            oSimulator.CreateFolder("Main.Sub1.Sub2.Sub3");
            oSimulator.CreateFolder("SomeOtherFolder");

            oSimulator.Subscribe("Main");
            oSimulator.Subscribe("Main.Sub1");
            oSimulator.Subscribe("Main.Sub1.Sub2");
            oSimulator.Subscribe("Main.Sub1.Sub2.Sub3");
            oSimulator.Subscribe("SomeOtherFolder");

            string response = oSimulator.List("Main", "*", true);

            CustomAssert.IsFalse(response.Contains("INBOX"));
            CustomAssert.IsFalse(response.Contains("SomeOtherFolder"));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasChildren) \".\" \"Main.Sub1\""));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasChildren) \".\" \"Main.Sub1.Sub2\""));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"Main.Sub1.Sub2.Sub3\""));

            response = oSimulator.List("Main.Sub1", "*", true);
            CustomAssert.IsFalse(response.Contains("INBOX"));
            CustomAssert.IsFalse(response.Contains("SomeOtherFolder"));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasChildren) \".\" \"Main.Sub1.Sub2\""));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"Main.Sub1.Sub2.Sub3\""));

            response = oSimulator.LSUB("Main", "*");
            CustomAssert.IsFalse(response.Contains("INBOX"));
            CustomAssert.IsFalse(response.Contains("SomeOtherFolder"));
            CustomAssert.IsTrue(response.Contains("* LSUB (\\HasChildren) \".\" \"Main.Sub1\""));
            CustomAssert.IsTrue(response.Contains("* LSUB (\\HasChildren) \".\" \"Main.Sub1.Sub2\""));
            CustomAssert.IsTrue(response.Contains("* LSUB (\\HasNoChildren) \".\" \"Main.Sub1.Sub2.Sub3\""));

            response = oSimulator.LSUB("Main.Sub1", "*");
            CustomAssert.IsFalse(response.Contains("INBOX"));
            CustomAssert.IsFalse(response.Contains("SomeOtherFolder"));
            CustomAssert.IsTrue(response.Contains("* LSUB (\\HasChildren) \".\" \"Main.Sub1.Sub2\""));
            CustomAssert.IsTrue(response.Contains("* LSUB (\\HasNoChildren) \".\" \"Main.Sub1.Sub2.Sub3\""));

            oSimulator.Disconnect();
        }
Beispiel #20
0
        public void TestRenameSubFolderToChildSub()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var oSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(oSimulator.CreateFolder("A.B"));

            string result;

            CustomAssert.IsFalse(oSimulator.RenameFolder("A.B", "A.B.C", out result));
            CustomAssert.IsTrue(result.Contains("A folder cannot be moved into one of its subfolders."));

            CustomAssert.IsTrue(oSimulator.SelectFolder("A.B"));

            oSimulator.Disconnect();
        }
Beispiel #21
0
        public void TestSearchLargeBody()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var body = new StringBuilder();

            body.AppendLine("From: [email protected]");
            body.AppendLine("Subject: Test");
            body.AppendLine();
            for (int i = 0; i < 20000; i++) // One megabye body.
            {
                body.AppendLine("12345678901234567890123456789012345678901234567890");
            }
            body.AppendLine("TestString");
            body.AppendLine();

            SMTPClientSimulator.StaticSendRaw(account.Address, account.Address, body.ToString());

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var oSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(oSimulator.SelectFolder("INBOX"));
            string result = oSimulator.Search("CHARSET UTF-8 ALL TEXT InvalidText");

            CustomAssert.AreEqual("", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT TestStringA");
            CustomAssert.AreEqual("", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT TestString");
            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("CHARSET UTF-8 ALL TEXT TestStr");
            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("UNDELETED BODY \"TestString\"");
            CustomAssert.AreEqual("1", result);

            oSimulator.Close();
        }
Beispiel #22
0
        public void TestEmptyPassword()
        {
            Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "");

            string message;
            var    sim = new POP3ClientSimulator();

            CustomAssert.IsFalse(sim.ConnectAndLogon(account1.Address, "", out message));


            var simIMAP = new IMAPClientSimulator();

            CustomAssert.IsFalse(simIMAP.ConnectAndLogon(account1.Address, "", out message));
            CustomAssert.AreEqual("A01 NO Invalid user name or password.\r\n", message);

            var simSMTP = new SMTPClientSimulator();

            CustomAssert.IsFalse(simSMTP.ConnectAndLogon("dGVzdEB0ZXN0LmNvbQ==", "", out message));
            CustomAssert.AreEqual("535 Authentication failed. Restarting authentication process.\r\n", message);
        }
Beispiel #23
0
        public void TestSearchUSASCII()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "MySubject", "MyBody");

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var oSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(oSimulator.SelectFolder("INBOX"));

            string result = oSimulator.Search("CHARSET US-ASCII ALL SUBJECT MySubject");

            CustomAssert.AreEqual("1", result);

            result = oSimulator.Search("CHARSET US-ASCII ALL SUBJECT MySubjact");
            CustomAssert.AreEqual("", result);
        }
        public void TestHierarchyDelimiterNamespaceResponse()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            Settings settings = _settings;

            settings.IMAPHierarchyDelimiter = "\\";
            string publicFolderName = _settings.IMAPPublicFolderName;

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

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            string result = oSimulator.Send("A01 NAMESPACE");
            string correctNamespaceSetting = "* NAMESPACE ((\"\" \"\\\\\")) NIL ((\"" + publicFolderName +
                                             "\" \"\\\\\"))";

            CustomAssert.IsTrue(result.Contains(correctNamespaceSetting), result);
            oSimulator.Disconnect();

            settings.IMAPHierarchyDelimiter = ".";

            oSimulator = new IMAPClientSimulator();
            oSimulator.ConnectAndLogon(account.Address, "test");

            result = oSimulator.Send("A01 NAMESPACE");
            correctNamespaceSetting = "* NAMESPACE ((\"\" \".\")) NIL ((\"" + publicFolderName + "\" \".\"))";
            CustomAssert.IsTrue(result.Contains(correctNamespaceSetting), result);
            oSimulator.Disconnect();

            settings.IMAPHierarchyDelimiter = "/";

            oSimulator = new IMAPClientSimulator();
            oSimulator.ConnectAndLogon(account.Address, "test");

            result = oSimulator.Send("A01 NAMESPACE");
            correctNamespaceSetting = "* NAMESPACE ((\"\" \"/\")) NIL ((\"" + publicFolderName + "\" \"/\"))";
            CustomAssert.IsTrue(result.Contains(correctNamespaceSetting), result);
            oSimulator.Disconnect();
        }
Beispiel #25
0
        public void TestListWithReferenceTestCase2()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(oAccount.Address, "test");
            oSimulator.CreateFolder("INBOX.MyApp.SubFolder1");
            oSimulator.CreateFolder("INBOX.MyApp.SubFolder2");
            oSimulator.CreateFolder("INBOX.SomeOtherFolder");


            string response = oSimulator.List("INBOX.MyApp", "%.%", true);

            CustomAssert.IsFalse(response.Contains("\"INBOX.MyApp\""));
            CustomAssert.IsFalse(response.Contains("\"INBOX.SomeOtherFolder\""));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"INBOX.MyApp.SubFolder1\""));
            CustomAssert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"INBOX.MyApp.SubFolder2\""));

            oSimulator.Disconnect();
        }
Beispiel #26
0
        public void TestLogonMailboxWithDeletedMessage()
        {
            Account account = SingletonProvider <TestSetup> .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.
            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 3);

            var sim = new IMAPClientSimulator();

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

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

            var pop3Client = new POP3ClientSimulator();

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

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

            CustomAssert.IsTrue(uidlResponse.Contains("\r\n1"));
            CustomAssert.IsTrue(uidlResponse.Contains("\r\n2"));
            CustomAssert.IsTrue(uidlResponse.Contains("\r\n3"));
            CustomAssert.IsTrue(uidlResponse.Contains("\r\n.\r\n"));
            CustomAssert.IsTrue(uidlResponse.Contains("3 messages"));
        }
Beispiel #27
0
        public void TestRenameRootPublicFolder()
        {
            IMAPFolders folders = _application.Settings.PublicFolders;
            IMAPFolder  folder  = folders.Add("ShareA");

            folder.Save();

            IMAPFolderPermission permission = folder.Permissions.Add();

            permission.PermissionType = eACLPermissionType.ePermissionTypeAnyone;
            permission.set_Permission(eACLPermission.ePermissionLookup, true);
            permission.set_Permission(eACLPermission.ePermissionRead, true);
            permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true);
            permission.Save();

            IMAPFolder folder2 = folders.Add("ShareB");

            folder2.Save();

            IMAPFolderPermission permission2 = folder2.Permissions.Add();

            permission2.PermissionType = eACLPermissionType.ePermissionTypeAnyone;
            permission2.set_Permission(eACLPermission.ePermissionLookup, true);
            permission2.set_Permission(eACLPermission.ePermissionRead, true);
            permission2.set_Permission(eACLPermission.ePermissionDeleteMailbox, true);
            permission2.Save();

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

            var simulator1 = new IMAPClientSimulator();

            simulator1.ConnectAndLogon(account.Address, "test");
            CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareA"));
            CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB"));
            CustomAssert.IsTrue(simulator1.RenameFolder("#Public.ShareA", "#Public.ShareB.ShareA"));
            CustomAssert.IsFalse(simulator1.SelectFolder("#Public.ShareA"));
            CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB"));
            CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB.ShareA"));
        }
Beispiel #28
0
        public void TestFetchInvalid()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody1");
            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody2");
            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody3");

            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 3);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("0 BODY[1]");

            CustomAssert.IsTrue(result.StartsWith("A17 OK FETCH completed"));
            result = sim.Fetch("-1 BODY[1]");
            CustomAssert.IsTrue(result.StartsWith("A17 BAD"));
            result = sim.Fetch("-100 BODY[1]");
            CustomAssert.IsTrue(result.StartsWith("A17 BAD"));
        }
Beispiel #29
0
        public void TestAddMessage()
        {
            Application app = SingletonProvider <TestSetup> .Instance.GetApp();

            Utilities utilities = app.Utilities;

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

            // Create a new folder.
            IMAPFolder folder = account.IMAPFolders.get_ItemByName("INBOX");

            folder.Save();

            for (int i = 0; i < 3; i++)
            {
                hMailServer.Message message = folder.Messages.Add();
                message.set_Flag(eMessageFlag.eMFSeen, true);
                message.Save();

                POP3ClientSimulator.AssertMessageCount(account.Address, "test", ((i + 1) * 2) - 1);

                SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "Test");
                POP3ClientSimulator.AssertMessageCount(account.Address, "test", (i + 1) * 2);
            }

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 6);

            var sim = new IMAPClientSimulator();

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

            string response = sim.Fetch("1:6 UID");

            string[] lines = Strings.Split(response, Environment.NewLine, -1, CompareMethod.Text);

            var uids = new List <string>();

            foreach (string line in lines)
            {
                int paraPos    = line.IndexOf("(");
                int paraEndPos = line.IndexOf(")");

                if (paraPos < 0 || paraEndPos < 0)
                {
                    continue;
                }

                string paraContent = line.Substring(paraPos + 1, paraEndPos - paraPos - 1);

                if (!uids.Contains(paraContent))
                {
                    uids.Add(paraContent);
                }
            }

            CustomAssert.AreEqual(6, uids.Count);

            // Make sure the UIDS are sorted properly by creating a copy, sort the copy
            // and then compare to original.
            var copy = new List <string>();

            copy.InsertRange(0, uids);
            copy.Sort();

            CustomAssert.AreEqual(copy, uids);
        }
Beispiel #30
0
        private void SetupAccountObject(Domain domain)
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(domain, "*****@*****.**", "test");

            // Make sure the inbox contains two messages which should be backed up.
            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 1 Subject",
                                                               "Message 1 Body"));
            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 2 Subject",
                                                               "Message 2 Body"));
            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 2);

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 3 Subject",
                                                               "Message 3 Body"));
            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 3);

            var sim = new IMAPClientSimulator();

            CustomAssert.IsTrue(sim.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(sim.SelectFolder("Inbox"));
            CustomAssert.IsTrue(sim.SetDeletedFlag(2));
            CustomAssert.IsTrue(sim.Expunge());
            sim.Disconnect();

            _folderCreationTime = account.IMAPFolders.get_ItemByName("INBOX").CreationTime;

            account.Active              = true;
            account.ADDomain            = "AD";
            account.AdminLevel          = eAdminLevel.hAdminLevelDomainAdmin;
            account.ADUsername          = "******";
            account.ForwardAddress      = "FA";
            account.ForwardEnabled      = false;
            account.ForwardKeepOriginal = true;
            account.IsAD                       = false;
            account.MaxSize                    = 1250;
            account.PersonFirstName            = "First";
            account.PersonLastName             = "Last";
            account.SignatureEnabled           = true;
            account.SignatureHTML              = "HTML";
            account.SignaturePlainText         = "PLAIN";
            account.VacationMessage            = "VAC";
            account.VacationMessageExpires     = true;
            account.VacationMessageExpiresDate = "2020-01-01";
            account.VacationMessageIsOn        = true;
            account.VacationSubject            = "SUBJ";
            account.Password                   = "******";
            account.Save();

            // Set up fetch account
            FetchAccount fa = account.FetchAccounts.Add();

            fa.DaysToKeepMessages  = 5;
            fa.Enabled             = true;
            fa.MinutesBetweenFetch = 10;
            fa.Name                  = "test";
            fa.Port                  = _fetchAccountPort;
            fa.ProcessMIMEDate       = true;
            fa.ProcessMIMERecipients = true;
            fa.ServerAddress         = "127.0.0.1";
            fa.Username              = "******";
            fa.UseSSL                = false;
            fa.UseAntiSpam           = true;
            fa.UseAntiVirus          = true;
            fa.Save();

            DownloadFromExternalAccount(account, fa);

            Rule rule = account.Rules.Add();

            rule.Name = "MyRule";
            RuleCriteria criteria = rule.Criterias.Add();

            criteria.MatchType       = eRuleMatchType.eMTGreaterThan;
            criteria.PredefinedField = eRulePredefinedField.eFTMessageSize;
            criteria.MatchValue      = "0";
            criteria.Save();

            RuleAction action = rule.Actions.Add();

            action.Type           = eRuleActionType.eRAForwardEmail;
            action.To             = "*****@*****.**";
            action.Body           = "Test";
            action.Filename       = "File";
            action.FromAddress    = "T";
            action.FromName       = "N";
            action.HeaderName     = "H";
            action.IMAPFolder     = "Folder";
            action.ScriptFunction = "Script";
            action.Subject        = "Subj";
            action.Value          = "Value";
            action.Save();

            rule.Save();
        }