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"