示例#1
0
        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);
              });
        }
示例#2
0
        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());
              });
        }
示例#3
0
 private void TestMailbox(ImapCapability[] capabilities,
                      ImapMailboxFlag[] flags,
                      string name,
                      Action<ImapPseudoServer, ImapMailboxInfo> action)
 {
     TestMailbox(capabilities, flags, ".", name, action);
 }