diff options
Diffstat (limited to 'examples/carddavresource/tests/carddavtest.cpp')
-rw-r--r-- | examples/carddavresource/tests/carddavtest.cpp | 75 |
1 files changed, 55 insertions, 20 deletions
diff --git a/examples/carddavresource/tests/carddavtest.cpp b/examples/carddavresource/tests/carddavtest.cpp index b0f41d1..1d6762d 100644 --- a/examples/carddavresource/tests/carddavtest.cpp +++ b/examples/carddavresource/tests/carddavtest.cpp | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <KDAV2/DavUrl> | 11 | #include <KDAV2/DavUrl> |
12 | #include <KDAV2/DavItemCreateJob> | 12 | #include <KDAV2/DavItemCreateJob> |
13 | #include <KDAV2/DavCollectionsFetchJob> | 13 | #include <KDAV2/DavCollectionsFetchJob> |
14 | #include <KDAV2/DavCollectionCreateJob> | ||
14 | #include <KDAV2/DavCollection> | 15 | #include <KDAV2/DavCollection> |
15 | #include <KContacts/Addressee> | 16 | #include <KContacts/Addressee> |
16 | #include <KContacts/VCardConverter> | 17 | #include <KContacts/VCardConverter> |
@@ -30,28 +31,28 @@ class CardDavTest : public QObject | |||
30 | resource.setProperty("server", "http://localhost/dav/addressbooks/user/doe"); | 31 | resource.setProperty("server", "http://localhost/dav/addressbooks/user/doe"); |
31 | resource.setProperty("username", "doe"); | 32 | resource.setProperty("username", "doe"); |
32 | Sink::SecretStore::instance().insert(resource.identifier(), "doe"); | 33 | Sink::SecretStore::instance().insert(resource.identifier(), "doe"); |
33 | resource.setProperty("testmode", true); | ||
34 | return resource; | 34 | return resource; |
35 | } | 35 | } |
36 | 36 | ||
37 | 37 | ||
38 | QByteArray mResourceInstanceIdentifier; | 38 | QByteArray mResourceInstanceIdentifier; |
39 | 39 | ||
40 | void createContact(const QString &firstname, const QString &lastname) | 40 | void createContact(const QString &firstname, const QString &lastname, const QString &collectionName) |
41 | { | 41 | { |
42 | QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe")); | 42 | QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe")); |
43 | mainUrl.setUserName(QStringLiteral("doe")); | 43 | mainUrl.setUserName(QStringLiteral("doe")); |
44 | mainUrl.setPassword(QStringLiteral("doe")); | 44 | mainUrl.setPassword(QStringLiteral("doe")); |
45 | 45 | ||
46 | |||
47 | KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav); | 46 | KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav); |
48 | 47 | ||
49 | auto *job = new KDAV2::DavCollectionsFetchJob(davUrl); | 48 | auto *job = new KDAV2::DavCollectionsFetchJob(davUrl); |
50 | job->exec(); | 49 | job->exec(); |
51 | 50 | ||
52 | const auto collectionUrl = [&] { | 51 | const auto collectionUrl = [&] { |
53 | if (!job->collections().isEmpty()) { | 52 | for (const auto &col : job->collections()) { |
54 | return job->collections().first().url().url(); | 53 | if (col.displayName() == collectionName) { |
54 | return col.url().url(); | ||
55 | } | ||
55 | } | 56 | } |
56 | return QUrl{}; | 57 | return QUrl{}; |
57 | }(); | 58 | }(); |
@@ -69,11 +70,33 @@ class CardDavTest : public QObject | |||
69 | } | 70 | } |
70 | } | 71 | } |
71 | 72 | ||
73 | void createCollection(const QString &name) | ||
74 | { | ||
75 | QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe/") + name); | ||
76 | mainUrl.setUserName(QStringLiteral("doe")); | ||
77 | mainUrl.setPassword(QStringLiteral("doe")); | ||
78 | |||
79 | KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav); | ||
80 | KDAV2::DavCollection collection{davUrl, name, KDAV2::DavCollection::Contacts}; | ||
81 | |||
82 | auto createJob = new KDAV2::DavCollectionCreateJob(collection); | ||
83 | createJob->exec(); | ||
84 | if (createJob->error()) { | ||
85 | qWarning() << createJob->errorString(); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | void resetTestEnvironment() | ||
90 | { | ||
91 | system("resetmailbox.sh"); | ||
92 | } | ||
93 | |||
72 | private slots: | 94 | private slots: |
73 | 95 | ||
74 | void initTestCase() | 96 | void initTestCase() |
75 | { | 97 | { |
76 | Sink::Test::initTest(); | 98 | Sink::Test::initTest(); |
99 | resetTestEnvironment(); | ||
77 | auto resource = createResource(); | 100 | auto resource = createResource(); |
78 | QVERIFY(!resource.identifier().isEmpty()); | 101 | QVERIFY(!resource.identifier().isEmpty()); |
79 | VERIFYEXEC(Sink::Store::create(resource)); | 102 | VERIFYEXEC(Sink::Store::create(resource)); |
@@ -90,10 +113,25 @@ private slots: | |||
90 | VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier)); | 113 | VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier)); |
91 | } | 114 | } |
92 | 115 | ||
116 | void testSyncAddressbooks() | ||
117 | { | ||
118 | createCollection("addressbook2"); | ||
119 | |||
120 | Sink::SyncScope scope; | ||
121 | scope.setType<Addressbook>(); | ||
122 | scope.resourceFilter(mResourceInstanceIdentifier); | ||
123 | |||
124 | VERIFYEXEC(Sink::Store::synchronize(scope)); | ||
125 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); | ||
126 | const auto addressbooks = Sink::Store::read<Addressbook>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); | ||
127 | QCOMPARE(addressbooks.size(), 2); | ||
128 | } | ||
129 | |||
93 | void testSyncContacts() | 130 | void testSyncContacts() |
94 | { | 131 | { |
95 | createContact("john", "doe"); | 132 | createContact("john", "doe", "personal"); |
96 | createContact("jane", "doe"); | 133 | createContact("jane", "doe", "personal"); |
134 | createContact("fred", "durst", "addressbook2"); | ||
97 | Sink::SyncScope scope; | 135 | Sink::SyncScope scope; |
98 | scope.setType<Sink::ApplicationDomain::Contact>(); | 136 | scope.setType<Sink::ApplicationDomain::Contact>(); |
99 | scope.resourceFilter(mResourceInstanceIdentifier); | 137 | scope.resourceFilter(mResourceInstanceIdentifier); |
@@ -101,27 +139,24 @@ private slots: | |||
101 | VERIFYEXEC(Sink::Store::synchronize(scope)); | 139 | VERIFYEXEC(Sink::Store::synchronize(scope)); |
102 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); | 140 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); |
103 | const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); | 141 | const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); |
104 | QCOMPARE(contacts.size(), 2); | 142 | QCOMPARE(contacts.size(), 3); |
105 | 143 | ||
106 | //Ensure a resync works | 144 | //Ensure a resync works |
107 | { | 145 | { |
108 | VERIFYEXEC(Sink::Store::synchronize(scope)); | 146 | VERIFYEXEC(Sink::Store::synchronize(scope)); |
109 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); | 147 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); |
110 | const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); | 148 | const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); |
111 | QCOMPARE(contacts.size(), 2); | 149 | QCOMPARE(contacts.size(), 3); |
112 | } | 150 | } |
113 | } | ||
114 | 151 | ||
115 | void testSyncAddressbooks() | 152 | //Ensure a resync after another creation works |
116 | { | 153 | createContact("alf", "alf", "addressbook2"); |
117 | Sink::SyncScope scope; | 154 | { |
118 | scope.setType<Addressbook>(); | 155 | VERIFYEXEC(Sink::Store::synchronize(scope)); |
119 | scope.resourceFilter(mResourceInstanceIdentifier); | 156 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); |
120 | 157 | const auto contacts = Sink::Store::read<Sink::ApplicationDomain::Contact>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); | |
121 | VERIFYEXEC(Sink::Store::synchronize(scope)); | 158 | QCOMPARE(contacts.size(), 4); |
122 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); | 159 | } |
123 | const auto addressbooks = Sink::Store::read<Addressbook>(Sink::Query().resourceFilter(mResourceInstanceIdentifier)); | ||
124 | QCOMPARE(addressbooks.size(), 1); | ||
125 | } | 160 | } |
126 | 161 | ||
127 | void testAddContact() | 162 | void testAddContact() |