From c71bc1b1fdd4055dfe2e2155961827b8652dd96c Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 3 Aug 2017 08:44:40 -0600 Subject: A first signed message --- framework/src/domain/mime/tests/CMakeLists.txt | 13 +++-- .../src/domain/mime/tests/mailtemplatetest.cpp | 68 ++++++++++++++++++++++ 2 files changed, 77 insertions(+), 4 deletions(-) (limited to 'framework/src/domain/mime/tests') diff --git a/framework/src/domain/mime/tests/CMakeLists.txt b/framework/src/domain/mime/tests/CMakeLists.txt index 4fad00a1..f94447ff 100644 --- a/framework/src/domain/mime/tests/CMakeLists.txt +++ b/framework/src/domain/mime/tests/CMakeLists.txt @@ -8,8 +8,13 @@ include_directories( include(ECMAddTests) find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Test WebEngine) -ecm_add_test(mailtemplatetest.cpp - TEST_NAME "mailtemplatetest" - NAME_PREFIX "" - LINK_LIBRARIES Qt5::Core Qt5::Test Qt5::WebEngine frameworkplugin +include( ${CMAKE_SOURCE_DIR}/cmake/modules/add_gpg_crypto_test.cmake ) + +add_executable(mailtemplatetest mailtemplatetest.cpp) +add_gpg_crypto_test(mailtemplatetest mailtemplatetest) +target_link_libraries(mailtemplatetest + Qt5::Core + Qt5::Test + Qt5::WebEngine + frameworkplugin ) diff --git a/framework/src/domain/mime/tests/mailtemplatetest.cpp b/framework/src/domain/mime/tests/mailtemplatetest.cpp index fbe5568d..62b17a6c 100644 --- a/framework/src/domain/mime/tests/mailtemplatetest.cpp +++ b/framework/src/domain/mime/tests/mailtemplatetest.cpp @@ -6,7 +6,52 @@ #include #include +#include +#include +#include +#include + #include "mailtemplates.h" +#include "mailcrypto.h" + +static std::vector< GpgME::Key, std::allocator< GpgME::Key > > getKeys(bool smime = false) +{ + QGpgME::KeyListJob *job = nullptr; + + if (smime) { + const QGpgME::Protocol *const backend = QGpgME::smime(); + Q_ASSERT(backend); + job = backend->keyListJob(false); + } else { + const QGpgME::Protocol *const backend = QGpgME::openpgp(); + Q_ASSERT(backend); + job = backend->keyListJob(false); + } + Q_ASSERT(job); + + std::vector< GpgME::Key > keys; + GpgME::KeyListResult res = job->exec(QStringList(), true, keys); + + if (!smime) { + Q_ASSERT(keys.size() == 3); + } + + Q_ASSERT(!res.error()); + + /* + qDebug() << "got private keys:" << keys.size(); + + for (std::vector< GpgME::Key >::iterator i = keys.begin(); i != keys.end(); ++i) { + qDebug() << "key isnull:" << i->isNull() << "isexpired:" << i->isExpired(); + qDebug() << "key numuserIds:" << i->numUserIDs(); + for (uint k = 0; k < i->numUserIDs(); ++k) { + qDebug() << "userIDs:" << i->userID(k).email(); + } + } + */ + + return keys; +} static QByteArray readMailFromFile(const QString &mailFile) { @@ -147,6 +192,29 @@ private slots: //1 Plain + 2 Attachments QCOMPARE(contents.size(), 3); } + + void testCreatePlainMailSigned() + { + QStringList to = {{"to@example.org"}}; + QStringList cc = {{"cc@example.org"}};; + QStringList bcc = {{"bcc@example.org"}};; + KMime::Types::Mailbox from; + from.fromUnicodeString("from@example.org"); + QString subject = "subject"; + QString body = "body"; + QList attachments; + + std::vector keys = getKeys(); + + auto result = MailTemplates::createMessage({}, to, cc, bcc, from, subject, body, attachments, keys); + + QVERIFY(result); + qWarning() << "---------------------------------"; + qWarning().noquote() << result->encodedContent(); + qWarning() << "---------------------------------"; + QCOMPARE(result->subject()->asUnicodeString(), subject); + QVERIFY(result->contentType()->isMimeType("multipart/signed")); + } }; QTEST_MAIN(MailTemplateTest) -- cgit v1.2.3