diff options
-rw-r--r-- | examples/imapresource/imapresource.cpp | 15 | ||||
-rw-r--r-- | examples/mailtransportresource/tests/mailtransporttest.cpp | 4 | ||||
-rw-r--r-- | tests/interresourcemovetest.cpp | 2 | ||||
-rw-r--r-- | tests/mailsynctest.cpp | 2 | ||||
-rw-r--r-- | tests/mailtest.cpp | 18 | ||||
-rw-r--r-- | tests/mailthreadtest.cpp | 6 |
6 files changed, 28 insertions, 19 deletions
diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 945962f..25d9534 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp | |||
@@ -197,7 +197,7 @@ public: | |||
197 | 197 | ||
198 | auto mail = Sink::ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 198 | auto mail = Sink::ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
199 | mail.setFolder(folderLocalId); | 199 | mail.setFolder(folderLocalId); |
200 | mail.setMimeMessage(message.msg->encodedContent()); | 200 | mail.setMimeMessage(message.msg->encodedContent(true)); |
201 | mail.setExtractedFullPayloadAvailable(message.fullPayload); | 201 | mail.setExtractedFullPayloadAvailable(message.fullPayload); |
202 | setFlags(mail, message.flags); | 202 | setFlags(mail, message.flags); |
203 | 203 | ||
@@ -608,6 +608,15 @@ public: | |||
608 | } | 608 | } |
609 | return KAsync::error<void>("Nothing to do"); | 609 | return KAsync::error<void>("Nothing to do"); |
610 | } | 610 | } |
611 | static QByteArray ensureCRLF(const QByteArray &data) { | ||
612 | auto index = data.indexOf('\n'); | ||
613 | if (index > 0 && data.at(index - 1) == '\r') { //First line is LF-only terminated | ||
614 | //Convert back and forth in case there's a mix. We don't want to expand CRLF into CRCRLF. | ||
615 | return KMime::LFtoCRLF(KMime::CRLFtoLF(data)); | ||
616 | } else { | ||
617 | return data; | ||
618 | } | ||
619 | } | ||
611 | 620 | ||
612 | KAsync::Job<QByteArray> replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId, const QList<QByteArray> &changedProperties) Q_DECL_OVERRIDE | 621 | KAsync::Job<QByteArray> replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId, const QList<QByteArray> &changedProperties) Q_DECL_OVERRIDE |
613 | { | 622 | { |
@@ -616,7 +625,7 @@ public: | |||
616 | KAsync::Job<QByteArray> job = KAsync::null<QByteArray>(); | 625 | KAsync::Job<QByteArray> job = KAsync::null<QByteArray>(); |
617 | if (operation == Sink::Operation_Creation) { | 626 | if (operation == Sink::Operation_Creation) { |
618 | const QString mailbox = syncStore().resolveLocalId(ENTITY_TYPE_FOLDER, mail.getFolder()); | 627 | const QString mailbox = syncStore().resolveLocalId(ENTITY_TYPE_FOLDER, mail.getFolder()); |
619 | const QByteArray content = mail.getMimeMessage(); | 628 | const auto content = ensureCRLF(mail.getMimeMessage()); |
620 | const auto flags = getFlags(mail); | 629 | const auto flags = getFlags(mail); |
621 | const QDateTime internalDate = mail.getDate(); | 630 | const QDateTime internalDate = mail.getDate(); |
622 | job = login.then(imap->append(mailbox, content, flags, internalDate)) | 631 | job = login.then(imap->append(mailbox, content, flags, internalDate)) |
@@ -651,7 +660,7 @@ public: | |||
651 | if (messageChanged || messageMoved) { | 660 | if (messageChanged || messageMoved) { |
652 | const auto folderId = folderIdFromMailRid(oldRemoteId); | 661 | const auto folderId = folderIdFromMailRid(oldRemoteId); |
653 | const QString oldMailbox = syncStore().resolveLocalId(ENTITY_TYPE_FOLDER, folderId); | 662 | const QString oldMailbox = syncStore().resolveLocalId(ENTITY_TYPE_FOLDER, folderId); |
654 | const QByteArray content = mail.getMimeMessage(); | 663 | const auto content = ensureCRLF(mail.getMimeMessage()); |
655 | const QDateTime internalDate = mail.getDate(); | 664 | const QDateTime internalDate = mail.getDate(); |
656 | SinkTrace() << "Replacing message. Old mailbox: " << oldMailbox << "New mailbox: " << mailbox << "Flags: " << flags << "Content: " << content; | 665 | SinkTrace() << "Replacing message. Old mailbox: " << oldMailbox << "New mailbox: " << mailbox << "Flags: " << flags << "Content: " << content; |
657 | KIMAP2::ImapSet set; | 666 | KIMAP2::ImapSet set; |
diff --git a/examples/mailtransportresource/tests/mailtransporttest.cpp b/examples/mailtransportresource/tests/mailtransporttest.cpp index e4cc447..2a831ed 100644 --- a/examples/mailtransportresource/tests/mailtransporttest.cpp +++ b/examples/mailtransportresource/tests/mailtransporttest.cpp | |||
@@ -64,7 +64,7 @@ private slots: | |||
64 | message->assemble(); | 64 | message->assemble(); |
65 | 65 | ||
66 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 66 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
67 | mail.setMimeMessage(message->encodedContent()); | 67 | mail.setMimeMessage(message->encodedContent(true)); |
68 | 68 | ||
69 | VERIFYEXEC(Store::create(mail)); | 69 | VERIFYEXEC(Store::create(mail)); |
70 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 70 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
@@ -92,7 +92,7 @@ private slots: | |||
92 | message->assemble(); | 92 | message->assemble(); |
93 | 93 | ||
94 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 94 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
95 | mail.setMimeMessage(message->encodedContent()); | 95 | mail.setMimeMessage(message->encodedContent(true)); |
96 | 96 | ||
97 | VERIFYEXEC(Store::create(mail)); | 97 | VERIFYEXEC(Store::create(mail)); |
98 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 98 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
diff --git a/tests/interresourcemovetest.cpp b/tests/interresourcemovetest.cpp index 3ac6ad4..5438bc7 100644 --- a/tests/interresourcemovetest.cpp +++ b/tests/interresourcemovetest.cpp | |||
@@ -48,7 +48,7 @@ class InterResourceMoveTest : public QObject | |||
48 | m.subject(true)->fromUnicodeString(subject, "utf8"); | 48 | m.subject(true)->fromUnicodeString(subject, "utf8"); |
49 | m.messageID(true)->setIdentifier(uid); | 49 | m.messageID(true)->setIdentifier(uid); |
50 | m.assemble(); | 50 | m.assemble(); |
51 | return m.encodedContent(); | 51 | return m.encodedContent(true); |
52 | } | 52 | } |
53 | 53 | ||
54 | private slots: | 54 | private slots: |
diff --git a/tests/mailsynctest.cpp b/tests/mailsynctest.cpp index 5d51fbc..27b29a5 100644 --- a/tests/mailsynctest.cpp +++ b/tests/mailsynctest.cpp | |||
@@ -275,7 +275,7 @@ void MailSyncTest::testListMails() | |||
275 | QVERIFY(!data.isEmpty()); | 275 | QVERIFY(!data.isEmpty()); |
276 | 276 | ||
277 | KMime::Message m; | 277 | KMime::Message m; |
278 | m.setContent(data); | 278 | m.setContent(KMime::CRLFtoLF(data)); |
279 | m.parse(); | 279 | m.parse(); |
280 | QCOMPARE(mail->getSubject(), m.subject(true)->asUnicodeString()); | 280 | QCOMPARE(mail->getSubject(), m.subject(true)->asUnicodeString()); |
281 | QVERIFY(!mail->getFolder().isEmpty()); | 281 | QVERIFY(!mail->getFolder().isEmpty()); |
diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index e1361e4..cbb56d5 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp | |||
@@ -152,7 +152,7 @@ void MailTest::testCreateModifyDeleteMail() | |||
152 | message->assemble(); | 152 | message->assemble(); |
153 | 153 | ||
154 | auto mail = Mail::create(mResourceInstanceIdentifier); | 154 | auto mail = Mail::create(mResourceInstanceIdentifier); |
155 | mail.setMimeMessage(message->encodedContent()); | 155 | mail.setMimeMessage(message->encodedContent(true)); |
156 | mail.setFolder(folder); | 156 | mail.setFolder(folder); |
157 | 157 | ||
158 | VERIFYEXEC(Store::create(mail)); | 158 | VERIFYEXEC(Store::create(mail)); |
@@ -166,7 +166,7 @@ void MailTest::testCreateModifyDeleteMail() | |||
166 | QCOMPARE(mail.getFolder(), folder.identifier()); | 166 | QCOMPARE(mail.getFolder(), folder.identifier()); |
167 | QVERIFY(QFile(mail.getMimeMessagePath()).exists()); | 167 | QVERIFY(QFile(mail.getMimeMessagePath()).exists()); |
168 | KMime::Message m; | 168 | KMime::Message m; |
169 | m.setContent(mail.getMimeMessage()); | 169 | m.setContent(KMime::CRLFtoLF(mail.getMimeMessage())); |
170 | m.parse(); | 170 | m.parse(); |
171 | QCOMPARE(m.subject(true)->asUnicodeString(), subject); | 171 | QCOMPARE(m.subject(true)->asUnicodeString(), subject); |
172 | }); | 172 | }); |
@@ -182,7 +182,7 @@ void MailTest::testCreateModifyDeleteMail() | |||
182 | auto message2 = KMime::Message::Ptr::create(); | 182 | auto message2 = KMime::Message::Ptr::create(); |
183 | message2->subject(true)->fromUnicodeString(subject2, "utf8"); | 183 | message2->subject(true)->fromUnicodeString(subject2, "utf8"); |
184 | message2->assemble(); | 184 | message2->assemble(); |
185 | mail.setMimeMessage(message2->encodedContent()); | 185 | mail.setMimeMessage(message2->encodedContent(true)); |
186 | 186 | ||
187 | VERIFYEXEC(Store::modify(mail)); | 187 | VERIFYEXEC(Store::modify(mail)); |
188 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 188 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
@@ -195,7 +195,7 @@ void MailTest::testCreateModifyDeleteMail() | |||
195 | QCOMPARE(mail.getFolder(), folder.identifier()); | 195 | QCOMPARE(mail.getFolder(), folder.identifier()); |
196 | QVERIFY(QFile(mail.getMimeMessagePath()).exists()); | 196 | QVERIFY(QFile(mail.getMimeMessagePath()).exists()); |
197 | KMime::Message m; | 197 | KMime::Message m; |
198 | m.setContent(mail.getMimeMessage()); | 198 | m.setContent(KMime::CRLFtoLF(mail.getMimeMessage())); |
199 | m.parse(); | 199 | m.parse(); |
200 | QCOMPARE(m.subject(true)->asUnicodeString(), subject2); | 200 | QCOMPARE(m.subject(true)->asUnicodeString(), subject2); |
201 | }); | 201 | }); |
@@ -237,7 +237,7 @@ void MailTest::testMoveMail() | |||
237 | message->assemble(); | 237 | message->assemble(); |
238 | 238 | ||
239 | auto mail = Mail::create(mResourceInstanceIdentifier); | 239 | auto mail = Mail::create(mResourceInstanceIdentifier); |
240 | mail.setMimeMessage(message->encodedContent()); | 240 | mail.setMimeMessage(message->encodedContent(true)); |
241 | mail.setFolder(folder); | 241 | mail.setFolder(folder); |
242 | 242 | ||
243 | VERIFYEXEC(Store::create(mail)); | 243 | VERIFYEXEC(Store::create(mail)); |
@@ -289,7 +289,7 @@ void MailTest::testMarkMailAsRead() | |||
289 | message->assemble(); | 289 | message->assemble(); |
290 | 290 | ||
291 | auto mail = Mail::create(mResourceInstanceIdentifier); | 291 | auto mail = Mail::create(mResourceInstanceIdentifier); |
292 | mail.setMimeMessage(message->encodedContent()); | 292 | mail.setMimeMessage(message->encodedContent(true)); |
293 | mail.setFolder(folder); | 293 | mail.setFolder(folder); |
294 | mail.setUnread(true); | 294 | mail.setUnread(true); |
295 | VERIFYEXEC(Store::create(mail)); | 295 | VERIFYEXEC(Store::create(mail)); |
@@ -341,7 +341,7 @@ void MailTest::testCreateDraft() | |||
341 | message->assemble(); | 341 | message->assemble(); |
342 | 342 | ||
343 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 343 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
344 | mail.setMimeMessage(message->encodedContent()); | 344 | mail.setMimeMessage(message->encodedContent(true)); |
345 | mail.setDraft(true); | 345 | mail.setDraft(true); |
346 | 346 | ||
347 | VERIFYEXEC(Store::create(mail)); | 347 | VERIFYEXEC(Store::create(mail)); |
@@ -391,7 +391,7 @@ void MailTest::testModifyMailToDraft() | |||
391 | message->assemble(); | 391 | message->assemble(); |
392 | 392 | ||
393 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 393 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
394 | mail.setMimeMessage(message->encodedContent()); | 394 | mail.setMimeMessage(message->encodedContent(true)); |
395 | mail.setDraft(false); | 395 | mail.setDraft(false); |
396 | mail.setFolder(folder); | 396 | mail.setFolder(folder); |
397 | 397 | ||
@@ -438,7 +438,7 @@ void MailTest::testModifyMailToTrash() | |||
438 | message->assemble(); | 438 | message->assemble(); |
439 | 439 | ||
440 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | 440 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); |
441 | mail.setMimeMessage(message->encodedContent()); | 441 | mail.setMimeMessage(message->encodedContent(true)); |
442 | mail.setTrash(false); | 442 | mail.setTrash(false); |
443 | mail.setFolder(folder); | 443 | mail.setFolder(folder); |
444 | 444 | ||
diff --git a/tests/mailthreadtest.cpp b/tests/mailthreadtest.cpp index 02b29f6..741eb78 100644 --- a/tests/mailthreadtest.cpp +++ b/tests/mailthreadtest.cpp | |||
@@ -117,7 +117,7 @@ void MailThreadTest::testIndexInMixedOrder() | |||
117 | 117 | ||
118 | { | 118 | { |
119 | auto mail = Mail::create(mResourceInstanceIdentifier); | 119 | auto mail = Mail::create(mResourceInstanceIdentifier); |
120 | mail.setMimeMessage(message3->encodedContent()); | 120 | mail.setMimeMessage(message3->encodedContent(true)); |
121 | mail.setFolder(folder); | 121 | mail.setFolder(folder); |
122 | VERIFYEXEC(Store::create(mail)); | 122 | VERIFYEXEC(Store::create(mail)); |
123 | } | 123 | } |
@@ -140,7 +140,7 @@ void MailThreadTest::testIndexInMixedOrder() | |||
140 | 140 | ||
141 | { | 141 | { |
142 | auto mail = Mail::create(mResourceInstanceIdentifier); | 142 | auto mail = Mail::create(mResourceInstanceIdentifier); |
143 | mail.setMimeMessage(message2->encodedContent()); | 143 | mail.setMimeMessage(message2->encodedContent(true)); |
144 | mail.setFolder(folder); | 144 | mail.setFolder(folder); |
145 | VERIFYEXEC(Store::create(mail)); | 145 | VERIFYEXEC(Store::create(mail)); |
146 | } | 146 | } |
@@ -156,7 +156,7 @@ void MailThreadTest::testIndexInMixedOrder() | |||
156 | 156 | ||
157 | { | 157 | { |
158 | auto mail = Mail::create(mResourceInstanceIdentifier); | 158 | auto mail = Mail::create(mResourceInstanceIdentifier); |
159 | mail.setMimeMessage(message1->encodedContent()); | 159 | mail.setMimeMessage(message1->encodedContent(true)); |
160 | mail.setFolder(folder); | 160 | mail.setFolder(folder); |
161 | VERIFYEXEC(Store::create(mail)); | 161 | VERIFYEXEC(Store::create(mail)); |
162 | } | 162 | } |