File indexing completed on 2024-04-21 03:53:51
0001 /* 0002 SPDX-FileCopyrightText: 2020 David Faure <faure@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "davcollectionsmultifetchjobtest.h" 0008 #include "fakeserver.h" 0009 0010 #include <KDAV/DavCollectionsMultiFetchJob> 0011 0012 #include <QSignalSpy> 0013 #include <QTest> 0014 0015 using KDAV::DavCollection; 0016 Q_DECLARE_METATYPE(KDAV::Protocol) 0017 0018 void DavCollectionsMultiFetchJobTest::initTestCase() 0019 { 0020 // To let ctest exit, we shouldn't start kio_http_cache_cleaner 0021 qputenv("KIO_DISABLE_CACHE_CLEANER", "yes"); 0022 0023 qRegisterMetaType<KDAV::Protocol>(); 0024 } 0025 0026 void DavCollectionsMultiFetchJobTest::runSuccessfullTest() 0027 { 0028 FakeServer fakeServer(5990); 0029 QUrl url(QStringLiteral("http://localhost/caldav")); 0030 url.setPort(fakeServer.port()); 0031 KDAV::DavUrl davUrl1(url, KDAV::CalDav); 0032 QUrl url2(url); 0033 url2.setPath(QStringLiteral("/carddav")); 0034 KDAV::DavUrl davUrl2(url2, KDAV::CardDav); 0035 0036 auto job = new KDAV::DavCollectionsMultiFetchJob({davUrl1, davUrl2}); 0037 0038 QSignalSpy spy(job, &KDAV::DavCollectionsMultiFetchJob::collectionDiscovered); 0039 0040 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-caldav.txt")); 0041 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-caldav-collections.txt")); 0042 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-carddav.txt")); 0043 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-carddav-collections.txt")); 0044 fakeServer.startAndWait(); 0045 job->exec(); 0046 0047 QVERIFY(fakeServer.isAllScenarioDone()); 0048 QCOMPARE(job->error(), 0); 0049 0050 const KDAV::DavCollection::List collections = job->collections(); 0051 QCOMPARE(collections.count(), 2); 0052 int calDavIdx = 0; 0053 int cardDavIdx = 1; 0054 if (collections.at(0).contentTypes() == DavCollection::Contacts) { // put things in a defined order 0055 std::swap(calDavIdx, cardDavIdx); 0056 } 0057 0058 const KDAV::DavCollection calendar = collections.at(calDavIdx); 0059 QCOMPARE(calendar.displayName(), QStringLiteral("Test1 User")); 0060 QCOMPARE(calendar.contentTypes(), DavCollection::Events | DavCollection::Todos | DavCollection::FreeBusy | DavCollection::Journal); 0061 QCOMPARE(calendar.url().url().path(), QStringLiteral("/caldav.php/test1.user/home/")); 0062 QCOMPARE(calendar.CTag(), QStringLiteral("12345")); 0063 QCOMPARE(calendar.privileges(), KDAV::Read); 0064 0065 const KDAV::DavCollection addressbook = collections.at(cardDavIdx); 0066 QCOMPARE(addressbook.displayName(), QStringLiteral("My Address Book")); 0067 QCOMPARE(addressbook.contentTypes(), DavCollection::Contacts); 0068 QCOMPARE(addressbook.url().url().path(), QStringLiteral("/carddav.php/test1.user/home/")); 0069 QCOMPARE(addressbook.CTag(), QStringLiteral("3145")); 0070 QCOMPARE(addressbook.privileges(), KDAV::All); 0071 0072 QCOMPARE(spy.count(), 2); 0073 QCOMPARE(int(spy.at(calDavIdx).at(0).value<KDAV::Protocol>()), int(KDAV::CalDav)); 0074 QCOMPARE(spy.at(calDavIdx).at(1).toString(), calendar.url().url().toString()); 0075 QCOMPARE(spy.at(calDavIdx).at(2).toString(), url.toString()); 0076 0077 QCOMPARE(int(spy.at(cardDavIdx).at(0).value<KDAV::Protocol>()), int(KDAV::CardDav)); 0078 QCOMPARE(spy.at(cardDavIdx).at(1).toString(), addressbook.url().url().toString()); 0079 QCOMPARE(spy.at(cardDavIdx).at(2).toString(), url2.toString()); 0080 } 0081 0082 void DavCollectionsMultiFetchJobTest::shouldFailOnError() 0083 { 0084 FakeServer fakeServer(5990); 0085 QUrl url(QStringLiteral("http://localhost/caldav")); 0086 url.setPort(fakeServer.port()); 0087 KDAV::DavUrl davUrl1(url, KDAV::CalDav); 0088 QUrl urlError(url); 0089 urlError.setPath(QStringLiteral("/does_not_exist")); 0090 KDAV::DavUrl davUrlError(urlError, KDAV::CalDav); 0091 0092 auto job = new KDAV::DavCollectionsMultiFetchJob({davUrl1, davUrlError}); 0093 0094 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-caldav.txt")); 0095 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-caldav-collections.txt")); 0096 fakeServer.addScenarioFromFile(QLatin1String(AUTOTEST_DATA_DIR) + QStringLiteral("/dataitemmultifetchjob-error.txt")); 0097 fakeServer.startAndWait(); 0098 job->exec(); 0099 0100 QVERIFY(fakeServer.isAllScenarioDone()); 0101 QCOMPARE(job->error(), 300); 0102 } 0103 0104 QTEST_MAIN(DavCollectionsMultiFetchJobTest) 0105 0106 #include "moc_davcollectionsmultifetchjobtest.cpp"