From f38554ad4c7ff918bf7792413e6599e69d30cf3a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 22 May 2016 15:27:52 +0200 Subject: Support for folder hierarchies --- examples/imapresource/tests/imapresourcetest.cpp | 27 +++++++++++++++++++++- .../imapresource/tests/imapserverproxytest.cpp | 6 +++-- examples/imapresource/tests/resetmailbox.sh | 6 ++--- 3 files changed, 33 insertions(+), 6 deletions(-) (limited to 'examples/imapresource/tests') diff --git a/examples/imapresource/tests/imapresourcetest.cpp b/examples/imapresource/tests/imapresourcetest.cpp index d8fc46e..8ce32c2 100644 --- a/examples/imapresource/tests/imapresourcetest.cpp +++ b/examples/imapresource/tests/imapresourcetest.cpp @@ -100,7 +100,32 @@ private slots: names << folder->getName(); } QVERIFY(names.contains("INBOX")); - QVERIFY(names.contains("INBOX.test")); + QVERIFY(names.contains("test")); + }); + VERIFYEXEC(job); + } + + void testListFolderHierarchy() + { + Sink::Query query; + query.resources << "org.kde.imap.instance1"; + query.request().request(); + + Imap::ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); + VERIFYEXEC(imap.create("INBOX.test.sub")); + + // Ensure all local data is processed + VERIFYEXEC(Store::synchronize(query)); + ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); + + auto job = Store::fetchAll(query).then>([](const QList &folders) { + QCOMPARE(folders.size(), 3); + QHash map; + for (const auto &folder : folders) { + map.insert(folder->getName(), folder); + } + QCOMPARE(map.value("sub")->getParent(), map.value("test")->identifier()); }); VERIFYEXEC(job); } diff --git a/examples/imapresource/tests/imapserverproxytest.cpp b/examples/imapresource/tests/imapserverproxytest.cpp index d13a937..139597a 100644 --- a/examples/imapresource/tests/imapserverproxytest.cpp +++ b/examples/imapresource/tests/imapserverproxytest.cpp @@ -36,6 +36,8 @@ do {\ return;\ } while (0) +using namespace Imap; + /** */ class ImapServerProxyTest : public QObject @@ -77,7 +79,7 @@ private slots: void testFetchFolders() { ImapServerProxy imap("localhost", 993); - auto future = imap.fetchFolders([](const QStringList &){}); + auto future = imap.fetchFolders([](const QVector &){}); future.waitForFinished(); QVERIFY(!future.errorCode()); } @@ -85,7 +87,7 @@ private slots: void testFetchFoldersFailure() { ImapServerProxy imap("foobar", 993); - auto future = imap.fetchFolders([](const QStringList &){}); + auto future = imap.fetchFolders([](const QVector &){}); auto future2 = future; future2.waitForFinished(); QVERIFY(future2.errorCode()); diff --git a/examples/imapresource/tests/resetmailbox.sh b/examples/imapresource/tests/resetmailbox.sh index 966115a..fc78f60 100644 --- a/examples/imapresource/tests/resetmailbox.sh +++ b/examples/imapresource/tests/resetmailbox.sh @@ -1,9 +1,9 @@ #!/bin/bash - -sudo echo "dm user.doe.test" | cyradm --auth PLAIN -u cyrus -w admin localhost + +sudo echo "sam user.doe.* cyrus c" | cyradm --auth PLAIN -u cyrus -w admin localhost +sudo echo "dm user.doe.*" | cyradm --auth PLAIN -u cyrus -w admin localhost sudo echo "cm user.doe.test" | cyradm --auth PLAIN -u cyrus -w admin localhost sudo echo "sam user.doe cyrus c" | cyradm --auth PLAIN -u cyrus -w admin localhost -sudo echo "sam user.doe.test cyrus c" | cyradm --auth PLAIN -u cyrus -w admin localhost # sudo rm -R /var/spool/imap/d/user/doe/* sudo cp /work/source/Sink/tests/data/maildir1/cur/1365777830.R28.localhost.localdomain\:2\,S /var/spool/imap/d/user/doe/test/1. sudo chown cyrus:mail /var/spool/imap/d/user/doe/test/1. -- cgit v1.2.3