From dc33cea58f4b920f60648e81379c58bd62861b9b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 11 Apr 2017 16:14:24 +0200 Subject: Copy mail back from mailtransport --- .../tests/mailtransporttest.cpp | 34 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'examples/mailtransportresource/tests') diff --git a/examples/mailtransportresource/tests/mailtransporttest.cpp b/examples/mailtransportresource/tests/mailtransporttest.cpp index 23a61b8..a30fc20 100644 --- a/examples/mailtransportresource/tests/mailtransporttest.cpp +++ b/examples/mailtransportresource/tests/mailtransporttest.cpp @@ -59,7 +59,7 @@ private slots: { auto message = KMime::Message::Ptr::create(); message->messageID(true)->generate("foo.com"); - message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); + message->subject(true)->fromUnicodeString(QString::fromLatin1("send: Foobar"), "utf8"); message->assemble(); auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); @@ -83,7 +83,37 @@ private slots: QVERIFY(!mailInSentMailFolder.getSubject().isEmpty()); } - //TODO test mail that fails to be sent. add a special header to the mail and have the resource fail sending. Ensure we can modify the mail to fix sending of the message. + void testSendFailure() + { + auto message = KMime::Message::Ptr::create(); + message->messageID(true)->generate("foo.com"); + message->subject(true)->fromUnicodeString(QString::fromLatin1("error: Foobar"), "utf8"); + message->assemble(); + + auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); + mail.setMimeMessage(message->encodedContent()); + + VERIFYEXEC(Store::create(mail)); + VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + //Ensure the mail is queryable in the outbox + auto mailInOutbox = Store::readOne(Query().resourceFilter(mResourceInstanceIdentifier).filter(false)); + QVERIFY(!mailInOutbox.identifier().isEmpty()); + + //Modify back to drafts + auto modifiedMail = mailInOutbox; + modifiedMail.setDraft(true); + VERIFYEXEC(Store::modify(modifiedMail)); + VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + QTest::qWait(100); + // auto mailsInOutbox = Store::read(Query().resourceFilter(mResourceInstanceIdentifier)); + // QCOMPARE(mailsInOutbox.size(), 0); + + auto mailsInDrafts = Store::read(Query().resourceFilter(mStorageResource)); + QCOMPARE(mailsInDrafts.size(), 1); + + } }; -- cgit v1.2.3