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(); }
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")); }
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); }
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); }
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); }
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")); }
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(); }
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; } } } }
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(); }
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(); }
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(); }
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); }
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); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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); }
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(); }
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(); }
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); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }