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 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 ExamineFolderRequiresReadPermission() { 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(); string selectResult = string.Empty; var imapClientSimulator = new ImapClientSimulator(); imapClientSimulator.Connect(); imapClientSimulator.LogonWithLiteral(account1.Address, "test"); string examineResult = imapClientSimulator.ExamineFolder("#Public.Share1"); imapClientSimulator.Disconnect(); Assert.IsTrue(examineResult.Contains("ACL: Read permission denied (Required for EXAMINE command)."), examineResult); }
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 ConfirmFileAddedToCorrectAccountFolder() { TestSetup testSetup = SingletonProvider<TestSetup>.Instance; Account oAccount = testSetup.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); // Confirm that the public folder is empty before we start our test. string publicDir = GetPublicDirectory(); CustomAsserts.AssertFilesInDirectory(publicDir, 0); // Add a message to the inbox. oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD"); // Confirm it exists in the IMAP folder. Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX")); oSimulator.Disconnect(); // The public directory should still be empty - the message was added to the user account. CustomAsserts.AssertFilesInDirectory(publicDir, 0); // There should be a single file in the users directory. CustomAsserts.AssertFilesInUserDirectory(oAccount, 1); }
public void TestIMAPServerLiteral() { var sim = new ImapClientSimulator(); sim.Connect(); Assert.IsTrue(sim.Send("a01 login " + GetUsername() + " {4}").StartsWith("+")); sim.Send(GetPassword()); EnsureNoPassword(); }
public void IfStartTlsNotEnabledStartTlsShouldNotBeShownInEhloResponse() { var imapSimulator = new ImapClientSimulator(false, 143); imapSimulator.Connect(); var data = imapSimulator.GetCapabilities(); Assert.IsFalse(data.Contains("STARTTLS")); }
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 TestAppendBadLiteral() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); string sWelcomeMessage = oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {TEST}", "ABCD"); Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX")); 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 TestCreateDeepFolder() { Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); oSimulator.Connect(); oSimulator.LogonWithLiteral(oAccount.Address, "test"); string result = oSimulator.Send("A01 CREATE 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26"); Assert.IsTrue(result.Contains("A01 NO")); oSimulator.Disconnect(); }
public void 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 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 ConfirmFileAddedToCorrectPublicFolder() { TestSetup testSetup = SingletonProvider<TestSetup>.Instance; Account oAccount = testSetup.AddAccount(_domain, "*****@*****.**", "test"); var oSimulator = new ImapClientSimulator(); // Confirm that the public folder is empty before we start our test. string publicDir = GetPublicDirectory(); CustomAsserts.AssertFilesInDirectory(publicDir, 0); IMAPFolders folders = _application.Settings.PublicFolders; IMAPFolder folder = folders.Add("Share"); folder.Save(); // Give everyone access to the folder. 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.ePermissionInsert, true); permission.Save(); // Add the message to the public folder. oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD"); // Confirm that the message exists in the public folder and not in the inbox. Assert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share")); Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX")); oSimulator.Disconnect(); // The public directory should now contain the message. CustomAsserts.AssertFilesInDirectory(publicDir, 1); // There users directory should still be empty. CustomAsserts.AssertFilesInUserDirectory(oAccount, 0); }
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 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 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 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 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 TestMyRights() { 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.LogonWithLiteral(account1.Address, "test"); string folderName = "#Public.Share1"; string result = imapClientSimulator.GetMyRights(folderName); Assert.IsTrue(result.StartsWith("* MYRIGHTS \"" + folderName + "\" rkxea")); 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 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 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(); }