1 /*
2 * SPDX-FileCopyrightText: 2012 Christian Mollekopf <mollekopf@kolabsys.com>
3 *
4 * SPDX-License-Identifier: LGPL-3.0-or-later
5 */
6
7 #include "kolabobjecttest.h"
8
9 #include <QTest>
10
11 #include "kolabformat/kolabobject.h"
12 #include <kolabformat/errorhandler.h>
13
preserveLatin1()14 void KolabObjectTest::preserveLatin1()
15 {
16 KCalendarCore::Event::Ptr event(new KCalendarCore::Event());
17 event->setDtStart(QDateTime(QDate(2014, 1, 1), {}));
18 event->setAllDay(true);
19 const QString summary(QLatin1String("äöü%@$£é¤¼²°"));
20 event->setSummary(summary);
21 QCOMPARE(event->summary(), summary);
22 // std::cout << event->summary().toStdString() << std::endl;
23 KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event);
24 // qDebug() << msg->encodedContent();
25 KCalendarCore::Event::Ptr readEvent = Kolab::KolabObjectReader(msg).getEvent();
26 QVERIFY(readEvent);
27 // std::cout << readEvent->summary().toStdString() << std::endl;
28 QCOMPARE(readEvent->summary(), summary);
29 }
30
preserveUnicode()31 void KolabObjectTest::preserveUnicode()
32 {
33 KCalendarCore::Event::Ptr event(new KCalendarCore::Event());
34 event->setDtStart(QDateTime(QDate(2014, 1, 1), {}));
35 event->setAllDay(true);
36 QString summary(QStringLiteral("€Š�ـأبـ☺"));
37 event->setSummary(summary);
38 QCOMPARE(event->summary(), summary);
39 // std::cout << event->summary().toStdString() << std::endl;
40 KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event);
41 // qDebug() << msg->encodedContent();
42 KCalendarCore::Event::Ptr readEvent = Kolab::KolabObjectReader(msg).getEvent();
43 QVERIFY(readEvent);
44 // std::cout << readEvent->summary().toStdString() << std::endl;
45 QCOMPARE(readEvent->summary(), summary);
46 }
47
dontCrashWithEmptyOrganizer()48 void KolabObjectTest::dontCrashWithEmptyOrganizer()
49 {
50 KCalendarCore::Event::Ptr event(new KCalendarCore::Event());
51 event->setDtStart(QDateTime(QDate(2012, 11, 11), {}));
52 event->setAllDay(true);
53 Kolab::KolabObjectWriter::writeEvent(event, Kolab::KolabV2);
54 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug);
55 Kolab::KolabObjectWriter::writeEvent(event);
56 qDebug() << Kolab::ErrorHandler::instance().error();
57 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug);
58 }
59
dontCrashWithEmptyIncidence()60 void KolabObjectTest::dontCrashWithEmptyIncidence()
61 {
62 Kolab::KolabObjectWriter::writeEvent(KCalendarCore::Event::Ptr());
63 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical);
64 Kolab::KolabObjectWriter::writeTodo(KCalendarCore::Todo::Ptr());
65 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical);
66 Kolab::KolabObjectWriter::writeJournal(KCalendarCore::Journal::Ptr());
67 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical);
68 Kolab::KolabObjectWriter::writeIncidence(KCalendarCore::Event::Ptr());
69 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical);
70 Kolab::KolabObjectWriter::writeNote(KMime::Message::Ptr());
71 QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical);
72 }
73
parseRelationMembers()74 void KolabObjectTest::parseRelationMembers()
75 {
76 {
77 QString memberString(QStringLiteral(
78 "imap:/user/jan.aachen%40lhm.klab.cc/INBOX/"
79 "20?message-id=%3Cf06aa3345a25005380b47547ad161d36%40lhm.klab.cc%3E&subject=Re%3A+test&date=Tue%2C+12+Aug+2014+20%3A42%3A59+%2B0200"));
80 Kolab::RelationMember member = Kolab::parseMemberUrl(memberString);
81
82 QString result = Kolab::generateMemberUrl(member);
83 qDebug() << result;
84 result.replace(QLatin1String("%20"), QLatin1String("+"));
85 QEXPECT_FAIL("", "This is currently failing, probably a bug in the recent changes regarding the encoding.", Continue);
86 QCOMPARE(result, memberString);
87 }
88
89 // user namespace by uid
90 {
91 Kolab::RelationMember member;
92 member.uid = 20;
93 member.mailbox = QList<QByteArray>() << "INBOX";
94 member.user = QStringLiteral("john.doe@example.org");
95 member.messageId = QStringLiteral("messageid");
96 member.date = QStringLiteral("date");
97 member.subject = QStringLiteral("subject");
98 QString url = Kolab::generateMemberUrl(member);
99 qDebug() << url;
100 Kolab::RelationMember result = Kolab::parseMemberUrl(url);
101 QCOMPARE(result.uid, member.uid);
102 QCOMPARE(result.mailbox, member.mailbox);
103 QEXPECT_FAIL("", "This is currently failing, probably a bug in the recent changes regarding the encoding.", Continue);
104 QCOMPARE(result.user, member.user);
105 QCOMPARE(result.messageId, member.messageId);
106 QCOMPARE(result.date, member.date);
107 QCOMPARE(result.subject, member.subject);
108 }
109
110 // shared namespace by uid
111 {
112 Kolab::RelationMember member;
113 member.uid = 20;
114 member.mailbox = QList<QByteArray>() << "foo"
115 << "bar";
116 member.messageId = QStringLiteral("messageid");
117 member.date = QStringLiteral("date");
118 member.subject = QStringLiteral("subject");
119 QString url = Kolab::generateMemberUrl(member);
120 qDebug() << url;
121 Kolab::RelationMember result = Kolab::parseMemberUrl(url);
122 QCOMPARE(result.uid, member.uid);
123 QCOMPARE(result.mailbox, member.mailbox);
124 QVERIFY(result.user.isEmpty());
125 QCOMPARE(result.messageId, member.messageId);
126 QCOMPARE(result.date, member.date);
127 QCOMPARE(result.subject, member.subject);
128 }
129
130 // by uuid/gid
131 {
132 Kolab::RelationMember member;
133 member.gid = QStringLiteral("fooobar");
134 QString url = Kolab::generateMemberUrl(member);
135 qDebug() << url;
136 Kolab::RelationMember result = Kolab::parseMemberUrl(url);
137 QCOMPARE(result.gid, member.gid);
138 }
139
140 // chars to en/decode
141 {
142 Kolab::RelationMember member;
143 member.uid = 20;
144 member.mailbox = QList<QByteArray>() << "spaces in folders"
145 << "+^,:@";
146 member.user = QStringLiteral("john.doe:^@example.org");
147 member.messageId = QStringLiteral("messageid+^,:@");
148 member.date = QStringLiteral("date+^,:@");
149 member.subject = QStringLiteral("subject+^,:@");
150
151 QString url = Kolab::generateMemberUrl(member);
152 qDebug() << url;
153 Kolab::RelationMember result = Kolab::parseMemberUrl(url);
154 QCOMPARE(result.uid, member.uid);
155 QEXPECT_FAIL("", "This is currently failing, probably a bug in the recent changes regarding the encoding.", Continue);
156 QCOMPARE(result.mailbox, member.mailbox);
157 QEXPECT_FAIL("", "This is currently failing, probably a bug in the recent changes regarding the encoding.", Continue);
158 QCOMPARE(result.user, member.user);
159 QCOMPARE(result.messageId, member.messageId);
160 QCOMPARE(result.date, member.date);
161 QCOMPARE(result.subject, member.subject);
162 }
163 }
164
165 QTEST_MAIN(KolabObjectTest)
166