Пример #1
0
        public void TestFolderDeletion()
        {
            // Create a test account
            // Fetch the default domain
            hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            IMAPSimulator simulator1 = new IMAPSimulator();

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

            Assert.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();
            Assert.IsFalse(result.Contains(folder.Name));
            simulator1.Disconnect();
        }
Пример #2
0
        public void TestFetchEnvelopeWithDateContainingQuote()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "Date: Wed, 22 Apr 2009 11:05:09 \"GMT\"" + Environment.NewLine +
                             "Subject: Something" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            SMTPClientSimulator smtpSimulator = new SMTPClientSimulator();

            smtpSimulator.SendRaw(account.Address, account.Address, message);

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

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

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

            oSimulator.Disconnect();

            Assert.IsTrue(result.Contains("Wed, 22 Apr 2009 11:05:09 GMT"));
        }
Пример #3
0
        public void TestFetchHeaderFieldsNot()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "Date: Wed, 22 Apr 2009 11:05:09 \"GMT\"" + Environment.NewLine +
                             "Subject: Something" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            SMTPClientSimulator smtpSimulator = new SMTPClientSimulator();

            Assert.IsTrue(smtpSimulator.SendRaw(account.Address, account.Address, message));

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

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODY.PEEK[HEADER.FIELDS.NOT (Subject From)]");

            oSimulator.Disconnect();


            Assert.IsTrue(result.Contains("Received:"), result);
            Assert.IsFalse(result.Contains("Subject:"), result);
            Assert.IsFalse(result.Contains("From:"), result);
            // The feedback should end with an empty header line.
            Assert.IsTrue(result.Contains("\r\n\r\n)"), result);
        }
Пример #4
0
        public void ConfirmFileAddedToCorrectAccountFolder()
        {
            Utilities utilities = SingletonProvider<Utilities>.Instance;
            hMailServer.Account oAccount = utilities.AddAccount(_domain, "*****@*****.**", "test");
            IMAPSimulator oSimulator = new IMAPSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = utilities.GetPublicDirectory();
            utilities.AssertFilesInDirectory(publicDir, 0);

            // Add a message to the inbox.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD");

            // Confirm it exists in the IMAP folder.
            Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();

            // The public directory should still be empty - the message was added to the user account.
            utilities.AssertFilesInDirectory(publicDir, 0);

            // There should be a single file in the users directory.
            utilities.AssertFilesInUserDirectory(oAccount, 1);
        }
Пример #5
0
        public void ConfirmFileAddedToCorrectAccountFolder()
        {
            Utilities utilities = SingletonProvider <Utilities> .Instance;

            hMailServer.Account oAccount   = utilities.AddAccount(_domain, "*****@*****.**", "test");
            IMAPSimulator       oSimulator = new IMAPSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = utilities.GetPublicDirectory();

            utilities.AssertFilesInDirectory(publicDir, 0);

            // Add a message to the inbox.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD");

            // Confirm it exists in the IMAP folder.
            Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();

            // The public directory should still be empty - the message was added to the user account.
            utilities.AssertFilesInDirectory(publicDir, 0);

            // There should be a single file in the users directory.
            utilities.AssertFilesInUserDirectory(oAccount, 1);
        }
Пример #6
0
        public void TestBodyStructureWithNonLatinCharacter()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

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

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

            hMailServer.Message message = new hMailServer.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();

            Utilities.AssertMessageExistsInFolder(account.IMAPFolders[0], 1);

            IMAPSimulator 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"));
        }
Пример #7
0
        public void TestHierarchyDelimiterDelete()
        {
            hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp();

            hMailServer.Settings settings = _settings;
            settings.IMAPHierarchyDelimiter = "\\";

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

            string folderName = "Test\\Test";

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder(folderName));
            string listResponse = oSimulator.List();

            Assert.IsTrue(listResponse.Contains("\"Test\\Test\""));
            Assert.IsTrue(listResponse.Contains("\"Test\""));
            Assert.IsTrue(oSimulator.DeleteFolder("Test\\Test"));
            listResponse = oSimulator.List();
            Assert.IsFalse(listResponse.Contains("Test\\Test"));
            Assert.IsTrue(listResponse.Contains("Test"));
            oSimulator.Disconnect();
        }
Пример #8
0
        public void TestIMAPServer()
        {
            Utilities.DeleteCurrentDefaultLog();

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

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

                    imapSim.Disconnect();
                    break;
                }
                catch (Exception)
                {
                    if (i == 29)
                    {
                        throw;
                    }
                }
            }
        }
Пример #9
0
        public void SendExploitFile(string file, bool sendAllAtOnce)
        {
            IMAPSimulator sim = ConnectAndLogon();

            string contents = File.ReadAllText(file);

            if (sendAllAtOnce)
            {
                sim.Send(contents);
            }
            else
            {
                string[] commands = Microsoft.VisualBasic.Strings.Split(contents, Environment.NewLine, 1000000, Microsoft.VisualBasic.CompareMethod.Text);
                foreach (string command in commands)
                {
                    try
                    {
                        sim.SendSingleCommand(command);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        sim = ConnectAndLogon();
                    }
                }
            }

            sim.Disconnect();
        }
Пример #10
0
        public void TestImportOfMessageIntoOtherFolder()
        {
            string @messageText =
                "From: [email protected]\r\n" +
                "\r\n" +
                "Test\r\n";

            hMailServer.Account account = SingletonProvider <Utilities> .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);

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

            POP3Simulator.AssertMessageCount("*****@*****.**", "test", 0);
            IMAPSimulator sim = new IMAPSimulator();

            sim.ConnectAndLogon("*****@*****.**", "test");
            Assert.AreEqual(1, sim.GetMessageCount("Woho"));
            sim.Disconnect();
        }
Пример #11
0
        public void TestListSpecial()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(oAccount.Address, "test");
            string response = oSimulator.List("");

            Assert.IsTrue(response.StartsWith("* LIST (\\Noselect) \".\" \"\""));
            oSimulator.Disconnect();

            _settings.IMAPHierarchyDelimiter = "/";

            oSimulator      = new IMAPSimulator();
            sWelcomeMessage = oSimulator.Connect();
            oSimulator.Logon(oAccount.Address, "test");
            response = oSimulator.List("");
            Assert.IsTrue(response.StartsWith("* LIST (\\Noselect) \"/\" \"\""));
            oSimulator.Disconnect();

            _settings.IMAPHierarchyDelimiter = "\\";

            oSimulator      = new IMAPSimulator();
            sWelcomeMessage = oSimulator.Connect();
            oSimulator.Logon(oAccount.Address, "test");
            response = oSimulator.List("", false);
            string expectedResponse = "* LIST (\\Noselect) \"\\\\\" \"\"";

            Assert.IsTrue(response.StartsWith(expectedResponse));
            oSimulator.Disconnect();
        }
Пример #12
0
        public void FolderMarkedAsReadOnlyWhenUserHasReadOnlyRights()
        {
            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.ePermissionLookup, true);
             permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true);
             permission.Save();

             string selectResult = string.Empty;

             IMAPSimulator 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);
        }
Пример #13
0
        public void TestChangeSeenFlag()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

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

            IMAPSimulator 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);
        }
Пример #14
0
        public void TestDateSortOrder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator 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();
        }
Пример #15
0
        public void TestDateSortOrder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             IMAPSimulator 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();
        }
Пример #16
0
        public void TestChangeRecentFlag()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            IMAPSimulator 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();
        }
Пример #17
0
        public void TestCreateLongFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = 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);

            Assert.IsTrue(result.Contains("A01 OK"));
            Assert.IsTrue(oSimulator.SelectFolder(folderName));

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

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

            oSimulator.Disconnect();
        }
Пример #18
0
        public void ExamineFolderRequiresReadPermission()
        {
            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.ePermissionLookup, true);
             permission.Save();

             string selectResult = string.Empty;

             IMAPSimulator oSimulator1 = new IMAPSimulator();
             oSimulator1.Connect();
             oSimulator1.LogonWithLiteral(account1.Address, "test");
             string examineResult = oSimulator1.ExamineFolder("#Public.Share1");
             oSimulator1.Disconnect();

             Assert.IsTrue(examineResult.Contains("ACL: Read permission denied (Required for EXAMINE command)."), examineResult);
        }
Пример #19
0
        public void TestCreateFolderWithHash()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(oAccount.Address, "test");
             Assert.IsFalse(oSimulator.CreateFolder("#Test"));
             Assert.IsTrue(oSimulator.CreateFolder("Test.#Testar"));
             oSimulator.Disconnect();
        }
Пример #20
0
        public void TestAppendBadLiteral()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral("*****@*****.**", "test");
             oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {TEST}", "ABCD");
             Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX"));
             oSimulator.Disconnect();
        }
Пример #21
0
        public void TestCreateFolderWithHash()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(oAccount.Address, "test");
            Assert.IsFalse(oSimulator.CreateFolder("#Test"));
            Assert.IsTrue(oSimulator.CreateFolder("Test.#Testar"));
            oSimulator.Disconnect();
        }
Пример #22
0
        public void TestCreateDeepFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             string result = oSimulator.Send("A01 CREATE 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.26");
             Assert.IsTrue(result.Contains("A01 NO"));

             oSimulator.Disconnect();
        }
Пример #23
0
        public void TestAppend()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD");
            Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();
        }
Пример #24
0
        public void TestCreateFolderWithSlash()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              string folderName = "ABC\\123";

              IMAPSimulator oSimulator = new IMAPSimulator();
              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              Assert.IsTrue(oSimulator.CreateFolder(folderName));
              Assert.IsTrue(oSimulator.List().Contains(folderName));
              Assert.IsTrue(oSimulator.SelectFolder(folderName));
              oSimulator.Disconnect();
        }
Пример #25
0
        public void TestFolderLSUBUnsubscribedFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string folderName = "ABC.def.GHI";

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(oAccount.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder(folderName));
            Assert.IsFalse(oSimulator.LSUB().Contains("\r\n\r\n"));
            oSimulator.Disconnect();
        }
Пример #26
0
        public void TestIMAPLogonFailure()
        {
            _settings.AutoBanOnLogonFailure         = true;
            _settings.MaxInvalidLogonAttempts       = 4;
            _settings.MaxInvalidLogonAttemptsWithin = 5;
            _settings.AutoBanMinutes = 3;

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

            IMAPSimulator sim = new IMAPSimulator();

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

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

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

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

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

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

            string logText = Utilities.ReadCurrentDefaultLog();

            Assert.IsTrue(logText.Contains("Blocked either by IP range or by connection limit."), logText);
        }
Пример #27
0
        public void TestRenameToAndFromINBOX()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            oSimulator.Send("A01 CREATE A\r\n");
            Assert.IsFalse(oSimulator.RenameFolder("A", "INBOX"));
            Assert.IsFalse(oSimulator.RenameFolder("INBOX", "B"));

            oSimulator.Disconnect();
        }
Пример #28
0
        public void TestCreateFolderWithSlash()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string folderName = "ABC\\123";

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(oAccount.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder(folderName));
            Assert.IsTrue(oSimulator.List().Contains(folderName));
            Assert.IsTrue(oSimulator.SelectFolder(folderName));
            oSimulator.Disconnect();
        }
Пример #29
0
        public void TestCreateDeepFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            string result = oSimulator.Send("A01 CREATE 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.26");

            Assert.IsTrue(result.Contains("A01 NO"));

            oSimulator.Disconnect();
        }
Пример #30
0
        public void TestRenameIncorrectParameters()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            string result = oSimulator.Send("A01 CREATE A");

            result = oSimulator.Send("A02 RENAME A B C");
            Assert.IsTrue(result.Contains("A02 BAD"));

            oSimulator.Disconnect();
        }
Пример #31
0
        public void TestCreateParallelFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            string result = oSimulator.Send("A01 CREATE 1.2.3");

            Assert.IsTrue(result.Contains("A01 OK"));
            result = oSimulator.Send("A01 CREATE 1.2.4");
            Assert.IsTrue(result.Contains("A01 OK"));

            oSimulator.Disconnect();
        }
Пример #32
0
        public void TestListWithReference()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

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

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

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

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

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

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

             SMTPClientSimulator.StaticSendRaw(account.Address, account.Address,
            "From: [email protected]\r\n" +
            "Content-Type: text/plain; charset =\"iso-8859-1\"\r\n" +
            "\r\n" +
            "Test\r\n");

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

             IMAPSimulator sim = new IMAPSimulator(account.Address, "test", "Inbox");
             string result = sim.Fetch("1 BODYSTRUCTURE");
             sim.Disconnect();

             Assert.IsTrue(result.Contains("(\"CHARSET\" \"iso-8859-1\")"), result);
        }
Пример #34
0
        public void TestFolderCaseInLIST()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string folderName = "ABC.def.GHI";

            IMAPSimulator oSimulator      = new IMAPSimulator();
            string        sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(oAccount.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder(folderName));
            Assert.IsFalse(oSimulator.List("ABC.DEF.*").Contains("ABC.def.GHI"));
            Assert.IsTrue(oSimulator.List("ABC.DEF.*").Contains("ABC.DEF.GHI"));
            Assert.IsFalse(oSimulator.List("ABC.def.*").Contains("ABC.DEF"));
            Assert.IsTrue(oSimulator.List("ABC.def.*").Contains("ABC.def.GHI"));
            Assert.IsTrue(oSimulator.SelectFolder(folderName));
            oSimulator.Disconnect();
        }
Пример #35
0
        public void TestRenameSubFolderToChildSub()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

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

            string result;

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

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

            oSimulator.Disconnect();
        }
        public void TestHierarchyDelimiterCreate()
        {
            hMailServer.Application application = SingletonProvider<Utilities>.Instance.GetApp();
            hMailServer.Settings settings = _settings;
            settings.IMAPHierarchyDelimiter = "/";

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

            string folderName = "Test.Test";

            IMAPSimulator oSimulator = new IMAPSimulator();
            string sWelcomeMessage = oSimulator.Connect();
            oSimulator.Logon(account.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder(folderName));
            string listResponse = oSimulator.List();
            Assert.IsTrue(listResponse.Contains("\"" + folderName + "\""));
            Assert.IsTrue(!listResponse.Contains("\"Test\""));
            oSimulator.Disconnect();
        }
Пример #37
0
        public void TestFetchCharsetInQuotesWithoutQuotesWithSpace()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSendRaw(account.Address, account.Address,
                                              "From: [email protected]\r\n" +
                                              "Content-Type: text/plain; charset = iso-8859-1 \r\n" +
                                              "\r\n" +
                                              "Test\r\n");

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

            IMAPSimulator sim    = new IMAPSimulator(account.Address, "test", "Inbox");
            string        result = sim.Fetch("1 BODYSTRUCTURE");

            sim.Disconnect();

            Assert.IsTrue(result.Contains("(\"CHARSET\" \"iso-8859-1\")"), result);
        }
Пример #38
0
        public void TestRenameLongFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            Assert.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"));
            Assert.IsTrue(oSimulator.CreateFolder("A"));

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


            oSimulator.Disconnect();
        }
Пример #39
0
        public void TestRenameToParallelFolder()
        {
            hMailServer.Account oAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            IMAPSimulator oSimulator = new IMAPSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral(oAccount.Address, "test");
            Assert.IsTrue(oSimulator.CreateFolder("Main.Sub"));
            Assert.IsTrue(oSimulator.RenameFolder("Main.Sub", "Second.Sub"));

            string listResponse = oSimulator.List();

            Assert.IsFalse(listResponse.Contains("Main.Sub"));
            Assert.IsTrue(listResponse.Contains("Second.Sub"));


            oSimulator.Disconnect();
        }
Пример #40
0
        public void ConfirmFileAddedToCorrectPublicFolder()
        {
            Utilities utilities = SingletonProvider <Utilities> .Instance;

            hMailServer.Account oAccount   = utilities.AddAccount(_domain, "*****@*****.**", "test");
            IMAPSimulator       oSimulator = new IMAPSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = utilities.GetPublicDirectory();

            utilities.AssertFilesInDirectory(publicDir, 0);

            hMailServer.IMAPFolders folders = _application.Settings.PublicFolders;
            hMailServer.IMAPFolder  folder  = folders.Add("Share");
            folder.Save();

            // Give everyone access to the folder.
            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.ePermissionInsert, true);
            permission.Save();

            // Add the message to the public folder.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD");

            // Confirm that the message exists in the public folder and not in the inbox.
            Assert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share"));
            Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();


            // The public directory should now contain the message.
            utilities.AssertFilesInDirectory(publicDir, 1);

            // There users directory should still be empty.
            utilities.AssertFilesInUserDirectory(oAccount, 0);
        }
Пример #41
0
        public void ConfirmFileAddedToCorrectPublicFolder()
        {
            Utilities utilities = SingletonProvider<Utilities>.Instance;
            hMailServer.Account oAccount = utilities.AddAccount(_domain, "*****@*****.**", "test");
            IMAPSimulator oSimulator = new IMAPSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = utilities.GetPublicDirectory();
            utilities.AssertFilesInDirectory(publicDir, 0);

            hMailServer.IMAPFolders folders = _application.Settings.PublicFolders;
            hMailServer.IMAPFolder folder = folders.Add("Share");
            folder.Save();

            // Give everyone access to the folder.
            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.ePermissionInsert, true);
            permission.Save();

            // Add the message to the public folder.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD");

            // Confirm that the message exists in the public folder and not in the inbox.
            Assert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share"));
            Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();

            // The public directory should now contain the message.
            utilities.AssertFilesInDirectory(publicDir, 1);

            // There users directory should still be empty.
            utilities.AssertFilesInUserDirectory(oAccount, 0);
        }
Пример #42
0
        public void TestRenameToSubFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

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

             oSimulator.Disconnect();
        }
Пример #43
0
        public void TestRenameToParallelFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              IMAPSimulator oSimulator = new IMAPSimulator();

              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.LogonWithLiteral(oAccount.Address, "test");
              Assert.IsTrue(oSimulator.CreateFolder("Main.Sub"));
              Assert.IsTrue(oSimulator.RenameFolder("Main.Sub", "Second.Sub"));

              string listResponse = oSimulator.List();
              Assert.IsFalse(listResponse.Contains("Main.Sub"));
              Assert.IsTrue(listResponse.Contains("Second.Sub"));

              oSimulator.Disconnect();
        }
Пример #44
0
        public void TestRenameToAndFromINBOX()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             oSimulator.Send("A01 CREATE A\r\n");
             Assert.IsFalse(oSimulator.RenameFolder("A", "INBOX"));
             Assert.IsFalse(oSimulator.RenameFolder("INBOX", "B"));

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

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

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

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

              oSimulator.Disconnect();
        }
Пример #46
0
        public void TestCreateUnnamedSubFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             string result = oSimulator.Send("A01 CREATE 1..3");
             Assert.IsTrue(result.Contains("A01 NO"));
             result = oSimulator.Send("A01 CREATE 1....3");
             Assert.IsTrue(result.Contains("A01 NO"));
             result = oSimulator.Send("A01 CREATE 1.......3");
             Assert.IsTrue(result.Contains("A01 NO"));

             oSimulator.Disconnect();
        }
        public void TestHierarchyDelimiterNamespaceResponse()
        {
            hMailServer.Application application = SingletonProvider<Utilities>.Instance.GetApp();
            hMailServer.Settings settings = _settings;
            settings.IMAPHierarchyDelimiter = "\\";
            string publicFolderName = _settings.IMAPPublicFolderName;

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

            IMAPSimulator oSimulator = new IMAPSimulator();
            oSimulator.ConnectAndLogon(account.Address, "test");
            string result = oSimulator.Send("A01 NAMESPACE");
            string correctNamespaceSetting = "* NAMESPACE ((\"\" \"\\\\\")) NIL ((\"" + publicFolderName + "\" \"\\\\\"))";
            Assert.IsTrue(result.Contains(correctNamespaceSetting), result);
            oSimulator.Disconnect();

            settings.IMAPHierarchyDelimiter = ".";

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

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

            settings.IMAPHierarchyDelimiter = "/";

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

            result = oSimulator.Send("A01 NAMESPACE");
            correctNamespaceSetting = "* NAMESPACE ((\"\" \"/\")) NIL ((\"" + publicFolderName + "\" \"/\"))";
            Assert.IsTrue(result.Contains(correctNamespaceSetting), result);
            oSimulator.Disconnect();
        }
Пример #48
0
        public void TestLsubInclusion()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              string folderName = "Folder1";

              IMAPSimulator oSimulator = new IMAPSimulator();
              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              Assert.IsTrue(oSimulator.CreateFolder(folderName));
              Assert.IsFalse(oSimulator.LSUB().Contains(folderName));
              Assert.IsTrue(oSimulator.Subscribe(folderName));
              Assert.IsTrue(oSimulator.LSUB().Contains(folderName));

              oSimulator.Disconnect();
        }
Пример #49
0
        public void TestListWithReferenceTestCase2()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              IMAPSimulator oSimulator = new IMAPSimulator();
              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);
              Assert.IsFalse(response.Contains("\"INBOX.MyApp\""));
              Assert.IsFalse(response.Contains("\"INBOX.SomeOtherFolder\""));
              Assert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"INBOX.MyApp.SubFolder1\""));
              Assert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"INBOX.MyApp.SubFolder2\""));

              oSimulator.Disconnect();
        }
Пример #50
0
        public void TestListWithReference()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              IMAPSimulator oSimulator = new IMAPSimulator();
              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);
              Assert.IsFalse(response.Contains("INBOX"));
              Assert.IsFalse(response.Contains("SomeOtherFolder"));
              Assert.IsTrue(response.Contains("* LIST (\\HasChildren) \".\" \"Main.Sub1\""));
              Assert.IsTrue(response.Contains("* LIST (\\HasChildren) \".\" \"Main.Sub1.Sub2\""));
              Assert.IsTrue(response.Contains("* LIST (\\HasNoChildren) \".\" \"Main.Sub1.Sub2.Sub3\""));

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

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

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

              oSimulator.Disconnect();
        }
Пример #51
0
        public void TestListSpecial()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              IMAPSimulator oSimulator = new IMAPSimulator();
              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              string response = oSimulator.List("");
              Assert.IsTrue(response.StartsWith("* LIST (\\Noselect) \".\" \"\""));
              oSimulator.Disconnect();

              _settings.IMAPHierarchyDelimiter = "/";

              oSimulator = new IMAPSimulator();
              sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              response = oSimulator.List("");
              Assert.IsTrue(response.StartsWith("* LIST (\\Noselect) \"/\" \"\""));
              oSimulator.Disconnect();

              _settings.IMAPHierarchyDelimiter = "\\";

              oSimulator = new IMAPSimulator();
              sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              response = oSimulator.List("", false);
              string expectedResponse = "* LIST (\\Noselect) \"\\\\\" \"\"";
              Assert.IsTrue(response.StartsWith(expectedResponse));
              oSimulator.Disconnect();
        }
Пример #52
0
        public void TestDateSortOrderNonexistantDate()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             IMAPSimulator 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();
        }
Пример #53
0
        public void TestFolderCaseInLSUB()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              string folderName = "ABC.def.GHI";

              IMAPSimulator oSimulator = new IMAPSimulator();
              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon(oAccount.Address, "test");
              Assert.IsTrue(oSimulator.CreateFolder(folderName));
              Assert.IsTrue(oSimulator.Subscribe(folderName));
              Assert.IsFalse(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.def.GHI"));
              Assert.IsTrue(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.DEF.GHI"));
              Assert.IsFalse(oSimulator.LSUB("ABC.def.*").Contains("ABC.DEF"));
              Assert.IsTrue(oSimulator.LSUB("ABC.def.*").Contains("ABC.def.GHI"));
              Assert.IsTrue(oSimulator.SelectFolder(folderName));
              oSimulator.Disconnect();
        }
Пример #54
0
        public void TestGetQuota()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

              IMAPSimulator oSimulator = new IMAPSimulator();

              string sWelcomeMessage = oSimulator.Connect();
              oSimulator.Logon("*****@*****.**", "test");
              string result = oSimulator.GetQuota("Inbox");
              Assert.IsTrue(result.Contains("A01 OK"));
              oSimulator.Disconnect();
        }
Пример #55
0
        public void TestCreateLongFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = 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);
             Assert.IsTrue(result.Contains("A01 OK"));
             Assert.IsTrue(oSimulator.SelectFolder(folderName));

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

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

             oSimulator.Disconnect();
        }
Пример #56
0
        public void TestRenameIncorrectParameters()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             string result = oSimulator.Send("A01 CREATE A");

             result = oSimulator.Send("A02 RENAME A B C");
             Assert.IsTrue(result.Contains("A02 BAD"));

             oSimulator.Disconnect();
        }
Пример #57
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();
        }
Пример #58
0
        public void TestLiterals()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             string result = oSimulator.Send("A01 CREATE {4}");
             result = oSimulator.Send("HEJS");

             oSimulator.Disconnect();
        }
Пример #59
0
        public void TestRenameLongFolder()
        {
            hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             IMAPSimulator oSimulator = new IMAPSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.LogonWithLiteral(oAccount.Address, "test");
             Assert.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"));
             Assert.IsTrue(oSimulator.CreateFolder("A"));

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

             oSimulator.Disconnect();
        }
Пример #60
0
        public void TestImportOfMessageIntoOtherFolder()
        {
            string @messageText =
               "From: [email protected]\r\n" +
               "\r\n" +
               "Test\r\n";

            hMailServer.Account account = SingletonProvider<Utilities>.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);

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

            POP3Simulator.AssertMessageCount("*****@*****.**", "test", 0);
            IMAPSimulator sim = new IMAPSimulator();
            sim.ConnectAndLogon("*****@*****.**", "test");
            Assert.AreEqual(1, sim.GetMessageCount("Woho"));
            sim.Disconnect();
        }