File indexing completed on 2024-05-12 05:11:09

0001 /*
0002     SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "mailserializerplugintest.h"
0008 
0009 #include <Akonadi/Item>
0010 #include <KMime/Message>
0011 
0012 #include <QDebug>
0013 #include <QTest>
0014 
0015 QTEST_GUILESS_MAIN(MailSerializerPluginTest)
0016 
0017 using namespace Akonadi;
0018 using namespace KMime;
0019 
0020 void MailSerializerPluginTest::testMailPlugin()
0021 {
0022     QByteArray serialized =
0023         "From: sender@test.org\n"
0024         "Subject: Serializer Test\n"
0025         "To: receiver@test.org\n"
0026         "Date: Fri, 22 Jun 2007 17:24:24 +0000\n"
0027         "MIME-Version: 1.0\n"
0028         "Content-Type: text/plain\n"
0029         "\n"
0030         "Body data.";
0031 
0032     // deserializing
0033     Item item;
0034     item.setMimeType(QStringLiteral("message/rfc822"));
0035     item.setPayloadFromData(serialized);
0036 
0037     QVERIFY(item.hasPayload<KMime::Message::Ptr>());
0038     auto msg = item.payload<KMime::Message::Ptr>();
0039     QVERIFY(msg != nullptr);
0040 
0041     QCOMPARE(msg->to()->asUnicodeString(), QStringLiteral("receiver@test.org"));
0042     QCOMPARE(msg->body(), QByteArray("Body data."));
0043 
0044     // serializing
0045     QByteArray data = item.payloadData();
0046     QCOMPARE(data, serialized);
0047 }
0048 
0049 void MailSerializerPluginTest::testMessageIntegrity()
0050 {
0051     // A message that will be slightly modified if KMime::Content::assemble() is
0052     // called.  We want to avoid this, because it breaks signatures.
0053     QByteArray serialized =
0054         "from: sender@example.com\n"
0055         "to: receiver@example.com\n"
0056         "Subject: Serializer Test\n"
0057         "Date: Thu, 30 Jul 2009 13:46:31 +0300\n"
0058         "MIME-Version: 1.0\n"
0059         "Content-type: text/plain; charset=us-ascii\n"
0060         "\n"
0061         "Bla bla bla.";
0062 
0063     // Deserialize.
0064     Item item;
0065     item.setMimeType(QStringLiteral("message/rfc822"));
0066     item.setPayloadFromData(serialized);
0067 
0068     QVERIFY(item.hasPayload<KMime::Message::Ptr>());
0069     auto msg = item.payload<KMime::Message::Ptr>();
0070     QVERIFY(msg != nullptr);
0071 
0072     qDebug() << "original data:" << serialized;
0073     qDebug() << "message content:" << msg->encodedContent();
0074     QCOMPARE(msg->encodedContent(), serialized);
0075 
0076     // Serialize.
0077     QByteArray data = item.payloadData();
0078     qDebug() << "original data:" << serialized;
0079     qDebug() << "serialized data:" << data;
0080     QCOMPARE(data, serialized);
0081 }
0082 
0083 #include "moc_mailserializerplugintest.cpp"