private void TestMailbox(ImapCapability[] capabilities, ImapMailboxFlag[] flags, string hierarchyDelimiter, string name, Action<ImapPseudoServer, ImapMailboxInfo> action) { capabilities = capabilities ?? new ImapCapability[0]; TestUtils.TestAuthenticated(capabilities, delegate(ImapPseudoServer server, ImapClient client) { var joinedFlags = string.Join(" ", Array.ConvertAll(flags ?? new ImapMailboxFlag[0], delegate(ImapMailboxFlag f) { return f.ToString(); }).ToArray()); // LIST server.EnqueueTaggedResponse(string.Format("* LIST ({0}) \"{1}\" {2}\r\n", joinedFlags, hierarchyDelimiter, name) + "$tag OK done\r\n"); var mailbox = client.GetMailbox(name); Assert.IsNotNull(mailbox); Assert.AreEqual(name, mailbox.FullName); Assert.AreEqual(hierarchyDelimiter, mailbox.MailboxSeparator); var requested = server.DequeueRequest(); if (Array.Exists(capabilities, delegate(ImapCapability capa) { return capa == ImapCapability.ListExtended; })) { Assert.That(requested, Text.Contains("LIST (")); Assert.That(requested, Text.Contains(string.Format(") \"\" \"{0}\"", name))); } else { Assert.That(requested, Text.EndsWith(string.Format("LIST \"\" \"{0}\"\r\n", name))); } action(server, mailbox); }); }
private void GetMailboxes(ImapMailboxFlag[] flags) { TestMailbox(null, flags, "INBOX", delegate(ImapPseudoServer server, ImapMailboxInfo mailbox) { var mailboxes = mailbox.GetMailboxes(); Assert.IsNotNull(mailboxes); var enumerator = mailboxes.GetEnumerator(); Assert.IsNotNull(mailboxes); // LIST server.EnqueueTaggedResponse("* LIST () \".\" INBOX.Child1\r\n" + "* LIST () \".\" INBOX.Child2\r\n" + "* LIST () \".\" INBOX.Child2.Child3\r\n" + "$tag OK done\r\n"); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual("Child1", enumerator.Current.Name); Assert.AreEqual("INBOX.Child1", enumerator.Current.FullName); StringAssert.EndsWith("LIST \"\" \"INBOX.*\"\r\n", server.DequeueRequest()); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual("Child2", enumerator.Current.Name); Assert.AreEqual("INBOX.Child2", enumerator.Current.FullName); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual("Child3", enumerator.Current.Name); Assert.AreEqual("INBOX.Child2.Child3", enumerator.Current.FullName); Assert.IsFalse(enumerator.MoveNext()); }); }
private void TestMailbox(ImapCapability[] capabilities, ImapMailboxFlag[] flags, string name, Action<ImapPseudoServer, ImapMailboxInfo> action) { TestMailbox(capabilities, flags, ".", name, action); }