diff --git a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h --- a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h +++ b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h @@ -28,16 +28,6 @@ Q_OBJECT private Q_SLOTS: void initTestCase(); - void testMailWithoutEncryption(); - void testSMIMESignedEncrypted(); - void testOpenPGPSignedEncrypted(); - void testOpenPGPEncryptedAndSigned(); - void testForwardedOpenPGPSignedEncrypted(); - void testSignedForwardedOpenPGPSignedEncrypted(); - void testOpenPGPEncrypted(); - void testOpenPGPEncryptedNotDecrypted(); - void testAsync_data(); - void testAsync(); void testNotDecrypted_data(); void testNotDecrypted(); void testSMimeAutoCertImport(); diff --git a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp +++ b/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp @@ -37,259 +37,6 @@ Test::setupEnv(); } -void UnencryptedMessageTest::testMailWithoutEncryption() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("encapsulated-with-attachment.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - QVERIFY(!nodeHelper.unencryptedMessage(originalMessage)); -} - -void UnencryptedMessageTest::testSignedForwardedOpenPGPSignedEncrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("signed-forward-openpgp-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - testWriter.end(); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "bla bla bla"); // The textual content doesn't include the encrypted encapsulated message by design - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallyEncrypted); - QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); - - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QVERIFY(!unencryptedMessage); // We must not invalidate the outer signature -} - -void UnencryptedMessageTest::testForwardedOpenPGPSignedEncrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("forward-openpgp-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - testWriter.end(); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "bla bla bla"); // The textual content doesn't include the encrypted encapsulated message by design - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallyEncrypted); - - QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallySigned); - - // Now, test that the unencrypted message is generated correctly - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QVERIFY(unencryptedMessage.data()); - QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "multipart/mixed"); - QCOMPARE(unencryptedMessage->contents().size(), 2); - QCOMPARE(unencryptedMessage->contents().first()->contentType()->mimeType().data(), - "text/plain"); - QCOMPARE(unencryptedMessage->contents().first()->decodedContent().data(), "bla bla bla"); - QCOMPARE(unencryptedMessage->contents().at( - 1)->contentType()->mimeType().data(), "message/rfc822"); - KMime::Message::Ptr encapsulated = unencryptedMessage->contents().at(1)->bodyAsMessage(); - QCOMPARE(encapsulated->contentType()->mimeType().data(), "multipart/signed"); - QCOMPARE(encapsulated->contents().size(), 2); - QCOMPARE(encapsulated->contents().first()->contentType()->mimeType().data(), "text/plain"); - QCOMPARE(encapsulated->contents().at( - 1)->contentType()->mimeType().data(), "application/pgp-signature"); - QCOMPARE(encapsulated->contents().first()->decodedContent().data(), "encrypted message text"); - - // TODO: Check that the signature is valid -} - -void UnencryptedMessageTest::testSMIMESignedEncrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("smime-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); - - QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); - - // Now, test that the unencrypted message is generated correctly - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "multipart/signed"); - QCOMPARE(unencryptedMessage->contents().size(), 2); - QCOMPARE(unencryptedMessage->contents().first()->contentType()->mimeType().data(), - "text/plain"); - QCOMPARE(unencryptedMessage->contents().at( - 1)->contentType()->mimeType().data(), "application/pkcs7-signature"); - QCOMPARE( - unencryptedMessage->contents().first()->decodedContent().data(), "encrypted message text"); - - // TODO: Check that the signature is valid -} - -void UnencryptedMessageTest::testOpenPGPSignedEncrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); - - QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); - - // Now, test that the unencrypted message is generated correctly - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "multipart/signed"); - QCOMPARE(unencryptedMessage->contents().size(), 2); - QCOMPARE(unencryptedMessage->contents().first()->contentType()->mimeType().data(), - "text/plain"); - QCOMPARE(unencryptedMessage->contents().at( - 1)->contentType()->mimeType().data(), "application/pgp-signature"); - QCOMPARE( - unencryptedMessage->contents().first()->decodedContent().data(), "encrypted message text"); - - // TODO: Check that the signature is valid -} - -void UnencryptedMessageTest::testOpenPGPEncryptedAndSigned() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted+signed.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); - - QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); - - // Now, test that the unencrypted message is generated correctly - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "text/plain"); - QCOMPARE(unencryptedMessage->contents().size(), 0); - QCOMPARE(unencryptedMessage->decodedContent().data(), "encrypted message text"); - - // TODO: Check that the signature is valid -} - -void UnencryptedMessageTest::testOpenPGPEncrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); - - // Now, test that the unencrypted message is generated correctly - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "text/plain"); - QCOMPARE(unencryptedMessage->decodedContent().data(), "encrypted message text"); - QCOMPARE(unencryptedMessage->contents().size(), 0); -} - -void UnencryptedMessageTest::testOpenPGPEncryptedNotDecrypted() -{ - KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(false); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - - QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); - QCOMPARE(otp.plainTextContent().toLatin1().data(), ""); - - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QVERIFY(!unencryptedMessage); -} - -void UnencryptedMessageTest::testAsync_data() -{ - QTest::addColumn("mailFileName"); - QTest::addColumn("output"); - - QTest::newRow("openpgp-encrypt") << QStringLiteral("openpgp-encrypted.mbox") << QStringLiteral( - "encrypted message text"); - QTest::newRow("smime-opaque-sign") << QStringLiteral("smime-opaque-sign.mbox") - << QStringLiteral("A simple signed only test."); - QTest::newRow("smime-encrypt") << QStringLiteral("smime-encrypted.mbox") << QStringLiteral( - "The quick brown fox jumped over the lazy dog."); - QTest::newRow("openpgp-inline-encrypt") << QStringLiteral( - "openpgp-inline-charset-encrypted.mbox") << QStringLiteral( - "asdasd asd asd asdf sadf sdaf sadf \u00F6\u00E4\u00FC"); -} - -void UnencryptedMessageTest::testAsync() -{ - QFETCH(QString, mailFileName); - QFETCH(QString, output); - - KMime::Message::Ptr originalMessage = Test::readAndParseMail(mailFileName); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - { - QEventLoop loop; - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - - connect(&nodeHelper, &MimeTreeParser::NodeHelper::update, &loop, &QEventLoop::quit); - otp.setAllowAsync(true); - otp.parseObjectTree(originalMessage.data()); - loop.exec(); - } - // Job ended - { - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.setAllowAsync(true); - otp.parseObjectTree(originalMessage.data()); - QCOMPARE(otp.plainTextContent(), output); - } -} - void UnencryptedMessageTest::testNotDecrypted_data() { QTest::addColumn("mailFileName"); diff --git a/mimetreeparser/autotests/CMakeLists.txt b/mimetreeparser/autotests/CMakeLists.txt --- a/mimetreeparser/autotests/CMakeLists.txt +++ b/mimetreeparser/autotests/CMakeLists.txt @@ -37,6 +37,7 @@ endmacro () add_mimetreeparser_crypto_unittest(attachmenttest.cpp) +add_mimetreeparser_crypto_unittest(basicobjecttreeparsertest.cpp) add_mimetreeparser_unittest(bodypartformatterbasefactorytest.cpp) add_mimetreeparser_unittest(nodehelpertest.cpp) add_mimetreeparser_class_unittest(cryptohelpertest.cpp "../src/cryptohelper.cpp") diff --git a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h b/mimetreeparser/autotests/basicobjecttreeparsertest.h copy from messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h copy to mimetreeparser/autotests/basicobjecttreeparsertest.h --- a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h +++ b/mimetreeparser/autotests/basicobjecttreeparsertest.h @@ -1,6 +1,6 @@ /* Copyright (c) 2010 Thomas McGuire - Copyright (c) 2016 Sandro Knauß + Copyright (c) 2019 Sandro Knauß This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -18,12 +18,12 @@ 02110-1301, USA. */ -#ifndef MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSAGETEST_H -#define MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSAGETEST_H +#ifndef MIMETREEPARSER_TESTS_OBJECTTREEPARSERTEST_H +#define MIMETREEPARSER_TESTS_OBJECTTREEPARSERTEST_H #include -class UnencryptedMessageTest : public QObject +class ObjectTreeParserTest : public QObject { Q_OBJECT private Q_SLOTS: @@ -38,9 +38,6 @@ void testOpenPGPEncryptedNotDecrypted(); void testAsync_data(); void testAsync(); - void testNotDecrypted_data(); - void testNotDecrypted(); - void testSMimeAutoCertImport(); }; -#endif // MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSAGETEST_H +#endif // MIMETREEPARSER_TESTS_OBJECTTREEPARSERTEST_H diff --git a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp b/mimetreeparser/autotests/basicobjecttreeparsertest.cpp copy from messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp copy to mimetreeparser/autotests/basicobjecttreeparsertest.cpp --- a/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp +++ b/mimetreeparser/autotests/basicobjecttreeparsertest.cpp @@ -1,6 +1,6 @@ /* Copyright (c) 2010 Thomas McGuire - Copyright (c) 2016 Sandro Knauß + Copyright (c) 2019 Sandro Knauß This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -18,81 +18,73 @@ 02110-1301, USA. */ -#include "unencryptedmessagetest.h" +#include "basicobjecttreeparsertest.h" #include "util.h" #include "setupenv.h" #include #include -#include +#include #include -using namespace MessageViewer; +using namespace MimeTreeParser; -QTEST_MAIN(UnencryptedMessageTest) +QTEST_MAIN(ObjectTreeParserTest) -void UnencryptedMessageTest::initTestCase() +void ObjectTreeParserTest::initTestCase() { Test::setupEnv(); } -void UnencryptedMessageTest::testMailWithoutEncryption() +void ObjectTreeParserTest::testMailWithoutEncryption() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("encapsulated-with-attachment.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + = readAndParseMail(QStringLiteral("encapsulated-with-attachment.mbox")); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); otp.parseObjectTree(originalMessage.data()); QVERIFY(!nodeHelper.unencryptedMessage(originalMessage)); } -void UnencryptedMessageTest::testSignedForwardedOpenPGPSignedEncrypted() +void ObjectTreeParserTest::testSignedForwardedOpenPGPSignedEncrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("signed-forward-openpgp-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + = readAndParseMail(QStringLiteral("signed-forward-openpgp-signed-encrypted.mbox")); + + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); otp.parseObjectTree(originalMessage.data()); - testWriter.end(); QCOMPARE(otp.plainTextContent().toLatin1().data(), "bla bla bla"); // The textual content doesn't include the encrypted encapsulated message by design QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallyEncrypted); + originalMessage.data()), KMMsgPartiallyEncrypted); QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); + originalMessage.data()), KMMsgFullySigned); KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); QVERIFY(!unencryptedMessage); // We must not invalidate the outer signature } -void UnencryptedMessageTest::testForwardedOpenPGPSignedEncrypted() +void ObjectTreeParserTest::testForwardedOpenPGPSignedEncrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("forward-openpgp-signed-encrypted.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + = readAndParseMail(QStringLiteral("forward-openpgp-signed-encrypted.mbox")); + + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); + testSource.setDecryptMessage(true); otp.parseObjectTree(originalMessage.data()); - testWriter.end(); QCOMPARE(otp.plainTextContent().toLatin1().data(), "bla bla bla"); // The textual content doesn't include the encrypted encapsulated message by design QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallyEncrypted); + originalMessage.data()), KMMsgPartiallyEncrypted); QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgPartiallySigned); + originalMessage.data()), KMMsgPartiallySigned); // Now, test that the unencrypted message is generated correctly KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); @@ -115,23 +107,23 @@ // TODO: Check that the signature is valid } -void UnencryptedMessageTest::testSMIMESignedEncrypted() +void ObjectTreeParserTest::testSMIMESignedEncrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("smime-signed-encrypted.mbox")); + = readAndParseMail(QStringLiteral("smime-signed-encrypted.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); + testSource.setDecryptMessage(true); otp.parseObjectTree(originalMessage.data()); QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); + originalMessage.data()), KMMsgFullyEncrypted); QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); + originalMessage.data()), KMMsgFullySigned); // Now, test that the unencrypted message is generated correctly KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); @@ -147,23 +139,23 @@ // TODO: Check that the signature is valid } -void UnencryptedMessageTest::testOpenPGPSignedEncrypted() +void ObjectTreeParserTest::testOpenPGPSignedEncrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-signed-encrypted.mbox")); + = readAndParseMail(QStringLiteral("openpgp-signed-encrypted.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); + testSource.setDecryptMessage(true); otp.parseObjectTree(originalMessage.data()); QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); + originalMessage.data()), KMMsgFullyEncrypted); QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); + originalMessage.data()), KMMsgFullySigned); // Now, test that the unencrypted message is generated correctly KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); @@ -179,23 +171,23 @@ // TODO: Check that the signature is valid } -void UnencryptedMessageTest::testOpenPGPEncryptedAndSigned() +void ObjectTreeParserTest::testOpenPGPEncryptedAndSigned() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted+signed.mbox")); + = readAndParseMail(QStringLiteral("openpgp-encrypted+signed.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); + testSource.setDecryptMessage(true); otp.parseObjectTree(originalMessage.data()); QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); + originalMessage.data()), KMMsgFullyEncrypted); QCOMPARE(nodeHelper.overallSignatureState( - originalMessage.data()), MimeTreeParser::KMMsgFullySigned); + originalMessage.data()), KMMsgFullySigned); // Now, test that the unencrypted message is generated correctly KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); @@ -206,48 +198,47 @@ // TODO: Check that the signature is valid } -void UnencryptedMessageTest::testOpenPGPEncrypted() +void ObjectTreeParserTest::testOpenPGPEncrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); + = readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); + testSource.setDecryptMessage(true); otp.parseObjectTree(originalMessage.data()); QCOMPARE(otp.plainTextContent().toLatin1().data(), "encrypted message text"); QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); + originalMessage.data()), KMMsgFullyEncrypted); // Now, test that the unencrypted message is generated correctly KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); QCOMPARE(unencryptedMessage->contentType()->mimeType().data(), "text/plain"); QCOMPARE(unencryptedMessage->decodedContent().data(), "encrypted message text"); QCOMPARE(unencryptedMessage->contents().size(), 0); } -void UnencryptedMessageTest::testOpenPGPEncryptedNotDecrypted() +void ObjectTreeParserTest::testOpenPGPEncryptedNotDecrypted() { KMime::Message::Ptr originalMessage - = Test::readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); + = readAndParseMail(QStringLiteral("openpgp-encrypted.mbox")); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(false); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + ObjectTreeParser otp(&testSource, &nodeHelper); otp.parseObjectTree(originalMessage.data()); QCOMPARE(nodeHelper.overallEncryptionState( - originalMessage.data()), MimeTreeParser::KMMsgFullyEncrypted); + originalMessage.data()), KMMsgFullyEncrypted); QCOMPARE(otp.plainTextContent().toLatin1().data(), ""); KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); QVERIFY(!unencryptedMessage); } -void UnencryptedMessageTest::testAsync_data() +void ObjectTreeParserTest::testAsync_data() { QTest::addColumn("mailFileName"); QTest::addColumn("output"); @@ -263,89 +254,29 @@ "asdasd asd asd asdf sadf sdaf sadf \u00F6\u00E4\u00FC"); } -void UnencryptedMessageTest::testAsync() +void ObjectTreeParserTest::testAsync() { QFETCH(QString, mailFileName); QFETCH(QString, output); - KMime::Message::Ptr originalMessage = Test::readAndParseMail(mailFileName); - MimeTreeParser::NodeHelper nodeHelper; - Test::ObjectTreeSource emptySource(nullptr, nullptr); - emptySource.setAllowDecryption(true); + KMime::Message::Ptr originalMessage = readAndParseMail(mailFileName); + NodeHelper nodeHelper; + SimpleObjectTreeSource testSource; + testSource.setDecryptMessage(true); { QEventLoop loop; - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + ObjectTreeParser otp(&testSource, &nodeHelper); - connect(&nodeHelper, &MimeTreeParser::NodeHelper::update, &loop, &QEventLoop::quit); + connect(&nodeHelper, &NodeHelper::update, &loop, &QEventLoop::quit); otp.setAllowAsync(true); otp.parseObjectTree(originalMessage.data()); loop.exec(); } // Job ended { - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); + ObjectTreeParser otp(&testSource, &nodeHelper); otp.setAllowAsync(true); otp.parseObjectTree(originalMessage.data()); QCOMPARE(otp.plainTextContent(), output); } } - -void UnencryptedMessageTest::testNotDecrypted_data() -{ - QTest::addColumn("mailFileName"); - QTest::addColumn("decryptMessage"); - - QTest::newRow("openpgp-inline") << QStringLiteral("inlinepgpencrypted.mbox") << true; - QTest::newRow("openpgp-encrypt") << QStringLiteral("openpgp-encrypted.mbox") << true; - QTest::newRow("smime-encrypt") << QStringLiteral("smime-encrypted.mbox") << true; - QTest::newRow("openpgp-inline-encrypt") << QStringLiteral( - "openpgp-inline-charset-encrypted.mbox") << true; - QTest::newRow("smime-opaque-sign") << QStringLiteral("smime-opaque-sign.mbox") << false; - QTest::newRow("openpgp-inline-signed") << QStringLiteral("openpgp-inline-signed.mbox") << false; - QTest::newRow("openpgp-mime-signed") << QStringLiteral("openpgp-signed-mailinglist.mbox") - << false; -} - -void UnencryptedMessageTest::testNotDecrypted() -{ - QFETCH(QString, mailFileName); - QFETCH(bool, decryptMessage); - KMime::Message::Ptr originalMessage = Test::readAndParseMail(mailFileName); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - emptySource.setAllowDecryption(false); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - testWriter.end(); - - if (decryptMessage) { - QCOMPARE(otp.plainTextContent().toLatin1().data(), ""); - } else { - QVERIFY(otp.plainTextContent().toLatin1().data()); - } - QCOMPARE(testWriter.data().contains(""), decryptMessage); - - KMime::Message::Ptr unencryptedMessage = nodeHelper.unencryptedMessage(originalMessage); - QCOMPARE((bool)unencryptedMessage, false); -} - -void UnencryptedMessageTest::testSMimeAutoCertImport() -{ - KMime::Message::Ptr originalMessage = Test::readAndParseMail(QStringLiteral("smime-cert.mbox")); - - MimeTreeParser::NodeHelper nodeHelper; - BufferedHtmlWriter testWriter; - testWriter.begin(); - Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - MimeTreeParser::ObjectTreeParser otp(&emptySource, &nodeHelper); - otp.parseObjectTree(originalMessage.data()); - testWriter.end(); - - QCOMPARE(otp.plainTextContent().toLatin1().data(), ""); - QVERIFY(testWriter.data().contains("Sorry, certificate could not be imported.")); -}