public void TestBatchOfCommands() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); string commandSequence = ""; for (int i = 0; i < 200; i++) { commandSequence += "A" + i.ToString() + " SELECT INBOX\r\n"; } commandSequence = commandSequence.TrimEnd("\r\n".ToCharArray()); string result = oSimulator.Send(commandSequence); Assert.IsFalse(result.StartsWith("* BYE")); oSimulator.Disconnect(); sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); commandSequence = ""; for (int i = 0; i < 500; i++) { commandSequence += "A" + i.ToString() + " SELECT INBOX\r\n"; } commandSequence = commandSequence.TrimEnd("\r\n".ToCharArray()); result = oSimulator.Send(commandSequence); Assert.IsFalse(result.StartsWith("* BYE Excessive number of buffered commands")); 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 IfStlsRequiredLogonShouldFailIfNoStls() { var imapSimulator = new ImapClientSimulator(false, 14303); imapSimulator.Connect(); string errorMessage; Assert.IsFalse(imapSimulator.Logon(_account.Address, "test", out errorMessage)); Assert.IsTrue(errorMessage.Contains("A01 BAD STARTTLS is required.")); }
public void TestCreateFolderWithHash() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); oSimulator.Connect(); oSimulator.Logon(oAccount.Address, "test"); Assert.IsFalse(oSimulator.CreateFolder("#Test")); Assert.IsTrue(oSimulator.CreateFolder("Test.#Testar")); oSimulator.Disconnect(); }
public void IfStlsRequiredLogonShouldSucceedIfStls() { var imapSimulator = new ImapClientSimulator(false, 14303); imapSimulator.Connect(); imapSimulator.SendSingleCommand("A01 STARTTLS"); imapSimulator.Handshake(); // command is sent over TLS. imapSimulator.GetCapabilities(); Assert.IsTrue(imapSimulator.Logon(_account.Address, "test")); }
public void IfStlsOptionalButSslRequiredByIpRangeForAuthThenAuthShouldFail() { var range = SingletonProvider<TestSetup>.Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer"); range.RequireSSLTLSForAuth = true; range.Save(); var imapSimulator = new ImapClientSimulator(false, 14302); imapSimulator.Connect(); string errorMessage; Assert.IsFalse(imapSimulator.Logon(_account.Address, "test", out errorMessage)); Assert.IsTrue(errorMessage.Contains("A01 BAD A SSL/TLS-connection is required for authentication.")); }
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 TestAppendDeletedMessage() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX (\\Deleted) {4}", "ABCD"); Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX")); Assert.AreEqual("1", oSimulator.Search("DELETED")); oSimulator.Disconnect(); }
public void TestLongCommand() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon(account.Address, "test"); var sb = new StringBuilder(); for (int i = 0; i < 240000; i++) { sb.Append("A"); } string result = oSimulator.Send("A01 " + sb); Assert.IsTrue(result.Length == 0 || result.StartsWith("A01")); }
public void TestHierarchyDelimiterListResponse() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Settings settings = _settings; settings.IMAPHierarchyDelimiter = "\\"; Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); string folderName = "Test\\Test"; var oSimulator = new ImapClientSimulator(); 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\"")); oSimulator.Disconnect(); }
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 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 TestListPublicFolderAnyonePermission() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account3 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPFolders publicFolders = _settings.PublicFolders; IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); string folderName = "#Public.Share1"; // account 1 should not have permission since they aren't added yet. var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(eACLPermission.ePermissionCreate, true); permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); // account 1 should not have permission since he's not in the group imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsTrue(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); }
public void TestCreateRootSharedFolder() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.CreateFolder("#Public.SharedFolder")); imapClientSimulator.Disconnect(); }
public void TestDuplicateConflictingGroupPermission() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Group group1 = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup1"); SingletonProvider<TestSetup>.Instance.AddGroupMember(group1, account1); Group group2 = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup2"); SingletonProvider<TestSetup>.Instance.AddGroupMember(group2, account1); IMAPFolders publicFolders = _settings.PublicFolders; IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); IMAPFolderPermissions permissions = folder.Permissions; IMAPFolderPermission permission = permissions.Add(); permission.PermissionGroupID = group1.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission.Save(); IMAPFolderPermission permission2 = permissions.Add(); permission2.PermissionGroupID = group2.ID; permission2.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission2.set_Permission(eACLPermission.ePermissionLookup, true); permission2.Save(); string folderName = "#Public.Share1"; // The account should not have permission since the first permission doesn't give him this. var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); // Now delete the permissions and in the first permission give the group the rights. while (permissions.Count > 0) permissions.Delete(0); permission = permissions.Add(); permission.PermissionGroupID = group1.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); permission2 = permissions.Add(); permission2.PermissionGroupID = group2.ID; permission2.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission2.Save(); // The account should not have permission since the first permission does give him this. imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsTrue(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); }
public void TestRenamePublicFolderToRootPublicFolder() { 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.ePermissionLookup, true); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); string oldFolderName = "#Public.Share1.MySub1"; string newFolderName = "#Public.Share2"; var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsTrue(imapClientSimulator.CreateFolder(oldFolderName)); Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName)); Assert.IsTrue(imapClientSimulator.List().Contains(oldFolderName)); Assert.IsFalse(imapClientSimulator.List().Contains(newFolderName)); imapClientSimulator.Disconnect(); }
public void TestCreateFolderWithSameNameAsPublic() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); string origPublicFolderName = _settings.IMAPPublicFolderName; _settings.IMAPPublicFolderName = "MyPublic"; try { Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.CreateFolder("MyPublic")); imapClientSimulator.Disconnect(); } finally { _settings.IMAPPublicFolderName = origPublicFolderName; } }
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 TestGetQuota() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); string result = oSimulator.GetQuota("Inbox"); Assert.IsTrue(result.Contains("A09 OK")); oSimulator.Disconnect(); }
public void TestListPublicFolderGroupPermission() { Application application = SingletonProvider<TestSetup>.Instance.GetApp(); Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account3 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); Group group = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup"); SingletonProvider<TestSetup>.Instance.AddGroupMember(group, account2); IMAPFolders publicFolders = _settings.PublicFolders; IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionGroupID = group.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission.set_Permission(eACLPermission.ePermissionCreate, true); permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); string folderName = "#Public.Share1"; // account 1 should not have permission since he's not in the group var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); // account 2 should have permission since he is in the group imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account2.Address, "test"); Assert.IsTrue(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); // account 3 should not have permission since he's not in the group imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account3.Address, "test"); Assert.IsFalse(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); // add account 1 to the group to give him permission. GroupMember member = SingletonProvider<TestSetup>.Instance.AddGroupMember(group, account1); imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsTrue(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); // delete account 1 from the group again to remove permissios. group.Members.DeleteByDBID(member.ID); imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.List().Contains(folderName)); imapClientSimulator.Disconnect(); }
public void TestPublicFolderUnsubscribe() { 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.ePermissionAdminister, true); permission.set_Permission(eACLPermission.ePermissionExpunge, true); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission.set_Permission(eACLPermission.ePermissionRead, true); permission.Save(); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); string folderName = "#Public.Share1"; Assert.IsFalse(imapClientSimulator.Unsubscribe(folderName)); imapClientSimulator.Disconnect(); }
public void TestPublicFolderCreateDeep() { 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.ePermissionRead, true); permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); string folderName = "#Public.Share1.MySub1.MySub2.MySub3.MySub4"; Assert.IsTrue(imapClientSimulator.CreateFolder(folderName)); imapClientSimulator.Disconnect(); }
public void TestLSUBPublicFolderParent() { 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.Save(); string folderName = "#Public.Share1"; var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.LSUB().Contains(folderName)); // Add permissions to select and lookup permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); Assert.IsTrue(imapClientSimulator.LSUB().Contains("#Public\"\r\n")); Assert.IsTrue(imapClientSimulator.LSUB().Contains(folderName)); imapClientSimulator.Disconnect(); }
public void TestExamineNonexistantFolder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); string result = oSimulator.ExamineFolder("NonexistantFolder"); Assert.IsTrue(result.Contains("BAD Folder could not be found.")); }
public void TestPublicFolderNoSelectAttribute() { 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.Save(); var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsTrue(imapClientSimulator.List("#Public").Contains("Noselect")); Assert.IsTrue(imapClientSimulator.List("#Public.Share1").Contains("#Public.Share1")); Assert.IsFalse(imapClientSimulator.List("#Public.Share1").Contains("Noselect")); imapClientSimulator.Disconnect(); }
public void TestExamineResponse() { Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.Logon("*****@*****.**", "test"); string result = oSimulator.ExamineFolder("Inbox"); oSimulator.Disconnect(); Assert.IsTrue(result.Contains("* FLAGS"), result); Assert.IsTrue(result.Contains("* 1 EXISTS"), result); Assert.IsTrue(result.Contains("* 1 RECENT"), result); Assert.IsTrue(result.Contains("* OK [UNSEEN 1]"), result); Assert.IsTrue(result.Contains("* OK [PERMANENTFLAGS"), result); Assert.IsTrue(result.Contains("* OK [UIDNEXT 2]"), result); Assert.IsTrue(result.Contains("* OK [UIDVALIDITY"), result); Assert.IsTrue(result.Contains("OK [READ-ONLY]"), result); }
public void TestRenameFolderToAndFromPublic() { 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.ePermissionDeleteMailbox, true); permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.Save(); string oldFolderName = "#Public.Share1"; string newFolderName = "AccountLevelFolder"; // Test renaming from local folder name to shared folder. var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName)); imapClientSimulator.Disconnect(); // Test renaming from local folder name to shared folder. oldFolderName = "LocalFolder"; newFolderName = "#Public.Share1"; imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.Logon(account1.Address, "test"); imapClientSimulator.CreateFolder(oldFolderName); Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName)); imapClientSimulator.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); }