From a853cb1a32ae9207501fc4378357107013ebce21 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 23 May 2016 13:55:36 +0200 Subject: Message removals --- examples/imapresource/tests/imapresourcetest.cpp | 30 ++++++++++++- .../imapresource/tests/imapserverproxytest.cpp | 50 ++++++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) (limited to 'examples/imapresource/tests') diff --git a/examples/imapresource/tests/imapresourcetest.cpp b/examples/imapresource/tests/imapresourcetest.cpp index 8ce32c2..30bb953 100644 --- a/examples/imapresource/tests/imapresourcetest.cpp +++ b/examples/imapresource/tests/imapresourcetest.cpp @@ -65,6 +65,8 @@ private slots: resource.setProperty("identifier", "org.kde.imap.instance1"); resource.setProperty("type", "org.kde.imap"); resource.setProperty("server", "localhost"); + resource.setProperty("user", "doe"); + resource.setProperty("password", "doe"); resource.setProperty("port", 993); Sink::Store::create(resource).exec().waitForFinished(); } @@ -164,8 +166,8 @@ private slots: VERIFYEXEC(Store::synchronize(query)); ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - ImapServerProxy imap("localhost", 993); - imap.login("doe", "doe").exec().waitForFinished(); + Imap::ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); auto msg = KMime::Message::Ptr::create(); msg->subject(true)->fromUnicodeString("Foobar", "utf8"); @@ -182,6 +184,30 @@ private slots: VERIFYEXEC(job); } + void testFetchRemovedMessages() + { + Sink::Query query; + query.resources << "org.kde.imap.instance1"; + query.request().request(); + + // Ensure all local data is processed + VERIFYEXEC(Store::synchronize(query)); + ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); + + Imap::ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); + + VERIFYEXEC(imap.remove("INBOX.test", "2:*")); + + Store::synchronize(query).exec().waitForFinished(); + ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); + + auto job = Store::fetchAll(query).then>([](const QList &mails) { + QCOMPARE(mails.size(), 1); + }); + VERIFYEXEC(job); + } + void testFailingSync() { auto resource = ApplicationDomain::ImapResource::create("account1"); diff --git a/examples/imapresource/tests/imapserverproxytest.cpp b/examples/imapresource/tests/imapserverproxytest.cpp index 139597a..b30cc33 100644 --- a/examples/imapresource/tests/imapserverproxytest.cpp +++ b/examples/imapresource/tests/imapserverproxytest.cpp @@ -79,6 +79,7 @@ private slots: void testFetchFolders() { ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); auto future = imap.fetchFolders([](const QVector &){}); future.waitForFinished(); QVERIFY(!future.errorCode()); @@ -93,6 +94,55 @@ private slots: QVERIFY(future2.errorCode()); } + void testFetchMail() + { + ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); + + KIMAP::FetchJob::FetchScope scope; + scope.mode = KIMAP::FetchJob::FetchScope::Headers; + int count = 0; + auto job = imap.select("INBOX.test").then(imap.fetch(KIMAP::ImapSet::fromImapSequenceSet("1:*"), scope, + [&count](const QString &mailbox, + const QMap &uids, + const QMap &sizes, + const QMap &attrs, + const QMap &flags, + const QMap &messages) { + Trace() << "Received " << uids.size() << " messages from " << mailbox; + Trace() << uids.size() << sizes.size() << attrs.size() << flags.size() << messages.size(); + count += uids.size(); + })); + + VERIFYEXEC(job); + QCOMPARE(count, 1); + } + + void testRemoveMail() + { + ImapServerProxy imap("localhost", 993); + VERIFYEXEC(imap.login("doe", "doe")); + VERIFYEXEC(imap.remove("INBOX.test", "1:*")); + + KIMAP::FetchJob::FetchScope scope; + scope.mode = KIMAP::FetchJob::FetchScope::Headers; + int count = 0; + auto job = imap.select("INBOX.test").then(imap.fetch(KIMAP::ImapSet::fromImapSequenceSet("1:*"), scope, + [&count](const QString &mailbox, + const QMap &uids, + const QMap &sizes, + const QMap &attrs, + const QMap &flags, + const QMap &messages) { + Trace() << "Received " << uids.size() << " messages from " << mailbox; + Trace() << uids.size() << sizes.size() << attrs.size() << flags.size() << messages.size(); + count += uids.size(); + })); + + VERIFYEXEC(job); + QCOMPARE(count, 0); + } + }; QTEST_MAIN(ImapServerProxyTest) -- cgit v1.2.3