1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
/*
SPDX-FileCopyrightText: 2009 Constantin Berzan <exit3219@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "singlepartjobtest.h"
#include <QDebug>
#include <QTest>
#include <KMime/Content>
using namespace KMime;
#include <MessageComposer/Composer>
#include <MessageComposer/GlobalPart>
#include <MessageComposer/SinglepartJob>
using namespace MessageComposer;
QTEST_MAIN(SinglepartJobTest)
void SinglepartJobTest::testContent()
{
auto composer = new Composer;
auto cjob = new SinglepartJob(composer);
QByteArray data("birds came flying from the underground");
cjob->setData(data);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QCOMPARE(result->body(), data);
QVERIFY(result->contentDisposition(false) == nullptr); // Not created unless demanded.
QVERIFY(result->contentType(false) == nullptr); // Not created unless demanded.
QVERIFY(result->contentTransferEncoding(false)); // KMime gives it a default one (7bit).
delete cjob;
delete composer;
}
void SinglepartJobTest::testContentDisposition()
{
auto composer = new Composer;
auto cjob = new SinglepartJob(composer);
QByteArray data("birds came flying from the underground");
cjob->setData(data);
QString filename = QStringLiteral("test_ăîşţâ.txt");
cjob->contentDisposition()->setDisposition(Headers::CDattachment);
cjob->contentDisposition()->setFilename(filename);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QCOMPARE(result->body(), data);
QVERIFY(result->contentDisposition(false));
QCOMPARE(result->contentDisposition()->disposition(), Headers::CDattachment);
QCOMPARE(result->contentDisposition()->filename(), filename);
delete cjob;
delete composer;
}
void SinglepartJobTest::testContentID()
{
auto composer = new Composer;
auto cjob = new SinglepartJob(composer);
QByteArray data("birds came flying from the underground");
QByteArray id("play@cold");
cjob->setData(data);
cjob->contentID()->setIdentifier(id);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QCOMPARE(result->body(), data);
QVERIFY(result->header<Headers::ContentID>());
QCOMPARE(result->header<Headers::ContentID>()->identifier(), id);
delete cjob;
delete composer;
}
void SinglepartJobTest::testContentType()
{
auto composer = new Composer;
auto cjob = new SinglepartJob(composer);
QByteArray data("birds came flying from the underground");
cjob->setData(data);
QByteArray mimeType("text/plain");
QByteArray charset("utf-8");
cjob->contentType()->setMimeType(mimeType);
cjob->contentType()->setCharset(charset);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QCOMPARE(result->body(), data);
QVERIFY(result->contentType(false));
QCOMPARE(result->contentType()->mimeType(), mimeType);
QCOMPARE(result->contentType()->charset(), charset);
delete cjob;
delete composer;
}
void SinglepartJobTest::testContentTransferEncoding()
{
auto composer = new Composer;
// 7bit if possible.
{
auto cjob = new SinglepartJob(composer);
QByteArray data("and the sun will set for you...");
cjob->setData(data);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QVERIFY(result->contentTransferEncoding(false));
QCOMPARE(result->contentTransferEncoding()->encoding(), Headers::CE7Bit);
QCOMPARE(result->body(), data);
delete cjob;
}
// quoted-printable if text doesn't fit in 7bit.
{
auto cjob = new SinglepartJob(composer);
QByteArray data("some long text to make qupr more compact than base64 [ăîşţâ]"); // utf-8
cjob->setData(data);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QVERIFY(result->contentTransferEncoding(false));
QCOMPARE(result->contentTransferEncoding()->encoding(), Headers::CEquPr);
QCOMPARE(result->body(), data);
delete cjob;
}
// base64 if it's shorter than quoted-printable
{
auto cjob = new SinglepartJob(composer);
QByteArray data("[ăîşţâ]"); // utf-8
cjob->setData(data);
QVERIFY(cjob->exec());
Content *result = cjob->content();
result->assemble();
qDebug() << result->encodedContent();
QVERIFY(result->contentTransferEncoding(false));
QCOMPARE(result->contentTransferEncoding()->encoding(), Headers::CEbase64);
QCOMPARE(result->body(), data);
delete cjob;
}
delete composer;
}
#include "moc_singlepartjobtest.cpp"
|