public void TestIMAPServer() { TestSetup.DeleteCurrentDefaultLog(); Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 30; i++) { try { var imapSim = new IMAPSimulator(true, 14300); imapSim.ConnectAndLogon(account.Address, "test"); CustomAssert.IsTrue(imapSim.SelectFolder("Inbox"), "SelectInbox"); imapSim.CreateFolder("Test"); CustomAssert.IsTrue(imapSim.SelectFolder("Test"), "SelectTest"); CustomAssert.IsTrue(imapSim.Logout(), "Logout"); imapSim.Disconnect(); break; } catch (Exception) { if (i == 29) throw; } } }
public void TestNestedOrSearch() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); // Send a message to this account. var oSMTP = new SMTPClientSimulator(); oSMTP.Send("*****@*****.**", "*****@*****.**", "Search test", "This is a test of IMAP Search"); IMAPSimulator.AssertMessageCount(oAccount.Address, "test", "Inbox", 1); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SINCE 28-May-2008 SINCE 28-May-2008 SINCE 28-May-2008"); Assert.IsTrue(result.StartsWith("* SEARCH 1"), result); result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR SMALLER 1 LARGER 10000"); Assert.IsTrue(result.StartsWith("* SEARCH\r\n"), result); result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SMALLER 1 LARGER 10000 SMALLER 10000"); Assert.IsTrue(result.StartsWith("* SEARCH 1\r\n"), result); }
public void TestBodyStructureWithNonLatinCharacter() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); string attachmentName = "本本本.zip"; string filename = Path.Combine(Path.GetTempPath(), attachmentName); File.WriteAllText(filename, "tjena moss"); var message = new Message(); message.Charset = "utf-8"; message.AddRecipient("test", account.Address); message.From = "Test"; message.FromAddress = account.Address; message.Body = "hejsan"; message.Attachments.Add(filename); message.Save(); TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new IMAPSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); // utf-8 representation of 本本本.zip: Assert.IsTrue(result.Contains("=?utf-8?B?5pys5pys5pys?=.zip")); }
public void TestChangeRecentFlag() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Assert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test")); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 1); var simulator = new IMAPSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); string result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 1 RECENT"), result); simulator.Close(); simulator.Disconnect(); simulator = new IMAPSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); Assert.IsTrue(simulator.SelectFolder("Inbox", out result)); Assert.IsTrue(result.Contains("* 1 RECENT"), result); simulator.Close(); simulator.Disconnect(); simulator = new IMAPSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 0 RECENT"), result); simulator.Close(); simulator.Disconnect(); }
public void TestDateSortOrder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); Assert.IsTrue(oSimulator.SelectFolder("Inbox")); string response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 22:00:00 +0200\" {37}", "Date: Wed, 15 Dec 2010 13:00:00 +0000"); Assert.IsTrue(response.Contains("* 1 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 21:00:00 +0200\" {37}", "Date: Wed, 15 Dec 2010 14:00:00 +0000"); Assert.IsTrue(response.Contains("* 2 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 20:00:00 +0200\" {37}", "Date: Wed, 15 Dec 2010 12:00:00 +0000"); Assert.IsTrue(response.Contains("* 3 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"23-Feb-2008 01:30:23 +0200\" {37}", "Date: Wed, 15 Dec 2010 11:00:00 +0000"); Assert.IsTrue(response.Contains("* 4 EXISTS"), response); string sortDateResponse = oSimulator.SendSingleCommand("A10 SORT (DATE) US-ASCII ALL"); Assert.IsTrue(sortDateResponse.Contains(" 4 3 1 2")); oSimulator.Disconnect(); }
public void TestChangeSeenFlag() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Assert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test")); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 1); var simulator = new IMAPSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); simulator.ExamineFolder("Inbox"); string flags = simulator.GetFlags(1); string body = simulator.Fetch("1 RFC822"); string flagsAfter = simulator.GetFlags(1); simulator.Close(); simulator.Disconnect(); Assert.AreEqual(flags, flagsAfter); var secondSimulator = new IMAPSimulator(); secondSimulator.ConnectAndLogon(oAccount.Address, "test"); secondSimulator.SelectFolder("Inbox"); string secondFlags = secondSimulator.GetFlags(1); string secondBody = secondSimulator.Fetch("1 RFC822"); string secondFlagsAfter = secondSimulator.GetFlags(1); secondSimulator.Close(); secondSimulator.Disconnect(); Assert.AreNotEqual(secondFlags, secondFlagsAfter); }
public void FolderMarkedAsReadOnlyWhenUserHasReadOnlyRights() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPFolders publicFolders = _settings.PublicFolders; IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionAccountID = account1.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeUser; permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.set_Permission(eACLPermission.ePermissionRead, true); permission.Save(); string selectResult = string.Empty; var oSimulator1 = new IMAPSimulator(); oSimulator1.Connect(); oSimulator1.LogonWithLiteral(account1.Address, "test"); oSimulator1.SelectFolder("#Public.Share1", out selectResult); oSimulator1.Disconnect(); Assert.IsTrue(selectResult.Contains("[READ-ONLY]"), selectResult); Assert.IsFalse(selectResult.Contains("[READ-WRITE]"), selectResult); }
public void TestAddMessage() { Application app = SingletonProvider<TestSetup>.Instance.GetApp(); Utilities utilities = app.Utilities; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); // Create a new folder. IMAPFolder folder = account.IMAPFolders.get_ItemByName("INBOX"); folder.Save(); for (int i = 0; i < 3; i++) { hMailServer.Message message = folder.Messages.Add(); message.set_Flag(eMessageFlag.eMFSeen, true); message.Save(); POP3Simulator.AssertMessageCount(account.Address, "test", ((i + 1)*2) - 1); SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(account.Address, "test", (i + 1)*2); } POP3Simulator.AssertMessageCount(account.Address, "test", 6); var sim = new IMAPSimulator(); sim.ConnectAndLogon(account.Address, "test"); sim.SelectFolder("Inbox"); string response = sim.Fetch("1:6 UID"); string[] lines = Strings.Split(response, Environment.NewLine, -1, CompareMethod.Text); var uids = new List<string>(); foreach (string line in lines) { int paraPos = line.IndexOf("("); int paraEndPos = line.IndexOf(")"); if (paraPos < 0 || paraEndPos < 0) continue; string paraContent = line.Substring(paraPos + 1, paraEndPos - paraPos - 1); if (!uids.Contains(paraContent)) uids.Add(paraContent); } Assert.AreEqual(6, uids.Count); // Make sure the UIDS are sorted properly by creating a copy, sort the copy // and then compare to original. var copy = new List<string>(); copy.InsertRange(0, uids); copy.Sort(); Assert.AreEqual(copy, uids); }
public void TestCreateFolderWithSlash() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); const string folderName = "ABC\\123"; var oSimulator = new IMAPSimulator(); oSimulator.Connect(); oSimulator.Logon(oAccount.Address, "test"); CustomAssert.IsTrue(oSimulator.CreateFolder(folderName)); CustomAssert.IsTrue(oSimulator.List().Contains(folderName)); CustomAssert.IsTrue(oSimulator.SelectFolder(folderName)); oSimulator.Disconnect(); }
public void Test() { IMAPSimulator sim = new IMAPSimulator(); sim.ConnectAndLogon("*****@*****.**", "test"); sim.SelectFolder("Inbox"); Stopwatch watch = new Stopwatch(); watch.Start(); string result = sim.SendSingleCommand("A282 SORT (SIZE) UTF-8"); watch.Stop(); long sortSizeTime = watch.ElapsedMilliseconds; watch.Reset(); watch.Start(); result = sim.SendSingleCommand("A282 SORT (FROM) UTF-8"); watch.Stop(); long sortFromTime = watch.ElapsedMilliseconds; watch.Reset(); watch.Start(); result = sim.SendSingleCommand("A282 SORT (FROM) UTF-8 1:15"); watch.Stop(); long sortFromTimeLimit15 = watch.ElapsedMilliseconds; watch.Reset(); watch.Start(); result = sim.SendSingleCommand("A282 SORT (DATE) UTF-8"); watch.Stop(); long sortDateTime = watch.ElapsedMilliseconds; watch.Reset(); System.Threading.Thread.Sleep(1); }
public void TestFetch() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody1"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody2"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 2); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody3"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 3); var sim = new IMAPSimulator(); sim.ConnectAndLogon(account.Address, "test"); sim.SelectFolder("INBOX"); string result = sim.Fetch("1 BODY[1]"); Assert.IsTrue(result.Contains("SampleBody1"), result); result = sim.Fetch("2 BODY[1]"); Assert.IsTrue(result.Contains("SampleBody2"), result); result = sim.Fetch("3 BODY[1]"); Assert.IsTrue(result.Contains("SampleBody3"), result); }
public void TestAppendFolderNameInOctet() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); oSimulator.SelectFolder("INBOX"); oSimulator.CreateFolder("MONK"); oSimulator.SendRaw("A01 APPEND {4}\r\n"); string result = oSimulator.Receive(); Assert.IsTrue(result.StartsWith("+ Ready for additional command text.")); oSimulator.SendRaw("MONK (\\Seen) \"20-Jan-2009 12:59:50 +0100\" {5}\r\n"); result = oSimulator.Receive(); Assert.IsTrue(result.StartsWith("+ Ready for literal data")); oSimulator.SendRaw("WOOOT\r\n"); result = oSimulator.Receive(); Assert.AreEqual("A01 OK APPEND completed\r\n", result); }
public void TestDateSortOrderNonexistantDate() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); Assert.IsTrue(oSimulator.SelectFolder("Inbox")); string response = oSimulator.SendSingleCommandWithLiteral( "A04 APPEND INBOX \"22-Feb-2008 22:00:00 +0200\" {4}", "ABCD"); Assert.IsTrue(response.Contains("* 1 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 21:00:00 +0200\" {4}", "ABCD"); Assert.IsTrue(response.Contains("* 2 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"22-Feb-2008 20:00:00 +0200\" {4}", "ABCD"); Assert.IsTrue(response.Contains("* 3 EXISTS"), response); response = oSimulator.SendSingleCommandWithLiteral("A04 APPEND INBOX \"23-Feb-2008 01:30:23 +0200\" {4}", "ABCD"); Assert.IsTrue(response.Contains("* 4 EXISTS"), response); /* * RFC 5256 "2.2. Sent Date" chapter. If the sent date cannot be determined (a Date: header is missing or cannot be parsed), * the INTERNALDATE for that message is used as the sent date. */ string sortDateResponse = oSimulator.SendSingleCommand("A10 SORT (DATE) US-ASCII ALL"); string sortArivalDateResponse = oSimulator.SendSingleCommand("A10 SORT (ARRIVAL) US-ASCII ALL"); Assert.IsTrue(sortArivalDateResponse.Contains(" 3 2 1 4")); Assert.AreEqual(sortDateResponse, sortArivalDateResponse); oSimulator.Disconnect(); }
public void TestIdle() { _settings.IMAPIdleEnabled = true; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); Assert.IsTrue(oSimulator.SelectFolder("INBOX")); oSimulator.StartIdle(); if (oSimulator.GetPendingDataExists()) throw new Exception("Unexpected data exists"); // Send a message to this account. var oSMTP = new SMTPClientSimulator(); oSMTP.Send(account.Address, account.Address, "IDLE Test", "This is a test of IDLE"); string data; Assert.IsTrue(oSimulator.EndIdle(false, out data)); }
public void TestFolderUpdateNotification() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); var simulator1 = new IMAPSimulator(); var simulator2 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); simulator2.ConnectAndLogon(account.Address, "test"); simulator1.SelectFolder("Inbox"); simulator2.SelectFolder("Inbox"); string result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsFalse(result.Contains("Deleted")); Assert.IsFalse(result.Contains("Seen")); simulator1.SetDeletedFlag(1); simulator1.SetSeenFlag(1); result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsTrue(result.Contains("Deleted")); Assert.IsTrue(result.Contains("Seen")); simulator1.Disconnect(); simulator2.Disconnect(); }
public void TestFolderExpungeNotification() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); var simulator1 = new IMAPSimulator(); var simulator2 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); simulator2.ConnectAndLogon(account.Address, "test"); simulator1.SelectFolder("Inbox"); simulator2.SelectFolder("Inbox"); string result = simulator2.NOOP(); Assert.IsFalse(result.Contains("Deleted")); Assert.IsFalse(result.Contains("Seen")); simulator1.SetDeletedFlag(1); simulator1.Expunge(); // the result may (should) come after the first NOOP response stream so do noop twice. result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsTrue(result.Contains("* 1 EXPUNGE")); simulator1.Disconnect(); simulator2.Disconnect(); }
public void TestExpungeNotification() { _settings.IMAPIdleEnabled = true; Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 5; i++) SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 5); var oSimulator1 = new IMAPSimulator(); var oSimulator2 = new IMAPSimulator(); oSimulator1.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); oSimulator1.SelectFolder("Inbox"); oSimulator2.SelectFolder("Inbox"); for (int i = 1; i <= 5; i++) { Assert.IsTrue(oSimulator1.SetFlagOnMessage(i, true, @"\Deleted")); } string noopResponse = oSimulator2.NOOP() + oSimulator2.NOOP(); Assert.IsTrue(noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)"), noopResponse); bool result = oSimulator1.Expunge(); string expungeResult = oSimulator2.NOOP() + oSimulator2.NOOP(); Assert.IsTrue( expungeResult.Contains("* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE"), expungeResult); }
public void TestBodyStructureWithNonLatinCharacterTest3() { string @messageText = "To: [email protected]\r\n" + "Content-Type: multipart/mixed;\r\n" + " boundary=\"------------000008080307000003010005\"\r\n" + "\r\n" + "This is a multi-part message in MIME format.\r\n" + "--------------000008080307000003010005\r\n" + "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n" + "Content-Transfer-Encoding: 7bit\r\n" + "\r\n" + "Test\r\n" + "\r\n" + "--------------000008080307000003010005\r\n" + "Content-Type: image/png;\r\n" + " name=\"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\"\r\n" + "Content-Transfer-Encoding: base64\r\n" + "Content-Disposition: inline;\r\n" + " filename*=ISO-8859-1''%F6%50%C4%C9%CD%C1%D6%60%F6%F6%E4%27%2E%70%6E%67\r\n" + "\r\n" + "iVBORw0KGgoAAAANSUhEUgAAAqgAAAH4CAIAAAAJvIhhAAAAAXNSR0IArs4c6QAAAARnQU1B\r\n" + "AACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA\r\n" + "--------------000008080307000003010005--\r\n"; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Assert.IsTrue(SMTPClientSimulator.StaticSendRaw(account.Address, account.Address, messageText)); TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new IMAPSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); Assert.IsTrue( result.Contains("\"FILENAME\" \"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\"")); Assert.IsTrue( result.Contains("\"NAME\" \"=?ISO-8859-1?Q?=F6=50=C4=C9=CD=C1=D6=60=F6=F6=E4=27=2E=70=6E=67?=\"")); }
public void TestRenameSubFolderToMatchingName() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); CustomAssert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test")); CustomAssert.IsTrue(oSimulator.CreateFolder("Folder1")); CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1")); string result = string.Empty; CustomAssert.IsFalse(oSimulator.RenameFolder("Folder1", "Folder1.Sub1", out result)); CustomAssert.IsTrue(result.Contains("A folder cannot be moved into one of its subfolders.")); CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1")); result = string.Empty; CustomAssert.IsTrue(oSimulator.RenameFolder("Folder1", "Folder1Test", out result)); CustomAssert.IsTrue(oSimulator.SelectFolder("Folder1Test")); oSimulator.Disconnect(); }
public void TestRenameLongFolder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.LogonWithLiteral(oAccount.Address, "test"); CustomAssert.IsTrue(oSimulator.CreateFolder("1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25")); CustomAssert.IsTrue(oSimulator.CreateFolder("A")); CustomAssert.IsFalse(oSimulator.RenameFolder("1", "A.1")); CustomAssert.IsTrue(oSimulator.RenameFolder("1.2.3", "A.1")); CustomAssert.IsTrue(oSimulator.SelectFolder("A.1.4")); oSimulator.Disconnect(); }
private void SetupAccountObject(Domain domain) { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(domain, "*****@*****.**", "test"); // Make sure the inbox contains two messages which should be backed up. Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 1 Subject", "Message 1 Body")); POP3Simulator.AssertMessageCount(account.Address, "test", 1); Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 2 Subject", "Message 2 Body")); POP3Simulator.AssertMessageCount(account.Address, "test", 2); Assert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Message 3 Subject", "Message 3 Body")); POP3Simulator.AssertMessageCount(account.Address, "test", 3); var sim = new IMAPSimulator(); Assert.IsTrue(sim.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim.SelectFolder("Inbox")); Assert.IsTrue(sim.SetDeletedFlag(2)); Assert.IsTrue(sim.Expunge()); sim.Disconnect(); _folderCreationTime = account.IMAPFolders.get_ItemByName("INBOX").CreationTime; account.Active = true; account.ADDomain = "AD"; account.AdminLevel = eAdminLevel.hAdminLevelDomainAdmin; account.ADUsername = "******"; account.ForwardAddress = "FA"; account.ForwardEnabled = false; account.ForwardKeepOriginal = true; account.IsAD = false; account.MaxSize = 1250; account.PersonFirstName = "First"; account.PersonLastName = "Last"; account.SignatureEnabled = true; account.SignatureHTML = "HTML"; account.SignaturePlainText = "PLAIN"; account.VacationMessage = "VAC"; account.VacationMessageExpires = true; account.VacationMessageExpiresDate = "2020-01-01"; account.VacationMessageIsOn = true; account.VacationSubject = "SUBJ"; account.Password = "******"; account.Save(); // Set up fetch account FetchAccount fa = account.FetchAccounts.Add(); fa.DaysToKeepMessages = 5; fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "test"; fa.Port = _fetchAccountPort; fa.ProcessMIMEDate = true; fa.ProcessMIMERecipients = true; fa.ServerAddress = "127.0.0.1"; fa.Username = "******"; fa.UseSSL = false; fa.UseAntiSpam = true; fa.UseAntiVirus = true; fa.Save(); DownloadFromExternalAccount(account, fa); Rule rule = account.Rules.Add(); rule.Name = "MyRule"; RuleCriteria criteria = rule.Criterias.Add(); criteria.MatchType = eRuleMatchType.eMTGreaterThan; criteria.PredefinedField = eRulePredefinedField.eFTMessageSize; criteria.MatchValue = "0"; criteria.Save(); RuleAction action = rule.Actions.Add(); action.Type = eRuleActionType.eRAForwardEmail; action.To = "*****@*****.**"; action.Body = "Test"; action.Filename = "File"; action.FromAddress = "T"; action.FromName = "N"; action.HeaderName = "H"; action.IMAPFolder = "Folder"; action.ScriptFunction = "Script"; action.Subject = "Subj"; action.Value = "Value"; action.Save(); rule.Save(); }
public void TestConnectionObjectRelease() { TestSetup.DeleteCurrentDefaultLog(); _settings.IMAPIdleEnabled = true; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var simulator = new IMAPSimulator(); string data; string sWelcomeMessage = simulator.Connect(); simulator.Logon(account.Address, "test"); Assert.IsTrue(simulator.SelectFolder("INBOX")); Assert.IsTrue(simulator.StartIdle()); Assert.IsTrue(simulator.EndIdle(true, out data)); Assert.IsTrue(simulator.Logout()); string logData = TestSetup.ReadCurrentDefaultLog(); Assert.IsTrue(TestSetup.DefaultLogContains("Ending session")); }
public void TestFolderCaseInLSUB() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); string folderName = "ABC.def.GHI"; var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(oAccount.Address, "test"); CustomAssert.IsTrue(oSimulator.CreateFolder(folderName)); CustomAssert.IsTrue(oSimulator.Subscribe(folderName)); CustomAssert.IsFalse(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.def.GHI")); CustomAssert.IsTrue(oSimulator.LSUB("ABC.DEF.*").Contains("ABC.DEF.GHI")); CustomAssert.IsFalse(oSimulator.LSUB("ABC.def.*").Contains("ABC.DEF")); CustomAssert.IsTrue(oSimulator.LSUB("ABC.def.*").Contains("ABC.def.GHI")); CustomAssert.IsTrue(oSimulator.SelectFolder(folderName)); oSimulator.Disconnect(); }
public void TestDelete() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); Assert.IsFalse(oSimulator.DeleteFolder("DoesNotExist")); Assert.IsTrue(oSimulator.CreateFolder("DoesExist")); Assert.IsTrue(oSimulator.SelectFolder("DoesExist")); oSimulator.Close(); Assert.IsTrue(oSimulator.DeleteFolder("DoesExist")); Assert.IsFalse(oSimulator.SelectFolder("DoesExist")); }
public void TestRenameRootPublicFolder() { IMAPFolders folders = _application.Settings.PublicFolders; IMAPFolder folder = folders.Add("ShareA"); folder.Save(); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.set_Permission(eACLPermission.ePermissionRead, true); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); IMAPFolder folder2 = folders.Add("ShareB"); folder2.Save(); IMAPFolderPermission permission2 = folder2.Permissions.Add(); permission2.PermissionType = eACLPermissionType.ePermissionTypeAnyone; permission2.set_Permission(eACLPermission.ePermissionLookup, true); permission2.set_Permission(eACLPermission.ePermissionRead, true); permission2.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission2.Save(); Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var simulator1 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareA")); CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); CustomAssert.IsTrue(simulator1.RenameFolder("#Public.ShareA", "#Public.ShareB.ShareA")); CustomAssert.IsFalse(simulator1.SelectFolder("#Public.ShareA")); CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); CustomAssert.IsTrue(simulator1.SelectFolder("#Public.ShareB.ShareA")); }
public void TestDeleteIMAPFolderNotifications() { _settings.IMAPIdleEnabled = true; Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator1 = new IMAPSimulator(); var oSimulator2 = new IMAPSimulator(); oSimulator1.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); oSimulator1.SelectFolder("Inbox"); oSimulator2.CreateFolder("Mailbox"); oSimulator2.DeleteFolder("Mailbox"); SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 1); string noopResponse = oSimulator1.NOOP() + oSimulator1.NOOP(); // confirm that the client is notified about this message even though another // folder has been dropped by another client. Assert.IsTrue(noopResponse.Contains(@"* 1 EXISTS"), noopResponse); }
public void TestRenameToSubFolder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); oSimulator.Connect(); oSimulator.LogonWithLiteral(oAccount.Address, "test"); CustomAssert.IsTrue(oSimulator.CreateFolder("1.2.3.4.5")); CustomAssert.IsTrue(oSimulator.CreateFolder("A")); CustomAssert.IsTrue(oSimulator.RenameFolder("1", "A.1")); CustomAssert.IsTrue(oSimulator.SelectFolder("A.1")); CustomAssert.IsTrue(oSimulator.SelectFolder("A.1.2.3.4.5")); CustomAssert.IsTrue(oSimulator.RenameFolder("A.1", "1")); CustomAssert.IsFalse(oSimulator.SelectFolder("A.1")); CustomAssert.IsFalse(oSimulator.SelectFolder("A.1.2.3.4.5")); CustomAssert.IsTrue(oSimulator.SelectFolder("1")); CustomAssert.IsTrue(oSimulator.SelectFolder("1.2.3.4.5")); oSimulator.Disconnect(); }
public void TestExpunge() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 3; i++) SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "test"); POP3Simulator.AssertMessageCount(account.Address, "test", 3); var simulator = new IMAPSimulator(); Assert.IsTrue(simulator.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(simulator.SelectFolder("Inbox")); Assert.IsTrue(simulator.SetFlagOnMessage(1, true, @"\Deleted")); Assert.IsTrue(simulator.SetFlagOnMessage(3, true, @"\Deleted")); string result; Assert.IsTrue(simulator.Expunge(out result)); // Messages 1 and 2 should be deleted. 2, because when the first message // is deleted, the index of the message which was originally 3, is now 2. Assert.IsTrue(result.Contains("* 1 EXPUNGE\r\n* 2 EXPUNGE")); }
public void TestCreateLongFolder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); oSimulator.Connect(); oSimulator.LogonWithLiteral(oAccount.Address, "test"); string folderName = ""; for (int i = 0; i < 255; i++) folderName = folderName + "A"; string result = oSimulator.Send("A01 CREATE " + folderName); CustomAssert.IsTrue(result.Contains("A01 OK")); CustomAssert.IsTrue(oSimulator.SelectFolder(folderName)); folderName = ""; for (int i = 0; i < 256; i++) folderName = folderName + "A"; result = oSimulator.Send("A01 CREATE " + folderName); CustomAssert.IsTrue(result.Contains("A01 NO")); CustomAssert.IsFalse(oSimulator.SelectFolder(folderName)); oSimulator.Disconnect(); }
public void TestAppendFolderNameInOctetNoFlagList() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new IMAPSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); oSimulator.SelectFolder("INBOX"); oSimulator.CreateFolder("MONK"); oSimulator.SendRaw("A01 APPEND {4}\r\n"); string result = oSimulator.Receive(); Assert.IsTrue(result.StartsWith("+ Ready for additional command text.")); oSimulator.SendRaw("MONK \"12-Jan-2009 12:12:12 +0100\" {5}\r\n"); result = oSimulator.Receive(); Assert.IsTrue(result.StartsWith("+ Ready for literal data")); oSimulator.SendRaw("WOOOT\r\n"); result = oSimulator.Receive(); Assert.AreEqual("A01 OK APPEND completed\r\n", result); DateTime date = Convert.ToDateTime(oAccount.IMAPFolders.get_ItemByName("MONK").Messages[0].InternalDate); Assert.AreEqual(2009, date.Year); Assert.AreEqual(12, date.Day); Assert.AreEqual(1, date.Month); }