Exemplo n.º 1
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 IMAPSimulator(true, 14300);
               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;
            }
             }
        }
Exemplo n.º 2
0
        public void TestNestedOrSearch()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             // Send a message to this account.
             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send("*****@*****.**", "*****@*****.**", "Search test", "This is a test of IMAP Search");

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

             var oSimulator = new IMAPSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");

             string result =
            oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SINCE 28-May-2008 SINCE 28-May-2008 SINCE 28-May-2008");
             Assert.IsTrue(result.StartsWith("* SEARCH 1"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR SMALLER 1 LARGER 10000");
             Assert.IsTrue(result.StartsWith("* SEARCH\r\n"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SMALLER 1 LARGER 10000 SMALLER 10000");
             Assert.IsTrue(result.StartsWith("* SEARCH 1\r\n"), result);
        }
Exemplo n.º 3
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 IMAPSimulator();
             oSimulator.ConnectAndLogon(account.Address, "test");
             oSimulator.SelectFolder("INBOX");
             string result = oSimulator.Fetch("1 BODYSTRUCTURE");
             oSimulator.Disconnect();

             // utf-8 representation of 本本本.zip:
             Assert.IsTrue(result.Contains("=?utf-8?B?5pys5pys5pys?=.zip"));
        }
Exemplo n.º 4
0
        public void TestChangeRecentFlag()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             var simulator = new IMAPSimulator();
             simulator.ConnectAndLogon(oAccount.Address, "test");
             string result = simulator.ExamineFolder("Inbox");
             Assert.IsTrue(result.Contains("* 1 RECENT"), result);
             simulator.Close();
             simulator.Disconnect();

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

             simulator = new IMAPSimulator();
             simulator.ConnectAndLogon(oAccount.Address, "test");
             result = simulator.ExamineFolder("Inbox");
             Assert.IsTrue(result.Contains("* 0 RECENT"), result);
             simulator.Close();
             simulator.Disconnect();
        }
Exemplo n.º 5
0
        public void TestDateSortOrder()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral("*****@*****.**", "test");
             Assert.IsTrue(oSimulator.SelectFolder("Inbox"));

             string response =
            oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 22:00:00 +0200\" {37}",
                                                    "Date: Wed, 15 Dec 2010 13:00:00 +0000");
             Assert.IsTrue(response.Contains("* 1 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 21:00:00 +0200\" {37}",
                                                            "Date: Wed, 15 Dec 2010 14:00:00 +0000");
             Assert.IsTrue(response.Contains("* 2 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 20:00:00 +0200\" {37}",
                                                            "Date: Wed, 15 Dec 2010 12:00:00 +0000");
             Assert.IsTrue(response.Contains("* 3 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"23-Feb-2008 01:30:23 +0200\" {37}",
                                                            "Date: Wed, 15 Dec 2010 11:00:00 +0000");
             Assert.IsTrue(response.Contains("* 4 EXISTS"), response);

             string sortDateResponse = oSimulator.SendSingleCommand("A10 SORT (DATE) US-ASCII ALL");

             Assert.IsTrue(sortDateResponse.Contains(" 4 3 1 2"));
             oSimulator.Disconnect();
        }
Exemplo n.º 6
0
        public void TestChangeSeenFlag()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             var simulator = new IMAPSimulator();
             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();

             Assert.AreEqual(flags, flagsAfter);

             var secondSimulator = new IMAPSimulator();
             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();

             Assert.AreNotEqual(secondFlags, secondFlagsAfter);
        }
Exemplo n.º 7
0
        public void FolderMarkedAsReadOnlyWhenUserHasReadOnlyRights()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

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

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

             string selectResult = string.Empty;

             var oSimulator1 = new IMAPSimulator();
             oSimulator1.Connect();
             oSimulator1.LogonWithLiteral(account1.Address, "test");
             oSimulator1.SelectFolder("#Public.Share1", out selectResult);
             oSimulator1.Disconnect();

             Assert.IsTrue(selectResult.Contains("[READ-ONLY]"), selectResult);
             Assert.IsFalse(selectResult.Contains("[READ-WRITE]"), selectResult);
        }
Exemplo n.º 8
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();

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

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

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

             var sim = new IMAPSimulator();
             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);
             }

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

             Assert.AreEqual(copy, uids);
        }
Exemplo n.º 9
0
        public void TestCreateFolderWithSlash()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             const string folderName = "ABC\\123";

             var oSimulator = new IMAPSimulator();
             oSimulator.Connect();
             oSimulator.Logon(oAccount.Address, "test");
             CustomAssert.IsTrue(oSimulator.CreateFolder(folderName));
             CustomAssert.IsTrue(oSimulator.List().Contains(folderName));
             CustomAssert.IsTrue(oSimulator.SelectFolder(folderName));
             oSimulator.Disconnect();
        }
Exemplo n.º 10
0
        public void Test()
        {
            IMAPSimulator sim = new IMAPSimulator();
             sim.ConnectAndLogon("*****@*****.**", "test");
             sim.SelectFolder("Inbox");

             Stopwatch watch = new Stopwatch();

             watch.Start();
             string result = sim.SendSingleCommand("A282 SORT (SIZE) UTF-8");
             watch.Stop();

             long sortSizeTime = watch.ElapsedMilliseconds;
             watch.Reset();

             watch.Start();
             result = sim.SendSingleCommand("A282 SORT (FROM) UTF-8");
             watch.Stop();

             long sortFromTime = watch.ElapsedMilliseconds;
             watch.Reset();

             watch.Start();
             result = sim.SendSingleCommand("A282 SORT (FROM) UTF-8 1:15");
             watch.Stop();

             long sortFromTimeLimit15 = watch.ElapsedMilliseconds;
             watch.Reset();

             watch.Start();
             result = sim.SendSingleCommand("A282 SORT (DATE) UTF-8");
             watch.Stop();

             long sortDateTime = watch.ElapsedMilliseconds;
             watch.Reset();

             System.Threading.Thread.Sleep(1);
        }
Exemplo n.º 11
0
        public void TestFetch()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

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

             var sim = new IMAPSimulator();
             sim.ConnectAndLogon(account.Address, "test");
             sim.SelectFolder("INBOX");
             string result = sim.Fetch("1 BODY[1]");
             Assert.IsTrue(result.Contains("SampleBody1"), result);
             result = sim.Fetch("2 BODY[1]");
             Assert.IsTrue(result.Contains("SampleBody2"), result);
             result = sim.Fetch("3 BODY[1]");
             Assert.IsTrue(result.Contains("SampleBody3"), result);
        }
Exemplo n.º 12
0
        public void TestAppendFolderNameInOctet()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");
             oSimulator.CreateFolder("MONK");
             oSimulator.SendRaw("A01 APPEND {4}\r\n");
             string result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for additional command text."));

             oSimulator.SendRaw("MONK (\\Seen) \"20-Jan-2009 12:59:50 +0100\" {5}\r\n");
             result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for literal data"));

             oSimulator.SendRaw("WOOOT\r\n");
             result = oSimulator.Receive();

             Assert.AreEqual("A01 OK APPEND completed\r\n", result);
        }
Exemplo n.º 13
0
        public void TestDateSortOrderNonexistantDate()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral("*****@*****.**", "test");
             Assert.IsTrue(oSimulator.SelectFolder("Inbox"));

             string response = oSimulator.SendSingleCommandWithLiteral(
            "A04 APPEND INBOX \"22-Feb-2008 22:00:00 +0200\" {4}", "ABCD");
             Assert.IsTrue(response.Contains("* 1 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 21:00:00 +0200\" {4}",
                                                            "ABCD");
             Assert.IsTrue(response.Contains("* 2 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 20:00:00 +0200\" {4}",
                                                            "ABCD");
             Assert.IsTrue(response.Contains("* 3 EXISTS"), response);

             response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"23-Feb-2008 01:30:23 +0200\" {4}",
                                                            "ABCD");
             Assert.IsTrue(response.Contains("* 4 EXISTS"), response);

             /*
              * RFC 5256 "2.2. Sent Date" chapter. If the sent date cannot be determined (a Date: header is missing or cannot be parsed),
              * the INTERNALDATE for that message is used as the sent date.
              */

             string sortDateResponse = oSimulator.SendSingleCommand("A10 SORT (DATE) US-ASCII ALL");
             string sortArivalDateResponse = oSimulator.SendSingleCommand("A10 SORT (ARRIVAL) US-ASCII ALL");

             Assert.IsTrue(sortArivalDateResponse.Contains(" 3 2 1 4"));
             Assert.AreEqual(sortDateResponse, sortArivalDateResponse);
             oSimulator.Disconnect();
        }
Exemplo n.º 14
0
        public void TestIdle()
        {
            _settings.IMAPIdleEnabled = true;

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

             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");
             Assert.IsTrue(oSimulator.SelectFolder("INBOX"));

             oSimulator.StartIdle();

             if (oSimulator.GetPendingDataExists())
            throw new Exception("Unexpected data exists");

             // Send a message to this account.
             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send(account.Address, account.Address, "IDLE Test", "This is a test of IDLE");

             string data;
             Assert.IsTrue(oSimulator.EndIdle(false, out data));
        }
Exemplo n.º 15
0
        public void TestFolderUpdateNotification()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

             var simulator1 = new IMAPSimulator();
             var 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();
        }
Exemplo n.º 16
0
        public void TestFolderExpungeNotification()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

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

             var simulator1 = new IMAPSimulator();
             var 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();
        }
Exemplo n.º 17
0
        public void TestExpungeNotification()
        {
            _settings.IMAPIdleEnabled = true;

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

             for (int i = 0; i < 5; i++)
            SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test");

             POP3Simulator.AssertMessageCount(oAccount.Address, "test", 5);

             var oSimulator1 = new IMAPSimulator();
             var oSimulator2 = new IMAPSimulator();
             oSimulator1.ConnectAndLogon(oAccount.Address, "test");
             oSimulator2.ConnectAndLogon(oAccount.Address, "test");

             oSimulator1.SelectFolder("Inbox");
             oSimulator2.SelectFolder("Inbox");

             for (int i = 1; i <= 5; i++)
             {
            Assert.IsTrue(oSimulator1.SetFlagOnMessage(i, true, @"\Deleted"));
             }

             string noopResponse = oSimulator2.NOOP() + oSimulator2.NOOP();

             Assert.IsTrue(noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") &&
                       noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") &&
                       noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") &&
                       noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") &&
                       noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)"), noopResponse);

             bool result = oSimulator1.Expunge();

             string expungeResult = oSimulator2.NOOP() + oSimulator2.NOOP();

             Assert.IsTrue(
            expungeResult.Contains("* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE"),
            expungeResult);
        }
Exemplo n.º 18
0
        public void TestBodyStructureWithNonLatinCharacterTest3()
        {
            string @messageText =
            "To: [email protected]\r\n" +
            "Content-Type: multipart/mixed;\r\n" +
            " boundary=\"------------000008080307000003010005\"\r\n" +
            "\r\n" +
            "This is a multi-part message in MIME format.\r\n" +
            "--------------000008080307000003010005\r\n" +
            "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n" +
            "Content-Transfer-Encoding: 7bit\r\n" +
            "\r\n" +
            "Test\r\n" +
            "\r\n" +
            "--------------000008080307000003010005\r\n" +
            "Content-Type: image/png;\r\n" +
            " name=\"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\"\r\n" +
            "Content-Transfer-Encoding: base64\r\n" +
            "Content-Disposition: inline;\r\n" +
            " filename*=ISO-8859-1''%F6%50%C4%C9%CD%C1%D6%60%F6%F6%E4%27%2E%70%6E%67\r\n" +
            "\r\n" +
            "iVBORw0KGgoAAAANSUhEUgAAAqgAAAH4CAIAAAAJvIhhAAAAAXNSR0IArs4c6QAAAARnQU1B\r\n" +
            "AACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA\r\n" +
            "--------------000008080307000003010005--\r\n";

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

             Assert.IsTrue(SMTPClientSimulator.StaticSendRaw(account.Address, account.Address, messageText));

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

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

             Assert.IsTrue(
            result.Contains("\"FILENAME\" \"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\""));
             Assert.IsTrue(
            result.Contains("\"NAME\" \"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\""));
        }
Exemplo n.º 19
0
        public void TestRenameSubFolderToMatchingName()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();
             CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test"));
             CustomAssert.IsTrue(oSimulator.CreateFolder("Folder1"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1"));

             string result = string.Empty;
             CustomAssert.IsFalse(oSimulator.RenameFolder("Folder1", "Folder1.Sub1", out result));
             CustomAssert.IsTrue(result.Contains("A folder cannot be moved into one of its subfolders."));
             CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1"));

             result = string.Empty;
             CustomAssert.IsTrue(oSimulator.RenameFolder("Folder1", "Folder1Test", out result));
             CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1Test"));

             oSimulator.Disconnect();
        }
Exemplo n.º 20
0
        public void TestRenameLongFolder()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             CustomAssert.IsTrue(oSimulator.CreateFolder("1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25"));
             CustomAssert.IsTrue(oSimulator.CreateFolder("A"));

             CustomAssert.IsFalse(oSimulator.RenameFolder("1", "A.1"));
             CustomAssert.IsTrue(oSimulator.RenameFolder("1.2.3", "A.1"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("A.1.4"));

             oSimulator.Disconnect();
        }
Exemplo n.º 21
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.
             Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 1 Subject",
                                                      "Message 1 Body"));
             POP3Simulator.AssertMessageCount(account.Address, "test", 1);

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

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

             var sim = new IMAPSimulator();
             Assert.IsTrue(sim.ConnectAndLogon(account.Address, "test"));
             Assert.IsTrue(sim.SelectFolder("Inbox"));
             Assert.IsTrue(sim.SetDeletedFlag(2));
             Assert.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();
        }
Exemplo n.º 22
0
        public void TestConnectionObjectRelease()
        {
            TestSetup.DeleteCurrentDefaultLog();

             _settings.IMAPIdleEnabled = true;

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

             var simulator = new IMAPSimulator();

             string data;

             string sWelcomeMessage = simulator.Connect();
             simulator.Logon(account.Address, "test");
             Assert.IsTrue(simulator.SelectFolder("INBOX"));
             Assert.IsTrue(simulator.StartIdle());
             Assert.IsTrue(simulator.EndIdle(true, out data));
             Assert.IsTrue(simulator.Logout());

             string logData = TestSetup.ReadCurrentDefaultLog();

             Assert.IsTrue(TestSetup.DefaultLogContains("Ending session"));
        }
Exemplo n.º 23
0
        public void TestFolderCaseInLSUB()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             string folderName = "ABC.def.GHI";

             var oSimulator = new IMAPSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(oAccount.Address, "test");
             CustomAssert.IsTrue(oSimulator.CreateFolder(folderName));
             CustomAssert.IsTrue(oSimulator.Subscribe(folderName));
             CustomAssert.IsFalse(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.def.GHI"));
             CustomAssert.IsTrue(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.DEF.GHI"));
             CustomAssert.IsFalse(oSimulator.LSUB("ABC.def.*").Contains("ABC.DEF"));
             CustomAssert.IsTrue(oSimulator.LSUB("ABC.def.*").Contains("ABC.def.GHI"));
             CustomAssert.IsTrue(oSimulator.SelectFolder(folderName));
             oSimulator.Disconnect();
        }
Exemplo n.º 24
0
        public void TestDelete()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             Assert.IsFalse(oSimulator.DeleteFolder("DoesNotExist"));
             Assert.IsTrue(oSimulator.CreateFolder("DoesExist"));
             Assert.IsTrue(oSimulator.SelectFolder("DoesExist"));
             oSimulator.Close();
             Assert.IsTrue(oSimulator.DeleteFolder("DoesExist"));
             Assert.IsFalse(oSimulator.SelectFolder("DoesExist"));
        }
Exemplo n.º 25
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 IMAPSimulator();
             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"));
        }
Exemplo n.º 26
0
        public void TestDeleteIMAPFolderNotifications()
        {
            _settings.IMAPIdleEnabled = true;

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

             var oSimulator1 = new IMAPSimulator();
             var oSimulator2 = new IMAPSimulator();
             oSimulator1.ConnectAndLogon(oAccount.Address, "test");
             oSimulator2.ConnectAndLogon(oAccount.Address, "test");

             oSimulator1.SelectFolder("Inbox");
             oSimulator2.CreateFolder("Mailbox");
             oSimulator2.DeleteFolder("Mailbox");

             SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test");

             POP3Simulator.AssertMessageCount(oAccount.Address, "test", 1);

             string noopResponse = oSimulator1.NOOP() + oSimulator1.NOOP();

             // confirm that the client is notified about this message even though another
             // folder has been dropped by another client.
             Assert.IsTrue(noopResponse.Contains(@"* 1 EXISTS"), noopResponse);
        }
Exemplo n.º 27
0
        public void TestRenameToSubFolder()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             CustomAssert.IsTrue(oSimulator.CreateFolder("1.2.3.4.5"));
             CustomAssert.IsTrue(oSimulator.CreateFolder("A"));
             CustomAssert.IsTrue(oSimulator.RenameFolder("1", "A.1"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("A.1"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("A.1.2.3.4.5"));
             CustomAssert.IsTrue(oSimulator.RenameFolder("A.1", "1"));
             CustomAssert.IsFalse(oSimulator.SelectFolder("A.1"));
             CustomAssert.IsFalse(oSimulator.SelectFolder("A.1.2.3.4.5"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("1"));
             CustomAssert.IsTrue(oSimulator.SelectFolder("1.2.3.4.5"));

             oSimulator.Disconnect();
        }
Exemplo n.º 28
0
        public void TestExpunge()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**",
                                                                            "test");

             for (int i = 0; i < 3; i++)
            SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "test");

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

             var simulator = new IMAPSimulator();
             Assert.IsTrue(simulator.ConnectAndLogon(account.Address, "test"));
             Assert.IsTrue(simulator.SelectFolder("Inbox"));

             Assert.IsTrue(simulator.SetFlagOnMessage(1, true, @"\Deleted"));
             Assert.IsTrue(simulator.SetFlagOnMessage(3, true, @"\Deleted"));

             string result;
             Assert.IsTrue(simulator.Expunge(out result));

             // Messages 1 and 2 should be deleted. 2, because when the first message
             // is deleted, the index of the message which was originally 3, is now 2.
             Assert.IsTrue(result.Contains("* 1 EXPUNGE\r\n* 2 EXPUNGE"));
        }
Exemplo n.º 29
0
        public void TestCreateLongFolder()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");

             string folderName = "";
             for (int i = 0; i < 255; i++)
            folderName = folderName + "A";

             string result = oSimulator.Send("A01 CREATE " + folderName);
             CustomAssert.IsTrue(result.Contains("A01 OK"));
             CustomAssert.IsTrue(oSimulator.SelectFolder(folderName));

             folderName = "";
             for (int i = 0; i < 256; i++)
            folderName = folderName + "A";

             result = oSimulator.Send("A01 CREATE " + folderName);
             CustomAssert.IsTrue(result.Contains("A01 NO"));
             CustomAssert.IsFalse(oSimulator.SelectFolder(folderName));

             oSimulator.Disconnect();
        }
Exemplo n.º 30
0
        public void TestAppendFolderNameInOctetNoFlagList()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");
             oSimulator.CreateFolder("MONK");
             oSimulator.SendRaw("A01 APPEND {4}\r\n");
             string result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for additional command text."));

             oSimulator.SendRaw("MONK  \"12-Jan-2009 12:12:12 +0100\" {5}\r\n");
             result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for literal data"));

             oSimulator.SendRaw("WOOOT\r\n");
             result = oSimulator.Receive();

             Assert.AreEqual("A01 OK APPEND completed\r\n", result);

             DateTime date = Convert.ToDateTime(oAccount.IMAPFolders.get_ItemByName("MONK").Messages[0].InternalDate);

             Assert.AreEqual(2009, date.Year);
             Assert.AreEqual(12, date.Day);
             Assert.AreEqual(1, date.Month);
        }