Warning, file /frameworks/kcontacts/autotests/ldifconvertertest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 This file is part of libkabc. 0003 SPDX-FileCopyrightText: 2015-2019 Laurent Montel <montel@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "ldifconvertertest.h" 0009 #include "converter/ldifconverter.h" 0010 #include <QTest> 0011 using namespace KContacts; 0012 0013 LDifConverterTest::LDifConverterTest(QObject *parent) 0014 : QObject(parent) 0015 { 0016 } 0017 0018 LDifConverterTest::~LDifConverterTest() 0019 { 0020 } 0021 0022 void LDifConverterTest::shouldImportEmail() 0023 { 0024 QString str = QStringLiteral( 0025 "dn: cn=laurent,mail=foo@kde.org\n" 0026 "sn: laurent\n" 0027 "cn: laurent\n" 0028 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0029 "mail: foo@kde.org\n" 0030 "objectclass: top_n" 0031 "objectclass: person\n" 0032 "objectclass: organizationalPerson"); 0033 AddresseeList lst; 0034 ContactGroup::List contactGroup; 0035 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0036 QVERIFY(result); 0037 QCOMPARE(lst.count(), 1); 0038 QCOMPARE(lst.at(0).emails().count(), 1); 0039 QCOMPARE(lst.at(0).emails().at(0), QStringLiteral("foo@kde.org")); 0040 QCOMPARE(contactGroup.count(), 0); 0041 } 0042 0043 void LDifConverterTest::shouldImportMultiEmails() 0044 { 0045 QString str = QStringLiteral( 0046 "dn: cn=laurent,mail=foo@kde.org\n" 0047 "sn: laurent\n" 0048 "cn: laurent\n" 0049 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0050 "mail: foo@kde.org\n" 0051 "mail: foo2@kde.org\n" 0052 "objectclass: top_n" 0053 "objectclass: person\n" 0054 "objectclass: organizationalPerson"); 0055 AddresseeList lst; 0056 ContactGroup::List contactGroup; 0057 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0058 QVERIFY(result); 0059 QCOMPARE(lst.count(), 1); 0060 QCOMPARE(lst.at(0).emails().count(), 2); 0061 QCOMPARE(lst.at(0).emails().at(0), QStringLiteral("foo@kde.org")); 0062 QCOMPARE(lst.at(0).emails().at(1), QStringLiteral("foo2@kde.org")); 0063 QCOMPARE(contactGroup.count(), 0); 0064 } 0065 0066 void LDifConverterTest::shouldImportStandardBirthday() 0067 { 0068 QString str = QStringLiteral( 0069 "dn: cn=laurent,mail=foo@kde.org\n" 0070 "sn: laurent\n" 0071 "cn: laurent\n" 0072 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0073 "birthyear: 2015\n" 0074 "birthmonth: 3\n" 0075 "birthday: 19\n" 0076 "mail: foo@kde.org\n" 0077 "objectclass: top_n" 0078 "objectclass: person\n" 0079 "objectclass: organizationalPerson"); 0080 AddresseeList lst; 0081 ContactGroup::List contactGroup; 0082 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0083 QVERIFY(result); 0084 QCOMPARE(lst.count(), 1); 0085 QVERIFY(lst.at(0).birthday().date().isValid()); 0086 QCOMPARE(lst.at(0).birthday().date(), QDate(2015, 3, 19)); 0087 QVERIFY(!lst.at(0).birthdayHasTime()); 0088 QCOMPARE(contactGroup.count(), 0); 0089 } 0090 0091 void LDifConverterTest::shouldImportStandardBirthdayWithoutYear() 0092 { 0093 QString str = QStringLiteral( 0094 "dn: cn=laurent,mail=foo@kde.org\n" 0095 "sn: laurent\n" 0096 "cn: laurent\n" 0097 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0098 "birthmonth: 3\n" 0099 "birthday: 19\n" 0100 "mail: foo@kde.org\n" 0101 "objectclass: top_n" 0102 "objectclass: person\n" 0103 "objectclass: organizationalPerson"); 0104 AddresseeList lst; 0105 ContactGroup::List contactGroup; 0106 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0107 QVERIFY(result); 0108 QCOMPARE(lst.count(), 1); 0109 QVERIFY(lst.at(0).birthday().date().isValid()); 0110 QCOMPARE(lst.at(0).birthday().date(), QDate(-1, 3, 19)); 0111 QVERIFY(!lst.at(0).birthdayHasTime()); 0112 QCOMPARE(contactGroup.count(), 0); 0113 } 0114 0115 void LDifConverterTest::shouldImportTheBatsBirthday() 0116 { 0117 QString str = QStringLiteral( 0118 "dn: cn=laurent,mail=foo@kde.org\n" 0119 "sn: laurent\n" 0120 "cn: laurent\n" 0121 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0122 "xbatBirthday: 20150319\n" 0123 "mail: foo@kde.org\n" 0124 "objectclass: top_n" 0125 "objectclass: person\n" 0126 "objectclass: organizationalPerson"); 0127 AddresseeList lst; 0128 ContactGroup::List contactGroup; 0129 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0130 QVERIFY(result); 0131 QCOMPARE(lst.count(), 1); 0132 QVERIFY(lst.at(0).birthday().date().isValid()); 0133 QCOMPARE(lst.at(0).birthday().date(), QDate(2015, 3, 19)); 0134 QVERIFY(!lst.at(0).birthdayHasTime()); 0135 QCOMPARE(contactGroup.count(), 0); 0136 } 0137 0138 void LDifConverterTest::shouldImportTheBatsEmails() 0139 { 0140 QString str = QStringLiteral( 0141 "dn: cn=laurent,mail=foo@kde.org\n" 0142 "sn: laurent\n" 0143 "cn: laurent\n" 0144 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0145 "mail: foo@kde.org\n" 0146 "othermailbox: foo2@kde.org\n" 0147 "othermailbox: foo3@kde.org\n" 0148 "objectclass: top_n" 0149 "objectclass: person\n" 0150 "objectclass: organizationalPerson"); 0151 AddresseeList lst; 0152 ContactGroup::List contactGroup; 0153 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0154 QVERIFY(result); 0155 QCOMPARE(lst.count(), 1); 0156 QCOMPARE(lst.at(0).emails().count(), 3); 0157 QCOMPARE(lst.at(0).emails().at(0), QStringLiteral("foo@kde.org")); 0158 QCOMPARE(lst.at(0).emails().at(1), QStringLiteral("foo2@kde.org")); 0159 QCOMPARE(lst.at(0).emails().at(2), QStringLiteral("foo3@kde.org")); 0160 QCOMPARE(contactGroup.count(), 0); 0161 } 0162 0163 void LDifConverterTest::shouldImportTitle() 0164 { 0165 QString str = QStringLiteral( 0166 "dn: cn=laurent,mail=foo@kde.org\n" 0167 "sn: laurent\n" 0168 "cn: laurent\n" 0169 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0170 "title: foo\n" 0171 "mail: foo@kde.org\n" 0172 "objectclass: top_n" 0173 "objectclass: person\n" 0174 "objectclass: organizationalPerson"); 0175 AddresseeList lst; 0176 ContactGroup::List contactGroup; 0177 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0178 QVERIFY(result); 0179 QCOMPARE(lst.count(), 1); 0180 QCOMPARE(lst.at(0).title(), QStringLiteral("foo")); 0181 QCOMPARE(contactGroup.count(), 0); 0182 } 0183 0184 void LDifConverterTest::shouldImportWorkStreet() 0185 { 0186 QString str = QStringLiteral( 0187 "dn: cn=laurent,mail=foo@kde.org\n" 0188 "sn: laurent\n" 0189 "cn: laurent\n" 0190 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0191 "title: foo\n" 0192 "mail: foo@kde.org\n" 0193 "street: work address\n" 0194 "mozillaWorkStreet2: work address next\n" 0195 "objectclass: top_n" 0196 "objectclass: person\n" 0197 "objectclass: organizationalPerson"); 0198 AddresseeList lst; 0199 ContactGroup::List contactGroup; 0200 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0201 QVERIFY(result); 0202 QCOMPARE(lst.count(), 1); 0203 QCOMPARE(lst.at(0).address(Address::Work).street(), QStringLiteral("work address\nwork address next")); 0204 QCOMPARE(contactGroup.count(), 0); 0205 } 0206 0207 void LDifConverterTest::shouldImportContactGroup() 0208 { 0209 QString str = QStringLiteral( 0210 "dn: cn=test,mail=\n" 0211 "cn: test\n" 0212 "modifyTimeStamp: 20080526T234914Z\n" 0213 "display-name: Test\n" 0214 "objectclass: top\n" 0215 "objectclass: groupOfNames\n" 0216 "member: cn=Jim Doe,mail=jim.doe@foobar.com\n" 0217 "member: cn=Jane Doe,mail=jane.doe@foobar.com\n" 0218 "member: cn=John Doe,mail=john.doe@foobar.com\n"); 0219 AddresseeList lst; 0220 ContactGroup::List contactGroup; 0221 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0222 QVERIFY(result); 0223 QCOMPARE(lst.count(), 0); 0224 QCOMPARE(contactGroup.count(), 1); 0225 ContactGroup first = contactGroup.first(); 0226 QCOMPARE(first.name(), QStringLiteral("Test")); 0227 QCOMPARE((int)first.count(), 3); 0228 } 0229 0230 void LDifConverterTest::shouldImportMultiEntries() 0231 { 0232 QString str = QStringLiteral( 0233 "dn: cn=test1,mail=test1@test.test\n" 0234 "sn: test1\n" 0235 "cn: test1\n" 0236 "uid: jpgdf2NrLQ\n" 0237 "mail: test1@test.test\n" 0238 "modifytimestamp: 20121219T140848Z\n" 0239 "objectclass: top\n" 0240 "objectclass: person\n" 0241 "objectclass: organizationalPerson\n" 0242 "\n" 0243 "dn: cn=test2,mail=test2@test.test\n" 0244 "sn: test2\n" 0245 "cn: test2\n" 0246 "uid: ow2mwdUb6A\n" 0247 "mail: test2@test.test\n" 0248 "objectclass: top\n" 0249 "objectclass: person\n" 0250 "objectclass: organizationalPerson\n"); 0251 AddresseeList lst; 0252 ContactGroup::List contactGroup; 0253 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0254 QVERIFY(result); 0255 QCOMPARE(lst.count(), 2); 0256 QCOMPARE(contactGroup.count(), 0); 0257 QCOMPARE(lst.at(0).emails().at(0), QStringLiteral("test1@test.test")); 0258 QCOMPARE(lst.at(1).emails().at(0), QStringLiteral("test2@test.test")); 0259 } 0260 0261 void LDifConverterTest::shouldImportGroupAndAddress() 0262 { 0263 QString str = QStringLiteral( 0264 "dn: cn=laurent,mail=foo@kde.org\n" 0265 "sn: laurent\n" 0266 "cn: laurent\n" 0267 "uid: d1d5cdd4-7d5d-484b-828d-58864d8efe74\n" 0268 "title: foo\n" 0269 "mail: foo@kde.org\n" 0270 "street: work address\n" 0271 "mozillaWorkStreet2: work address next\n" 0272 "objectclass: top_n" 0273 "objectclass: person\n" 0274 "objectclass: organizationalPerson\n" 0275 "\n" 0276 "dn: cn=test,mail=\n" 0277 "cn: test\n" 0278 "modifyTimeStamp: 20080526T234914Z\n" 0279 "display-name: Test\n" 0280 "objectclass: top\n" 0281 "objectclass: groupOfNames\n" 0282 "member: cn=Jim Doe,mail=jim.doe@foobar.com\n" 0283 "member: cn=Jane Doe,mail=jane.doe@foobar.com\n" 0284 "member: cn=John Doe,mail=john.doe@foobar.com\n"); 0285 0286 AddresseeList lst; 0287 ContactGroup::List contactGroup; 0288 bool result = LDIFConverter::LDIFToAddressee(str, lst, contactGroup); 0289 QVERIFY(result); 0290 QCOMPARE(lst.count(), 1); 0291 QCOMPARE(contactGroup.count(), 1); 0292 } 0293 0294 void LDifConverterTest::shouldExportEmail() 0295 { 0296 AddresseeList lst; 0297 ContactGroup::List contactGroup; 0298 Addressee addr; 0299 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0300 addr.setUid(QStringLiteral("testuid")); 0301 lst << addr; 0302 QString str; 0303 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0304 QVERIFY(result); 0305 QString expected = QStringLiteral( 0306 "dn: cn=,mail=foo@kde.org\n" 0307 "objectclass: top\n" 0308 "objectclass: person\n" 0309 "objectclass: organizationalPerson\n" 0310 "uid: testuid\n" 0311 "mail: foo@kde.org\n\n"); 0312 0313 QCOMPARE(str, expected); 0314 } 0315 0316 void LDifConverterTest::shouldExportMultiEmails() 0317 { 0318 AddresseeList lst; 0319 ContactGroup::List contactGroup; 0320 Addressee addr; 0321 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org") << QStringLiteral("foo2@kde.org") << QStringLiteral("foo3@kde.org")); 0322 addr.setUid(QStringLiteral("testuid")); 0323 lst << addr; 0324 QString str; 0325 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0326 QVERIFY(result); 0327 QString expected = QStringLiteral( 0328 "dn: cn=,mail=foo@kde.org\n" 0329 "objectclass: top\n" 0330 "objectclass: person\n" 0331 "objectclass: organizationalPerson\n" 0332 "uid: testuid\n" 0333 "mail: foo@kde.org\n" 0334 "mozillasecondemail: foo2@kde.org\n" 0335 "othermailbox: foo3@kde.org\n" 0336 "\n"); 0337 0338 QCOMPARE(str, expected); 0339 } 0340 0341 void LDifConverterTest::shouldExportBirthday() 0342 { 0343 AddresseeList lst; 0344 ContactGroup::List contactGroup; 0345 Addressee addr; 0346 QDate date(2015, 3, 3); 0347 addr.setBirthday(date); 0348 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0349 addr.setUid(QStringLiteral("testuid")); 0350 lst << addr; 0351 QString str; 0352 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0353 QVERIFY(result); 0354 QString expected = QStringLiteral( 0355 "dn: cn=,mail=foo@kde.org\n" 0356 "objectclass: top\n" 0357 "objectclass: person\n" 0358 "objectclass: organizationalPerson\n" 0359 "uid: testuid\n" 0360 "mail: foo@kde.org\n" 0361 "birthyear: 2015\n" 0362 "birthmonth: 3\n" 0363 "birthday: 3\n" 0364 "\n"); 0365 0366 QCOMPARE(str, expected); 0367 } 0368 0369 void LDifConverterTest::shouldExportBirthdayWithoutYear() 0370 { 0371 AddresseeList lst; 0372 ContactGroup::List contactGroup; 0373 Addressee addr; 0374 QDate date(-1, 3, 3); 0375 addr.setBirthday(date); 0376 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0377 addr.setUid(QStringLiteral("testuid")); 0378 lst << addr; 0379 QString str; 0380 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0381 QVERIFY(result); 0382 QString expected = QStringLiteral( 0383 "dn: cn=,mail=foo@kde.org\n" 0384 "objectclass: top\n" 0385 "objectclass: person\n" 0386 "objectclass: organizationalPerson\n" 0387 "uid: testuid\n" 0388 "mail: foo@kde.org\n" 0389 "birthmonth: 3\n" 0390 "birthday: 3\n" 0391 "\n"); 0392 0393 QCOMPARE(str, expected); 0394 } 0395 0396 void LDifConverterTest::shouldExportTitle() 0397 { 0398 AddresseeList lst; 0399 ContactGroup::List contactGroup; 0400 Addressee addr; 0401 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0402 addr.setTitle(QStringLiteral("foo")); 0403 addr.setUid(QStringLiteral("testuid")); 0404 lst << addr; 0405 QString str; 0406 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0407 QVERIFY(result); 0408 QString expected = QStringLiteral( 0409 "dn: cn=,mail=foo@kde.org\n" 0410 "objectclass: top\n" 0411 "objectclass: person\n" 0412 "objectclass: organizationalPerson\n" 0413 "uid: testuid\n" 0414 "mail: foo@kde.org\n" 0415 "title: foo\n" 0416 "\n"); 0417 0418 QCOMPARE(str, expected); 0419 } 0420 0421 void LDifConverterTest::shouldExportMultiEntries() 0422 { 0423 AddresseeList lst; 0424 ContactGroup::List contactGroup; 0425 Addressee addr; 0426 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0427 addr.setTitle(QStringLiteral("foo")); 0428 addr.setUid(QStringLiteral("testuid")); 0429 lst << addr; 0430 0431 Addressee addr2; 0432 QDate date(2015, 3, 3); 0433 addr2.setBirthday(date); 0434 addr2.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0435 addr2.setUid(QStringLiteral("testuid")); 0436 lst << addr2; 0437 0438 QString str; 0439 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0440 QVERIFY(result); 0441 0442 const QString expected = QStringLiteral( 0443 "dn: cn=,mail=foo@kde.org\n" 0444 "objectclass: top\n" 0445 "objectclass: person\n" 0446 "objectclass: organizationalPerson\n" 0447 "uid: testuid\n" 0448 "mail: foo@kde.org\n" 0449 "title: foo\n" 0450 "\n" 0451 "dn: cn=,mail=foo@kde.org\n" 0452 "objectclass: top\n" 0453 "objectclass: person\n" 0454 "objectclass: organizationalPerson\n" 0455 "uid: testuid\n" 0456 "mail: foo@kde.org\n" 0457 "birthyear: 2015\n" 0458 "birthmonth: 3\n" 0459 "birthday: 3\n" 0460 "\n"); 0461 QCOMPARE(str, expected); 0462 } 0463 0464 void LDifConverterTest::shouldExportGroup() 0465 { 0466 AddresseeList lst; 0467 ContactGroup::List contactGroup; 0468 ContactGroup grp; 0469 ContactGroup::Data data; 0470 data.setEmail(QStringLiteral("foo@kde.org")); 0471 data.setName(QStringLiteral("foo")); 0472 grp.append(data); 0473 ContactGroup::Data data2; 0474 data2.setEmail(QStringLiteral("foo2@kde.org")); 0475 data2.setName(QStringLiteral("foo2")); 0476 grp.append(data2); 0477 contactGroup.append(grp); 0478 0479 QString str; 0480 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0481 QVERIFY(result); 0482 0483 const QString expected = QStringLiteral( 0484 "objectclass: top\n" 0485 "objectclass: groupOfNames\n" 0486 "member: cn=foo,mail=foo@kde.org\n" 0487 "member: cn=foo2,mail=foo2@kde.org\n" 0488 "\n"); 0489 QCOMPARE(str, expected); 0490 } 0491 0492 void LDifConverterTest::shouldExportWorkStreet() 0493 { 0494 AddresseeList lst; 0495 Addressee addr; 0496 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0497 addr.setUid(QStringLiteral("testuid")); 0498 Address address(Address::Work); 0499 address.setStreet(QStringLiteral("work address")); 0500 address.setPostalCode(QStringLiteral("postal")); 0501 addr.insertAddress(address); 0502 lst << addr; 0503 ContactGroup::List contactGroup; 0504 0505 QString str; 0506 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0507 QVERIFY(result); 0508 0509 const QString expected = QStringLiteral( 0510 "dn: cn=,mail=foo@kde.org\n" 0511 "objectclass: top\n" 0512 "objectclass: person\n" 0513 "objectclass: organizationalPerson\n" 0514 "uid: testuid\n" 0515 "mail: foo@kde.org\n" 0516 "postalcode: postal\n" 0517 "streetaddress: work address\n" 0518 "street: work address\n" 0519 "\n"); 0520 QCOMPARE(str, expected); 0521 } 0522 0523 void LDifConverterTest::shouldExportFullName() 0524 { 0525 AddresseeList lst; 0526 Addressee addr; 0527 addr.setEmails(QStringList() << QStringLiteral("foo@kde.org")); 0528 addr.setUid(QStringLiteral("testuid")); 0529 addr.setName(QStringLiteral("name")); 0530 addr.setNickName(QStringLiteral("nickname")); 0531 addr.setFamilyName(QStringLiteral("familyname")); 0532 lst << addr; 0533 ContactGroup::List contactGroup; 0534 0535 QString str; 0536 bool result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0537 QVERIFY(result); 0538 0539 const QString expected = QStringLiteral( 0540 "dn: cn=,mail=foo@kde.org\n" 0541 "objectclass: top\n" 0542 "objectclass: person\n" 0543 "objectclass: organizationalPerson\n" 0544 "sn: familyname\n" 0545 "uid: testuid\n" 0546 "nickname: nickname\n" 0547 "xmozillanickname: nickname\n" 0548 "mozillanickname: nickname\n" 0549 "mail: foo@kde.org\n" 0550 "\n"); 0551 0552 QCOMPARE(str, expected); 0553 } 0554 0555 void LDifConverterTest::testGarbage() 0556 { 0557 AddresseeList lst; 0558 ContactGroup::List contactGroup; 0559 QString str; 0560 bool result; 0561 0562 result = LDIFConverter::addresseeAndContactGroupToLDIF(lst, contactGroup, str); 0563 QVERIFY(!result); 0564 result = LDIFConverter::contactGroupToLDIF(contactGroup, str); 0565 QVERIFY(!result); 0566 result = LDIFConverter::addresseeToLDIF(lst, str); 0567 QVERIFY(!result); 0568 0569 Addressee addr; 0570 result = LDIFConverter::addresseeToLDIF(addr, str); 0571 QVERIFY(!result); 0572 } 0573 0574 QTEST_MAIN(LDifConverterTest)