void RetrieveCollectionsTask::doStart(KIMAP::Session *session) { Akonadi::Collection root; root.setName(resourceName()); root.setRemoteId(rootRemoteId()); root.setContentMimeTypes(QStringList(Akonadi::Collection::mimeType())); root.setParentCollection(Akonadi::Collection::root()); root.addAttribute(new NoSelectAttribute(true)); Akonadi::CachePolicy policy; policy.setInheritFromParent(false); policy.setSyncOnDemand(true); QStringList localParts; localParts << QLatin1String(Akonadi::MessagePart::Envelope) << QLatin1String(Akonadi::MessagePart::Header); int cacheTimeout = 60; if (isDisconnectedModeEnabled()) { // For disconnected mode we also cache the body // and we keep all data indifinitely localParts << QLatin1String(Akonadi::MessagePart::Body); cacheTimeout = -1; } policy.setLocalParts(localParts); policy.setCacheTimeout(cacheTimeout); policy.setIntervalCheckTime(intervalCheckTime()); root.setCachePolicy(policy); m_reportedCollections.insert(QString(), root); // this is ugly, but the result of LSUB is unfortunately not a sub-set of LIST // it also contains subscribed but currently not available (eg. deleted) mailboxes // so we need to use both and exclude mailboxes in LSUB but not in LIST if (isSubscriptionEnabled()) { KIMAP::ListJob *fullListJob = new KIMAP::ListJob(session); fullListJob->setIncludeUnsubscribed(true); fullListJob->setQueriedNamespaces(serverNamespaces()); connect(fullListJob, &KIMAP::ListJob::mailBoxesReceived, this, &RetrieveCollectionsTask::onFullMailBoxesReceived); connect(fullListJob, &KIMAP::ListJob::result, this, &RetrieveCollectionsTask::onFullMailBoxesReceiveDone); fullListJob->start(); } KIMAP::ListJob *listJob = new KIMAP::ListJob(session); listJob->setIncludeUnsubscribed(!isSubscriptionEnabled()); listJob->setQueriedNamespaces(serverNamespaces()); connect(listJob, &KIMAP::ListJob::mailBoxesReceived, this, &RetrieveCollectionsTask::onMailBoxesReceived); connect(listJob, &KIMAP::ListJob::result, this, &RetrieveCollectionsTask::onMailBoxesReceiveDone); listJob->start(); }
void testList() { QFETCH( bool, unsubscribed); QFETCH( QList<QByteArray>, scenario ); QFETCH( QList<KIMAP::MailBoxDescriptor>, listresult ); FakeServer fakeServer; fakeServer.setScenario( scenario ); fakeServer.startAndWait(); KIMAP::Session session( "127.0.0.1", 5989 ); KIMAP::ListJob *job = new KIMAP::ListJob( &session ); job->setIncludeUnsubscribed( unsubscribed ); QSignalSpy spy( job, SIGNAL(mailBoxesReceived(const QList<KIMAP::MailBoxDescriptor>&, const QList< QList<QByteArray> >&)) ); bool result = job->exec(); QEXPECT_FAIL( "bad" , "Expected failure on BAD response", Continue ); QEXPECT_FAIL( "no" , "Expected failure on NO response", Continue ); QVERIFY( result ); if ( result ) { QVERIFY( spy.count() > 0 ); QList<KIMAP::MailBoxDescriptor> mailBoxes; for ( int i = 0; i < spy.count(); i++ ) { mailBoxes+= spy.at( i ).at( 0 ).value< QList<KIMAP::MailBoxDescriptor> >(); } //kDebug() << mailBoxes.first().name; //kDebug() << listresult.first().name; QCOMPARE( mailBoxes, listresult ); } // QCOMPARE(job->mailBox(), mailbox); fakeServer.quit(); }