summaryrefslogtreecommitdiffstats
path: root/examples/carddavresource/tests/carddavtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/carddavresource/tests/carddavtest.cpp')
-rw-r--r--examples/carddavresource/tests/carddavtest.cpp116
1 files changed, 116 insertions, 0 deletions
diff --git a/examples/carddavresource/tests/carddavtest.cpp b/examples/carddavresource/tests/carddavtest.cpp
new file mode 100644
index 0000000..107e1e3
--- /dev/null
+++ b/examples/carddavresource/tests/carddavtest.cpp
@@ -0,0 +1,116 @@
1
2#include <QtTest>
3
4
5#include "common/resourcecontrol.h"
6#include "common/secretstore.h"
7#include "common/store.h"
8#include "common/test.h"
9#include "tests/testutils.h"
10#include <KDAV2/DavItem>
11#include <KDAV2/DavUrl>
12#include <KDAV2/DavItemCreateJob>
13#include <KDAV2/DavCollectionsFetchJob>
14#include <KDAV2/DavCollection>
15
16
17using Sink::ApplicationDomain::Calendar;
18using Sink::ApplicationDomain::Event;
19using Sink::ApplicationDomain::SinkResource;
20
21class CardDavTest : public QObject
22{
23 Q_OBJECT
24
25 SinkResource createResource()
26 {
27 auto resource = Sink::ApplicationDomain::CardDavResource::create("account1");
28 resource.setProperty("server", "http://localhost/dav/addressbooks/user/doe");
29 resource.setProperty("username", "doe");
30 Sink::SecretStore::instance().insert(resource.identifier(), "doe");
31 resource.setProperty("testmode", true);
32 return resource;
33 }
34
35
36 QByteArray mResourceInstanceIdentifier;
37
38 void createContact(const QString &firstname, const QString &lastname)
39 {
40 QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe"));
41 mainUrl.setUserName(QStringLiteral("doe"));
42 mainUrl.setPassword(QStringLiteral("doe"));
43
44
45 KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav);
46
47 auto *job = new KDAV2::DavCollectionsFetchJob(davUrl);
48 job->exec();
49
50 const auto collectionUrl = [&] {
51 for(const auto collection : job->collections()) {
52 return collection.url().url();
53 }
54 return QUrl{};
55 }();
56
57
58 QUrl url{collectionUrl.toString() + "xxx.vcf"};
59 url.setUserInfo(mainUrl.userInfo());
60 KDAV2::DavUrl testItemUrl(url, KDAV2::CardDav);
61 QByteArray data = QString("BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Kolab//iRony DAV Server 0.3.1//Sabre//Sabre VObject 2.1.7//EN\r\nUID:12345678-1234-1234-%1-%2\r\nFN:%1 %2\r\nN:%2;%1;;;\r\nEMAIL;TYPE=INTERNET;TYPE=HOME:%1.%2@example.com\r\nREV;VALUE=DATE-TIME:20161221T145611Z\r\nEND:VCARD\r\n").arg(firstname).arg(lastname).toUtf8();
62 KDAV2::DavItem item(testItemUrl, QStringLiteral("text/vcard"), data, QString());
63 auto createJob = new KDAV2::DavItemCreateJob(item);
64 createJob->exec();
65 if (createJob->error()) {
66 qWarning() << createJob->errorString();
67 }
68 }
69
70private slots:
71
72 void initTestCase()
73 {
74 Sink::Test::initTest();
75 auto resource = createResource();
76 QVERIFY(!resource.identifier().isEmpty());
77 VERIFYEXEC(Sink::Store::create(resource));
78 mResourceInstanceIdentifier = resource.identifier();
79 }
80
81 void cleanup()
82 {
83 VERIFYEXEC(Sink::Store::removeDataFromDisk(mResourceInstanceIdentifier));
84 }
85
86 void init()
87 {
88 VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier));
89 }
90
91 void testSyncContacts()
92 {
93 createContact("john", "doe");
94 createContact("jane", "doe");
95 Sink::SyncScope scope;
96 scope.setType<Sink::ApplicationDomain::Contact>();
97 scope.resourceFilter(mResourceInstanceIdentifier);
98
99 VERIFYEXEC(Sink::Store::synchronize(scope));
100 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
101 const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier));
102 QCOMPARE(contacts.size(), 2);
103
104 //Ensure a resync works
105 {
106 VERIFYEXEC(Sink::Store::synchronize(scope));
107 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
108 const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier));
109 QCOMPARE(contacts.size(), 2);
110 }
111 }
112};
113
114QTEST_MAIN(CardDavTest)
115
116#include "carddavtest.moc"