public void TestIMAPFolderPermissionAccessGroup() { Application application = SingletonProvider <TestSetup> .Instance.GetApp(); Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Group group = SingletonProvider <TestSetup> .Instance.AddGroup("TestGroup"); 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.Save(); CustomAssert.AreEqual(permission.Group.Name, group.Name); permission = folder.Permissions.Add(); permission.PermissionAccountID = account1.ID; permission.PermissionType = eACLPermissionType.ePermissionTypeUser; permission.Save(); CustomAssert.AreEqual(permission.Account.Address, account1.Address); }
private void RemoveAllSharedFolders() { IMAPFolders folders = _settings.PublicFolders; while (folders.Count > 0) { folders.DeleteByDBID(folders[0].ID); } string publicFolderPath = Path.Combine(_settings.Directories.DataDirectory, "#Public"); if (Directory.Exists(publicFolderPath)) { Directory.Delete(publicFolderPath, true); } }
//Enumerate IMAP folders public List <string> ListFolder(IMAPFolders folders, int iRecursion = 0) { iRecursion += 1; List <string> folderNames = new List <string>(); for (int i = 0; i <= folders.Count - 1; i++) { folderNames.Add(folders[i].Name + iRecursion * 3); folderNames.AddRange(ListFolder(folders[i].SubFolders, iRecursion)); } iRecursion -= 1; foreach (var i in folderNames) { Console.WriteLine(i); } return(folderNames); }
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); }
private void ConfirmPublicFolders() { if (_backupMessages) { Domain domain = _application.Domains[0]; IMAPFolders publicFolders = _application.Settings.PublicFolders; Assert.IsNotNull(publicFolders.get_ItemByName("Test1")); Assert.IsNotNull(publicFolders.get_ItemByName("Test2")); Assert.IsNotNull(publicFolders.get_ItemByName("Test3")); Assert.IsNotNull(publicFolders.get_ItemByName("ACL")); IMAPFolderPermissions permissions = publicFolders.get_ItemByName("ACL").Permissions; Assert.AreEqual(1, permissions.Count); Account account1 = domain.Accounts.get_ItemByAddress("*****@*****.**"); IMAPFolderPermission permission = permissions[0]; Assert.AreEqual(eACLPermissionType.ePermissionTypeUser, permission.PermissionType); Assert.AreEqual(account1.ID, permission.PermissionAccountID); Assert.IsTrue(permission.get_Permission(eACLPermission.ePermissionAdminister)); Assert.IsTrue(permission.get_Permission(eACLPermission.ePermissionInsert)); Assert.IsFalse(permission.get_Permission(eACLPermission.ePermissionRead)); Assert.IsFalse(permission.get_Permission(eACLPermission.ePermissionWriteSeen)); Group group1 = _application.Settings.Groups.get_ItemByName("ACLTestGroup"); permissions = publicFolders.get_ItemByName("ACL").SubFolders.get_ItemByName("MySubFolder").Permissions; permission = permissions[0]; Assert.AreEqual(eACLPermissionType.ePermissionTypeGroup, permission.PermissionType); Assert.AreEqual(group1.ID, permission.PermissionGroupID); Assert.IsTrue(permission.get_Permission(eACLPermission.ePermissionLookup)); Assert.IsTrue(permission.get_Permission(eACLPermission.ePermissionDeleteMailbox)); Assert.IsFalse(permission.get_Permission(eACLPermission.ePermissionRead)); Assert.IsFalse(permission.get_Permission(eACLPermission.ePermissionWriteSeen)); } }
private void SetupPublicFolders() { IMAPFolders folders = _application.Settings.PublicFolders; IMAPFolder folder = folders.Add("Test1"); folder.Save(); folder = folders.Add("Test2"); folder.Save(); folder = folders.Add("Test3"); folder.Save(); folder = folders.Add("ACL"); folder.Save(); Domain domain = _application.Domains[0]; Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(domain, "*****@*****.**", "test"); IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = eACLPermissionType.ePermissionTypeUser; permission.PermissionAccountID = account1.ID; permission.set_Permission(eACLPermission.ePermissionAdminister, true); permission.set_Permission(eACLPermission.ePermissionInsert, true); permission.Save(); folder = folder.SubFolders.Add("MySubFolder"); folder.Save(); Group group1 = _application.Settings.Groups.Add(); group1.Name = "ACLTestGroup"; group1.Save(); permission = folder.Permissions.Add(); permission.PermissionType = eACLPermissionType.ePermissionTypeGroup; permission.PermissionGroupID = group1.ID; permission.set_Permission(eACLPermission.ePermissionLookup, true); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); }
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 IMAPClientSimulator(); 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 static IMAPFolder AssertFolderExists(IMAPFolders folders, string folderName) { int timeout = 100; while (timeout > 0) { try { return(folders.get_ItemByName(folderName)); } catch (Exception) { } timeout--; Thread.Sleep(100); } string error = "Folder could not be found " + folderName; CustomAssert.Fail(error); return(null); }
public void TestSaveMessageInPublicIMAPFolder() { Settings settings = SingletonProvider <TestSetup> .Instance.GetApp().Settings; IMAPFolders publicFolders = settings.PublicFolders; IMAPFolder testFolder = publicFolders.Add("TestFolder"); testFolder.Save(); // Send a message to the account. hMailServer.Message oMessage = testFolder.Messages.Add(); CustomAssert.AreEqual(0, oMessage.State); oMessage.Body = "Välkommen till verkligheten"; oMessage.Subject = "Hej"; oMessage.Save(); CustomAssert.AreEqual(2, oMessage.State); CustomAssert.IsTrue(oMessage.Filename.Contains(settings.PublicFolderDiskName)); CustomAssert.IsFalse(oMessage.Filename.Contains(_domain.Name)); }
//Enumerate messages in aN IMAP folder public List <string> ListFiles(IMAPFolders folders, int iRecursion = 0) { iRecursion += 1; List <string> filenames = new List <string>(); for (int i = 0; i <= folders.Count - 1; i++) { if (folders[i].Messages.Count == 0) { Console.WriteLine(folders[i].Name + " 0 messages"); } for (int y = 0; y < folders[i].Messages.Count; y++) { Console.WriteLine(folders[i].Name + " " + folders[i].Messages[y].Filename); filenames.Add(folders[i].Messages[y].Filename); filenames.AddRange(ListFolder(folders[i].SubFolders, iRecursion)); } Console.WriteLine("\n"); } iRecursion -= 1; return(filenames); }
public void TestReplaceFullPathInPublicFolderWithPartialPath() { 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(); hMailServer.Message message = folder.Messages.Add(); message.Subject = "Test"; message.Save(); // Move the message file to another folder. string publicFolderPath = Path.Combine(_application.Settings.Directories.DataDirectory, "#Public"); string fileName = Path.Combine(publicFolderPath, "randomMail.eml"); File.Move(message.Filename, fileName); // Update the database with the 'invalid' path. string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", TestSetup.Escape(fileName), message.ID); SingletonProvider <TestSetup> .Instance.GetApp().Database.ExecuteSQL(sql); // Now try to insert the message. CustomAssert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, 0)); _application.Reinitialize(); string newMessgaeFilename = _settings.PublicFolders[0].Messages[0].Filename; CustomAssert.AreNotEqual(fileName, newMessgaeFilename); CustomAssert.IsTrue(File.Exists(newMessgaeFilename)); }
public static IMAPFolder AssertFolderExists(IMAPFolders folders, string folderName) { int timeout = 100; while (timeout > 0) { try { return folders.get_ItemByName(folderName); } catch (Exception) { } timeout--; Thread.Sleep(100); } string error = "Folder could not be found " + folderName; CustomAssert.Fail(error); return null; }