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
|
/*
SPDX-FileCopyrightText: 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
SPDX-FileCopyrightText: 2009 Leo Franchi <lfranchi@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "signandencrypttest.h"
#include "cryptofunctions.h"
#include "qtest_messagecomposer.h"
#include <QTest>
#include <KMime/Content>
#include <Libkleo/Enum>
#include <MessageComposer/Composer>
#include <MessageComposer/EncryptJob>
#include <MessageComposer/GlobalPart>
#include <MessageComposer/MainTextJob>
#include <MessageComposer/SignJob>
#include <MessageComposer/TextPart>
#include "setupenv.h"
#include <MimeTreeParser/NodeHelper>
QTEST_MAIN(SignAndEncryptTest)
using namespace MessageComposer;
void SignAndEncryptTest::initTestCase()
{
Test::setupEnv();
}
void SignAndEncryptTest::testContent()
{
const std::vector<GpgME::Key> &keys = Test::getKeys();
Composer composer;
TextPart part;
part.setWordWrappingEnabled(false);
part.setCleanPlainText(QStringLiteral("one flew over the cuckoo's nest"));
auto mainTextJob = new MainTextJob(&part, &composer);
auto sJob = new SignJob(&composer);
auto eJob = new EncryptJob(&composer);
QVERIFY(mainTextJob);
VERIFYEXEC(mainTextJob);
const QStringList recipients = {QStringLiteral("test@kolab.org")};
sJob->setContent(mainTextJob->content());
sJob->setSigningKeys(keys);
sJob->setCryptoMessageFormat(Kleo::OpenPGPMIMEFormat);
eJob->setCryptoMessageFormat(Kleo::OpenPGPMIMEFormat);
eJob->setRecipients(recipients);
eJob->setEncryptionKeys(keys);
eJob->appendSubjob(sJob);
VERIFYEXEC(eJob);
KMime::Content *result = eJob->content();
QVERIFY(result);
result->assemble();
ComposerTestUtil::verifySignatureAndEncryption(result, QStringLiteral("one flew over the cuckoo's nest").toUtf8(), Kleo::OpenPGPMIMEFormat);
delete result;
}
void SignAndEncryptTest::testHeaders()
{
const std::vector<GpgME::Key> &keys = Test::getKeys();
Composer composer;
auto sJob = new SignJob(&composer);
auto eJob = new EncryptJob(&composer);
QVERIFY(sJob);
QVERIFY(eJob);
const QByteArray data(QStringLiteral("one flew over the cuckoo's nest").toUtf8());
auto content = new KMime::Content;
content->setBody(data);
const QStringList recipients = {QStringLiteral("test@kolab.org")};
sJob->setContent(content);
sJob->setSigningKeys(keys);
sJob->setCryptoMessageFormat(Kleo::OpenPGPMIMEFormat);
eJob->setCryptoMessageFormat(Kleo::OpenPGPMIMEFormat);
eJob->setRecipients(recipients);
eJob->setEncryptionKeys(keys);
eJob->appendSubjob(sJob);
VERIFYEXEC(eJob);
KMime::Content *result = eJob->content();
QVERIFY(result);
result->assemble();
QVERIFY(result->contentType(false));
QCOMPARE(result->contentType()->mimeType(), "multipart/encrypted");
QCOMPARE(result->contentType()->charset(), "UTF-8");
QCOMPARE(result->contentType()->parameter("protocol"), QStringLiteral("application/pgp-encrypted"));
QCOMPARE(result->contentTransferEncoding()->encoding(), KMime::Headers::CE7Bit);
delete result;
}
#include "moc_signandencrypttest.cpp"
|