public void TestFolderUpdateNotification() { hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); IMAPSimulator simulator1 = new IMAPSimulator(); IMAPSimulator simulator2 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); simulator2.ConnectAndLogon(account.Address, "test"); simulator1.SelectFolder("Inbox"); simulator2.SelectFolder("Inbox"); string result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsFalse(result.Contains("Deleted")); Assert.IsFalse(result.Contains("Seen")); simulator1.SetDeletedFlag(1); simulator1.SetSeenFlag(1); result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsTrue(result.Contains("Deleted")); Assert.IsTrue(result.Contains("Seen")); simulator1.Disconnect(); simulator2.Disconnect(); }
public void TestFolderExpungeNotification() { hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); IMAPSimulator simulator1 = new IMAPSimulator(); IMAPSimulator simulator2 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); simulator2.ConnectAndLogon(account.Address, "test"); simulator1.SelectFolder("Inbox"); simulator2.SelectFolder("Inbox"); string result = simulator2.NOOP(); Assert.IsFalse(result.Contains("Deleted")); Assert.IsFalse(result.Contains("Seen")); simulator1.SetDeletedFlag(1); simulator1.Expunge(); // the result may (should) come after the first NOOP response stream so do noop twice. result = simulator2.NOOP() + simulator2.NOOP(); Assert.IsTrue(result.Contains("* 1 EXPUNGE")); simulator1.Disconnect(); simulator2.Disconnect(); }
public void TestDeleteIMAPFolderNotifications() { _settings.IMAPIdleEnabled = true; hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPSimulator oSimulator1 = new IMAPSimulator(); IMAPSimulator oSimulator2 = new IMAPSimulator(); oSimulator1.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); oSimulator1.SelectFolder("Inbox"); oSimulator2.CreateFolder("Mailbox"); oSimulator2.DeleteFolder("Mailbox"); SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 1); string noopResponse = oSimulator1.NOOP() + oSimulator1.NOOP(); // confirm that the client is notified about this message even though another // folder has been dropped by another client. Assert.IsTrue(noopResponse.Contains(@"* 1 EXISTS"), noopResponse); }
public void TestExpungeNotification() { _settings.IMAPIdleEnabled = true; hMailServer.Account oAccount = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test"); for (int i = 0; i < 5; i++ ) SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"); POP3Simulator.AssertMessageCount(oAccount.Address, "test", 5); IMAPSimulator oSimulator1 = new IMAPSimulator(); IMAPSimulator oSimulator2 = new IMAPSimulator(); oSimulator1.ConnectAndLogon(oAccount.Address, "test"); oSimulator2.ConnectAndLogon(oAccount.Address, "test"); oSimulator1.SelectFolder("Inbox"); oSimulator2.SelectFolder("Inbox"); for (int i = 1; i <= 5; i++) { Assert.IsTrue(oSimulator1.SetFlagOnMessage(i, true, @"\Deleted")); } string noopResponse = oSimulator2.NOOP()+ oSimulator2.NOOP(); Assert.IsTrue(noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)") && noopResponse.Contains(@"* 1 FETCH (FLAGS (\Deleted)"), noopResponse); bool result = oSimulator1.Expunge(); string expungeResult = oSimulator2.NOOP() + oSimulator2.NOOP(); Assert.IsTrue(expungeResult.Contains("* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE\r\n* 1 EXPUNGE"), expungeResult); }
public void TestPublicFolderUpdateNotification() { hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("Share"); folder.Save(); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteOthers, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteSeen, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionWriteDeleted, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true); permission.Save(); hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "TestSubject", "TestBody"); IMAPSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); IMAPSimulator simulator1 = new IMAPSimulator(); IMAPSimulator simulator2 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); simulator2.ConnectAndLogon(account.Address, "test"); simulator1.SelectFolder("Inbox"); simulator2.SelectFolder("Inbox"); Assert.IsTrue(simulator1.Copy(1, "#Public.Share")); simulator1.SelectFolder("#Public.Share"); simulator2.SelectFolder("#Public.Share"); 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(); }