File indexing completed on 2025-03-09 04:53:55

0001 /*
0002   SPDX-FileCopyrightText: 2009 Constantin Berzan <exit3219@gmail.com>
0003 
0004   SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "multipartjobtest.h"
0008 
0009 #include <QDebug>
0010 #include <QTest>
0011 
0012 #include <KMime/Content>
0013 using namespace KMime;
0014 
0015 #include <MessageComposer/Composer>
0016 #include <MessageComposer/GlobalPart>
0017 #include <MessageComposer/MultipartJob>
0018 #include <MessageComposer/SinglepartJob>
0019 using namespace MessageComposer;
0020 
0021 QTEST_MAIN(MultipartJobTest)
0022 
0023 void MultipartJobTest::testMultipartMixed()
0024 {
0025     Composer composer;
0026     auto mjob = new MultipartJob(&composer);
0027     mjob->setMultipartSubtype("mixed");
0028 
0029     QByteArray data1("one");
0030     QByteArray data2("two");
0031     QByteArray type1("text/plain");
0032     QByteArray type2("application/x-mors-ontologica");
0033 
0034     {
0035         auto cjob = new SinglepartJob(mjob);
0036         cjob->setData(data1);
0037         cjob->contentType()->setMimeType(type1);
0038     }
0039 
0040     {
0041         auto cjob = new SinglepartJob(mjob);
0042         cjob->setData(data2);
0043         cjob->contentType()->setMimeType(type2);
0044     }
0045 
0046     QVERIFY(mjob->exec());
0047     Content *result = mjob->content();
0048     result->assemble();
0049     qDebug() << result->encodedContent();
0050 
0051     QVERIFY(result->contentType(false));
0052     QCOMPARE(result->contentType(false)->mimeType(), QByteArray("multipart/mixed"));
0053     QCOMPARE(result->contents().count(), 2);
0054 
0055     {
0056         Content *c = result->contents().at(0);
0057         QCOMPARE(c->body(), data1);
0058         QVERIFY(c->contentType(false));
0059         QCOMPARE(c->contentType(false)->mimeType(), type1);
0060     }
0061 
0062     {
0063         Content *c = result->contents().at(1);
0064         QCOMPARE(c->body(), data2);
0065         QVERIFY(c->contentType(false));
0066         QCOMPARE(c->contentType(false)->mimeType(), type2);
0067     }
0068     delete result;
0069 }
0070 
0071 void MultipartJobTest::test8BitPropagation()
0072 {
0073     // If a subpart is 8bit, its parent must be 8bit too.
0074 
0075     Composer composer;
0076     composer.globalPart()->set8BitAllowed(true);
0077     auto mjob = new MultipartJob(&composer);
0078     mjob->setMultipartSubtype("mixed");
0079     auto mjob2 = new MultipartJob(mjob);
0080     mjob2->setMultipartSubtype("mixed");
0081     auto cjob = new SinglepartJob(mjob2);
0082     QByteArray data("time is so short and I'm sure there must be something more");
0083     cjob->setData(data);
0084     cjob->contentTransferEncoding()->setEncoding(Headers::CE8Bit);
0085     QVERIFY(mjob->exec());
0086     Content *content = mjob->content();
0087     content->assemble();
0088     qDebug() << content->encodedContent();
0089     QVERIFY(content->contentTransferEncoding(false));
0090     QCOMPARE(content->contentTransferEncoding(false)->encoding(), Headers::CE8Bit);
0091     delete content;
0092 }
0093 
0094 #include "moc_multipartjobtest.cpp"