public void TestIMAPServer() { LogHandler.DeleteCurrentDefaultLog(); Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 30; i++) { try { var imapSim = new ImapClientSimulator(true, 14301); imapSim.ConnectAndLogon(account.Address, "test"); 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 TestDateSortOrder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); 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 RequestingSameHeaderFieldMultipleTimesShouldReturnItOnce() { Account account = SingletonProvider<TestSetup>.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: SubjectText" + Environment.NewLine + Environment.NewLine + "Hello" + Environment.NewLine; var smtpSimulator = new SmtpClientSimulator(); smtpSimulator.SendRaw(account.Address, account.Address, message); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODY.PEEK[HEADER.FIELDS (Subject Subject)]"); oSimulator.Disconnect(); Assert.AreEqual(1, StringExtensions.Occurences(result, "SubjectText")); }
public void IfInReplyToFieldContainsQuoteThenFetchHeadersShouldEncodeIt() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); string message = "From: Someone <*****@*****.**>" + Environment.NewLine + "To: Someoen <*****@*****.**>" + Environment.NewLine + "In-Reply-To: ShouldBeEncodedDueToQuote\"" + Environment.NewLine + "Subject: Something" + Environment.NewLine + Environment.NewLine + "Hello" + Environment.NewLine; var smtpSimulator = new SmtpClientSimulator(); smtpSimulator.SendRaw(account.Address, account.Address, message); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 ENVELOPE"); oSimulator.Disconnect(); Assert.IsFalse(result.Contains("ShouldBeEncodedDueToQuote")); }
public void TestNestedOrSearch() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); // Send a message to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "Search test", "This is a test of IMAP Search"); ImapClientSimulator.AssertMessageCount(oAccount.Address, "test", "Inbox", 1); var oSimulator = new ImapClientSimulator(); 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 TestChangeSeenFlag() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); Pop3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1); var simulator = new ImapClientSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); simulator.ExamineFolder("Inbox"); string flags = simulator.GetFlags(1); string body = simulator.Fetch("1 RFC822"); string flagsAfter = simulator.GetFlags(1); simulator.Close(); simulator.Disconnect(); Assert.AreEqual(flags, flagsAfter); var secondSimulator = new ImapClientSimulator(); secondSimulator.ConnectAndLogon(oAccount.Address, "test"); secondSimulator.SelectFolder("Inbox"); string secondFlags = secondSimulator.GetFlags(1); string secondBody = secondSimulator.Fetch("1 RFC822"); string secondFlagsAfter = secondSimulator.GetFlags(1); secondSimulator.Close(); secondSimulator.Disconnect(); Assert.AreNotEqual(secondFlags, secondFlagsAfter); }
public void TestChangeRecentFlag() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); Pop3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1); var simulator = new ImapClientSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); string result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 1 RECENT"), result); simulator.Close(); simulator.Disconnect(); simulator = new ImapClientSimulator(); 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 ImapClientSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 0 RECENT"), result); simulator.Close(); simulator.Disconnect(); }
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 imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.LogonWithLiteral(account1.Address, "test"); imapClientSimulator.SelectFolder("#Public.Share1", out selectResult); imapClientSimulator.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(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", ((i + 1)*2) - 1); SmtpClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", (i + 1)*2); } Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 6); var sim = new ImapClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); sim.SelectFolder("Inbox"); string response = sim.Fetch("1:6 UID"); string[] lines = Strings.Split(response, Environment.NewLine, -1, CompareMethod.Text); var uids = new List<string>(); foreach (string line in lines) { int paraPos = line.IndexOf("("); int paraEndPos = line.IndexOf(")"); if (paraPos < 0 || paraEndPos < 0) continue; string paraContent = line.Substring(paraPos + 1, paraEndPos - paraPos - 1); if (!uids.Contains(paraContent)) uids.Add(paraContent); } 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 ImapClientSimulator(); 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 ChangingFlagShouldAffectAllConnections() { var account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var sim1 = new ImapClientSimulator(); Assert.IsTrue(sim1.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim1.SelectFolder("Inbox")); var sim2 = new ImapClientSimulator(); Assert.IsTrue(sim2.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim2.SelectFolder("Inbox")); sim1.SetFlagOnMessage(1, true, "\\Deleted"); var flags1 = sim1.GetFlags(1); var flags2 = sim2.GetFlags(1); Assert.IsTrue(flags2.Contains(@"* 1 FETCH (FLAGS (\Deleted))"), flags2); Assert.IsTrue(flags2.Contains(@"* 1 FETCH (FLAGS (\Deleted) UID 1)"), flags2); }
public void TestAppendFolderNameInOctet() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); 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 ImapClientSimulator(); 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 TestFolderExpungeNotification() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); ImapClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); var simulator1 = new ImapClientSimulator(); var simulator2 = new ImapClientSimulator(); 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 TestAppendFolderNameInOctetNoFlagList() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); 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); }
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"); Pop3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 5); var imapClientSimulator = new ImapClientSimulator(); var oSimulator2 = new ImapClientSimulator(); imapClientSimulator.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); imapClientSimulator.SelectFolder("Inbox"); oSimulator2.SelectFolder("Inbox"); for (int i = 1; i <= 5; i++) { Assert.IsTrue(imapClientSimulator.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 = imapClientSimulator.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 TestExpunge() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 3; i++) SmtpClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 3); var simulator = new ImapClientSimulator(); 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 TestAppendResponseContainsExists() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); Assert.IsTrue(oSimulator.SelectFolder("Inbox")); string response1 = oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD"); Assert.IsTrue(response1.Contains("* 1 EXISTS"), response1); Assert.IsTrue(response1.Contains("* 1 RECENT"), response1); Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX")); oSimulator.Disconnect(); }
public void TestExpunge() { 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.ePermissionCreate, true); permission.set_Permission(eACLPermission.ePermissionInsert, true); permission.set_Permission(eACLPermission.ePermissionRead, true); permission.set_Permission(eACLPermission.ePermissionWriteDeleted, true); permission.Save(); string folderName = "#Public.Share1"; SmtpClientSimulator.StaticSend("*****@*****.**", account1.Address, "TestMessage", "Body"); CustomAsserts.AssertFolderMessageCount(account1.IMAPFolders.get_ItemByName("INBOX"), 1); CustomAsserts.AssertFolderMessageCount(folder, 0); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); imapClientSimulator.SelectFolder("INBOX"); Assert.IsTrue(imapClientSimulator.Copy(1, folderName)); Assert.IsTrue(imapClientSimulator.SelectFolder(folderName)); Assert.IsTrue(imapClientSimulator.SetDeletedFlag(1)); Assert.IsFalse(imapClientSimulator.Expunge()); permission.set_Permission(eACLPermission.ePermissionExpunge, true); permission.Save(); Assert.IsTrue(imapClientSimulator.Expunge()); imapClientSimulator.Disconnect(); }
public void TestBodyStructureWithNonLatinCharacterSingleLineWithSpace() { string @messageText = "Return-Path: [email protected]\r\n" + "Delivered-To: [email protected]\r\n" + "Received: from www.hmailserver.com ([127.0.0.1])\r\n" + " by mail.hmailserver.com\r\n" + " ; Tue, 16 Jun 2009 21:39:18 +0200\r\n" + "MIME-Version: 1.0\r\n" + "Date: Tue, 16 Jun 2009 21:39:18 +0200\r\n" + "From: <*****@*****.**>\r\n" + "To: <*****@*****.**>\r\n" + "Subject: sdafsda\r\n" + "Message-ID: <96aee740f2abe8450648c1752a9a987b@localhost>\r\n" + "X-Sender: [email protected]\r\n" + "User-Agent: RoundCube Webmail/0.2.2\r\n" + "Content-Type: multipart/mixed;\r\n" + " boundary=\"=_b63968892a76b1a5be17f4d37b085f54\"\r\n" + "\r\n" + "--=_b63968892a76b1a5be17f4d37b085f54\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "Content-Type: text/plain; charset=\"UTF-8\"\r\n" + "\r\n" + "--=_b63968892a76b1a5be17f4d37b085f54\r\n" + "Content-Transfer-Encoding: base64\r\n" + "Content-Type: application/x-zip; charset=\"UTF-8\";\r\n" + " name*=\"UTF-8''m%C3%A4%C3%B6 m%C3%A4%C3%B6.zip\"; \r\n" + "Content-Disposition: attachment;\r\n" + " filename*=\"UTF-8''m%C3%A4%C3%B6 m%C3%A4%C3%B6.zip\"; \r\n" + "\r\n" + "iVBORw0KGgoAAAANSUhEUgAAAqgAAAH4CAIAAAAJvIhhAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\r\n" + "jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAIr1JREFU\r\n" + "eF7t29GSYzluBND1/3/0ejb6wY6emK2WrpQEkaefdQvAAcn02OH/+fe///0v/wgQIECAAIESgb+C\r\n" + "3z8CBAgQIECgROBfJXMakwABAgQIEPjP/5qfAgECBAgQINAjIPh7dm1SAgQIECDgv/idAQIECBAg\r\n" + "--=_b63968892a76b1a5be17f4d37b085f54--\r\n" + ""; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSendRaw(account.Address, account.Address, messageText); CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new ImapClientSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); Assert.IsFalse(result.Contains("''"), result); Assert.IsTrue(result.Contains("\"FILENAME\" \"=?UTF-8?Q?m=C3=A4=C3=B6 m=C3=A4=C3=B6.zip?=\""), result); Assert.IsTrue(result.Contains("\"NAME\" \"=?UTF-8?Q?m=C3=A4=C3=B6 m=C3=A4=C3=B6.zip?=\""), result); }
public void TestBodyStructureWithNonLatinCharacterSingleLineEncoded() { string @messageText = "Message-ID: <1d11306c5648497247447e1073c3b0e2.squirrel@www.*******.**>\r\n" + "Date: Fri, 29 May 2009 11:53:03 +0200\r\n" + "Subject: attachment's name test\r\n" + "From: [email protected]\r\n" + "To: [email protected]\r\n" + "User-Agent: SquirrelMail/1.4.19\r\n" + "MIME-Version: 1.0\r\n" + "Content-Type: multipart/mixed;boundary=\"----=_20090529115303_60479\"\r\n" + "X-Priority: 3 (Normal)\r\n" + "Importance: Normal\r\n" + "\r\n" + "------=_20090529115303_60479\r\n" + "Content-Type: text/plain; charset=\"iso-8859-2\"\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "\r\n" + "test.±æê³ñ󶼿.txt\r\n" + "------=_20090529115303_60479\r\n" + "Content-Type: text/plain; name=\r\n" + " =?iso-8859-2?Q?test.=B1=E6=EA=B3=F1=F3=B6=BC=BF.txt?=\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "Content-Disposition: attachment; filename=\"\r\n" + " =?iso-8859-2?Q?test.=B1=E6=EA=B3=F1=F3=B6=BC=BF.txt?=\"\r\n" + "\r\n" + "1234\r\n" + "------=_20090529115303_60479--\r\n"; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSendRaw(account.Address, account.Address, messageText); CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new ImapClientSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); Assert.IsTrue(result.Contains("(\"NAME\" \"=?iso-8859-2?Q?test.=B1=E6=EA=B3=F1=F3=B6=BC=BF.txt?=\")")); Assert.IsTrue(result.Contains("(\"FILENAME\" \"=?iso-8859-2?Q?test.=B1=E6=EA=B3=F1=F3=B6=BC=BF.txt?=\")")); }
public void TestBodyStructureWithNonLatinCharacterInAttachmentHeader() { string @messageText = "From: \"Test\" <*****@*****.**>" + "\r\n" + "To: \"Test\" <*****@*****.**>" + "\r\n" + "Subject: test" + "\r\n" + "MIME-Version: 1.0" + "\r\n" + "Content-Type: multipart/mixed;" + "\r\n" + " boundary=\"----=_NextPart_000_000C_01C9EEB2.08D2EC80\"" + "\r\n" + "X-Priority: 3" + "\r\n" + "" + "\r\n" + "This is a multi-part message in MIME format." + "\r\n" + "" + "\r\n" + "------=_NextPart_000_000C_01C9EEB2.08D2EC80" + "\r\n" + "Content-Type: text/plain;" + "\r\n" + " format=flowed;" + "\r\n" + " charset=\"iso-8859-1\";" + "\r\n" + " reply-type=original" + "\r\n" + "Content-Transfer-Encoding: 7bit" + "\r\n" + "" + "\r\n" + "" + "\r\n" + "------=_NextPart_000_000C_01C9EEB2.08D2EC80" + "\r\n" + "Content-Type: application/octet-stream;" + "\r\n" + " name=\"=?iso-8859-1?B?beT2LnppcA==?=\"" + "\r\n" + "Content-Transfer-Encoding: base64" + "\r\n" + "Content-Disposition: attachment;" + "\r\n" + " filename=\"=?iso-8859-1?B?beT2LnppcA==?=\"" + "\r\n" + "" + "\r\n" + "iVBORw0KGgoAAAANSUhEUgAAAqgAAAH4CAIAAAAJvIhhAAAAAXNSR0IArs4c6QAAAARnQU1BAACx" + "\r\n" + "uIDgj5MrSIAAAQIEzgkI/nP2KhMgQIAAgbiA4I+TK0iAAAECBM4JCP5z9ioTIECAAIG4wP8ChvJS" + "\r\n" + "wXUaKVoAAAAASUVORK5CYII=" + "\r\n" + "" + "\r\n" + "------=_NextPart_000_000C_01C9EEB2.08D2EC80--" + "\r\n"; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSendRaw(account.Address, account.Address, messageText); CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new ImapClientSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); Assert.IsTrue(result.Contains("(\"NAME\" \"=?iso-8859-1?B?beT2LnppcA==?=\")")); Assert.IsTrue(result.Contains("(\"FILENAME\" \"=?iso-8859-1?B?beT2LnppcA==?=\")")); string fileName = account.IMAPFolders.get_ItemByName("INBOX").Messages[0].Attachments[0].Filename; Assert.AreEqual("mäö.zip", fileName); }
public void TestBeforeLogon() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); Assert.IsTrue(oSimulator.ExamineFolder("NonexistantFolder").Contains("NO Authenticate first")); Assert.IsFalse(oSimulator.SelectFolder("NonexistantFolder")); Assert.IsFalse(oSimulator.Copy(1, "SomeFolder")); Assert.IsFalse(oSimulator.CheckFolder("SomeFolder")); Assert.IsTrue(oSimulator.Fetch("123 a").Contains("NO Authenticate first")); Assert.IsTrue(oSimulator.List().Contains("NO Authenticate first")); Assert.IsTrue(oSimulator.LSUB().Contains("NO Authenticate first")); Assert.IsTrue(oSimulator.GetMyRights("APA").Contains("NO Authenticate first")); Assert.IsFalse(oSimulator.RenameFolder("A", "B")); Assert.IsFalse(oSimulator.Status("SomeFolder", "MESSAGES").Contains("A01 OK")); }
public void TestFolderUpdateNotification() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); ImapClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); var simulator1 = new ImapClientSimulator(); var simulator2 = new ImapClientSimulator(); 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 TestIdle() { _settings.IMAPIdleEnabled = true; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); 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 smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send(account.Address, account.Address, "IDLE Test", "This is a test of IDLE"); string data; Assert.IsTrue(oSimulator.EndIdle(false, out data)); }
public void TestConnectionObjectRelease() { LogHandler.DeleteCurrentDefaultLog(); _settings.IMAPIdleEnabled = true; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var simulator = new ImapClientSimulator(); 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 = LogHandler.ReadCurrentDefaultLog(); Assert.IsTrue(LogHandler.DefaultLogContains("Ending session")); }
public void TestDeleteSubFolderCheckAPI() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); IMAPFolders publicFolders = _settings.PublicFolders; Assert.AreEqual(0, publicFolders.Count); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); Assert.AreEqual(1, publicFolders.Count); IMAPFolders mySubFolders = folder.SubFolders; Assert.AreEqual(0, mySubFolders.Count); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionAccountID = account1.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeUser; permission.set_Permission(eACLPermission.ePermissionCreate, true); permission.set_Permission(eACLPermission.ePermissionRead, true); permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.ConnectAndLogon("*****@*****.**", "test"); Assert.IsTrue(imapClientSimulator.CreateFolder("#public.Share1.MySub")); Assert.AreEqual(1, mySubFolders.Count); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); Assert.IsTrue(imapClientSimulator.DeleteFolder("#public.Share1.MySub")); Assert.IsFalse(imapClientSimulator.SelectFolder("#public.Share1.MySub")); Assert.AreEqual(0, mySubFolders.Count); Assert.AreEqual(1, publicFolders.Count); imapClientSimulator.Disconnect(); }
public void TestDelete() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); 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 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"); SmtpClientSimulator.StaticSendRaw(account.Address, account.Address, messageText); CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1); var oSimulator = new ImapClientSimulator(); oSimulator.ConnectAndLogon(account.Address, "test"); oSimulator.SelectFolder("INBOX"); string result = oSimulator.Fetch("1 BODYSTRUCTURE"); oSimulator.Disconnect(); 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 TestDeleteIMAPFolderNotifications() { _settings.IMAPIdleEnabled = true; Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var imapClientSimulator = new ImapClientSimulator(); var oSimulator2 = new ImapClientSimulator(); imapClientSimulator.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); imapClientSimulator.SelectFolder("Inbox"); oSimulator2.CreateFolder("Mailbox"); oSimulator2.DeleteFolder("Mailbox"); SmtpClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); Pop3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1); string noopResponse = imapClientSimulator.NOOP() + imapClientSimulator.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); }