diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e9c4aa2b..51200a75 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,53 +1,29 @@ find_package(Qt5Test REQUIRED) set(test_LIBS kgpg_lib Qt5::Test) set(COMMON common.h common.cpp) function(create_test name) add_executable(${name} ${ARGN} ${COMMON}) target_link_libraries(${name} ${test_LIBS}) add_test(NAME ${name} COMMAND ${name}) - set_property(TEST ${name} PROPERTY ENVIRONMENT - "XDG_CONFIG_HOME=${CMAKE_BINARY_DIR}/tests") - set_property(TEST ${name} PROPERTY RUN_SERIAL TRUE) #since gpg config home is shared between each test add_dependencies(${name} test-data) endfunction() create_test(kgpg-import kgpgimport.h kgpgimport.cpp) create_test(kgpg-verify kgpgverify.h kgpgverify.cpp) create_test(kgpg-change-trust kgpgchangetrust.h kgpgchangetrust.cpp) create_test(kgpg-disable kgpgchangedisable.h kgpgchangedisable.cpp) create_test(kgpg-interface kgpginterface.h kgpginterface.cpp) create_test(kgpg-encrypt kgpgencrypt.h kgpgencrypt.cpp) create_test(kgpg-decrypt kgpgdecrypt.h kgpgdecrypt.cpp) create_test(kgpg-del-key kgpgdelkey.h kgpgdelkey.cpp) create_test(kgpg-add-photo kgpgaddphoto.h kgpgaddphoto.cpp) create_test(kgpg-add-uid kgpgadduid.h kgpgadduid.cpp) create_test(kgpg-export kgpgexport.h kgpgexport.cpp) -set(GpgConf .gnupg/gpg.conf) -set(KgpgConf kgpgrc) -set(Keys - keys/kgpgtest_BA7695F3C550DF14.asc - keys/kgpgtest_BA7695F3C550DF14.pass - keys/kgpgtest_BA7695F3C550DF14_pub.asc - keys/signed_bad_sig - keys/signed_text - keys/encrypted_text.txt - keys/encrypted_text_hide_key_id.txt - keys/image.jpg -) - add_custom_target(test-data) -add_custom_command(TARGET test-data PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_directory ${CMAKE_SOURCE_DIR}/tests/.gnupg ${CMAKE_BINARY_DIR}/tests/gnupg) add_custom_command(TARGET test-data PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/tests/keys ${CMAKE_BINARY_DIR}/tests/keys) - -add_custom_command(TARGET test-data PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy ${CMAKE_SOURCE_DIR}/tests/kgpgrc - ${CMAKE_BINARY_DIR}/tests/kgpgrc) diff --git a/tests/common.cpp b/tests/common.cpp index 4311fb46..4d1079bf 100644 --- a/tests/common.cpp +++ b/tests/common.cpp @@ -1,88 +1,114 @@ #include "common.h" #include "../kgpginterface.h" #include "../kgpgsettings.h" #include "../transactions/kgpgtransaction.h" #include #include #include #include #include #include +#include -bool resetGpgConf() +bool resetGpgConf(QTemporaryDir &basedir) { + if (!basedir.isValid()) + return false; + + // export path from which kgpgsettings will pick up the kgpgrc + qputenv("XDG_CONFIG_HOME", basedir.path().toUtf8()); + + QFile kgpgconf(basedir.filePath(QLatin1String("kgpgrc"))); + if (!kgpgconf.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) + return false; + + kgpgconf.write("[GPG Settings]\n" + "gpg_config_path[$e]=" + basedir.path().toUtf8() + "/.gnupg/gpg.conf\n" + "[General Options]\n" + "first run=false\n" + ); + kgpgconf.close(); + + // (re)create the home directory for GnuPG const QString dot_gpg(QLatin1String(".gnupg")); - QDir dir(dot_gpg); + QDir dir(basedir.path() + QLatin1String("/.gnupg")); dir.removeRecursively(); - if (!QDir::current().mkdir(dot_gpg)) + if (!dir.mkpath(dir.path())) return false; - if (!QFile::setPermissions(QDir::currentPath() + QLatin1Char('/') + dot_gpg, + if (!QFile::setPermissions(dir.path(), QFileDevice::ReadOwner | QFileDevice::WriteOwner | QFileDevice::ExeOwner)) return false; - return QFile::copy(QLatin1String("gnupg/gpg.conf"), QLatin1String(".gnupg/gpg.conf")); + + QFile conf(dir.filePath(QLatin1String("gpg.conf"))); + if (!conf.open(QIODevice::WriteOnly)) + return false; + + conf.write("keyserver hkp://pool.sks-keyservers.net\n"); + + return true; } QString readFile(const QString &filename) { QFile file(filename); if (file.open(QIODevice::ReadOnly)) return QLatin1String(file.readAll()); else return QString(); } -static QStringList configArguments() +static QStringList configArguments(const QTemporaryDir &dir) { - const QString conf = QLatin1String(".gnupg/gpg.conf"); - const QString gpgHome = QLatin1String(".gnupg"); + const QString conf = dir.filePath(QLatin1String(".gnupg/gpg.conf")); + const QString gpgHome = dir.filePath(QLatin1String(".gnupg")); return { QLatin1String("--options"), conf, QLatin1String("--homedir"), gpgHome }; } -void addGpgKey(const QString &file, const QString &password) +void addGpgKey(QTemporaryDir &dir, const QString &file, const QString &password) { QString command = QLatin1String("gpg"); QStringList args; args.push_back(QLatin1String("--no-secmem-warning")); args.push_back(QLatin1String("--no-tty")); args.push_back(QLatin1String("--batch")); if (!password.isEmpty()) { args.push_back(QLatin1String("--passphrase")); args.push_back(password); } - args << configArguments(); + args << configArguments(dir); args.push_back(QLatin1String("--debug-level")); args.push_back(QLatin1String("none")); args.push_back(QLatin1String("--status-fd=1")); args.push_back(QLatin1String("--import")); args.push_back(QLatin1String("--allow-secret-key-import")); args.push_back(QLatin1String("--command-fd=0")); args.push_back(file); QProcess process; process.execute(command, args); qDebug() << "Added Gpg key: " << file; } void addPasswordArguments(KGpgTransaction *transaction, const QString &passphrase) { QStringList args; args.push_back(QLatin1String("--batch")); args.push_back(QLatin1String("--passphrase")); args.push_back(passphrase); args.push_back(QLatin1String("--pinentry-mode")); args.push_back(QLatin1String("loopback")); transaction->insertArguments(1, args); } -bool hasPhoto(QString id) +bool hasPhoto(QTemporaryDir &dir, const QString &id) { QStringList args{ QLatin1String("--list-keys"), id }; QString command = QLatin1String("gpg"); QProcess process; - process.start(command, configArguments() << args); + process.start(command, configArguments(dir) << args); process.waitForFinished(); QString output = QLatin1String(process.readAllStandardOutput()); qDebug()<< output; return output.contains(QLatin1String("image")); } diff --git a/tests/common.h b/tests/common.h index 537f60d4..602e7faf 100644 --- a/tests/common.h +++ b/tests/common.h @@ -1,13 +1,15 @@ #ifndef COMMON_TEST_H #define COMMON_TEST_H #include class KGpgTransaction; +class QTemporaryDir; -bool resetGpgConf(); +bool resetGpgConf(QTemporaryDir &basedir); QString readFile(const QString& filename); -void addGpgKey(const QString& file, const QString& password = QString()); +void addGpgKey(QTemporaryDir &dir, const QString &file, const QString &password = QString()); void addPasswordArguments(KGpgTransaction *transaction, const QString &passphrase); -bool hasPhoto(QString id); +bool hasPhoto(QTemporaryDir &dir, const QString &id); + #endif diff --git a/tests/kgpgaddphoto.cpp b/tests/kgpgaddphoto.cpp index 99b739b5..fed6d37f 100644 --- a/tests/kgpgaddphoto.cpp +++ b/tests/kgpgaddphoto.cpp @@ -1,29 +1,29 @@ #include "kgpgaddphoto.h" #include "../transactions/kgpgaddphoto.h" #include "../kgpginterface.h" #include "common.h" #include #include void KGpgAddPhotoTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgAddPhotoTest::testAddPhoto() { const QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); QString keyID = QLatin1String("BA7695F3C550DF14"); QString imagepath = QLatin1String("keys/image_small.jpg"); KGpgAddPhoto *transaction = new KGpgAddPhoto(this, keyID, imagepath); addPasswordArguments(transaction, passphrase); QSignalSpy spy(transaction, &KGpgAddPhoto::done); transaction->start(); QVERIFY(spy.wait()); - QVERIFY(hasPhoto(keyID)); + QVERIFY(hasPhoto(m_tempdir, keyID)); } QTEST_MAIN(KGpgAddPhotoTest) diff --git a/tests/kgpgaddphoto.h b/tests/kgpgaddphoto.h index 7e521db4..937756e4 100644 --- a/tests/kgpgaddphoto.h +++ b/tests/kgpgaddphoto.h @@ -1,13 +1,17 @@ #ifndef KGPGADDPHOTO_TEST_H #define KGPGADDPHOTO_TEST_H #include +#include class KGpgAddPhotoTest : public QObject { Q_OBJECT private slots: void init(); void testAddPhoto(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgadduid.cpp b/tests/kgpgadduid.cpp index de52bd68..04632277 100644 --- a/tests/kgpgadduid.cpp +++ b/tests/kgpgadduid.cpp @@ -1,79 +1,81 @@ #include "kgpgadduid.h" #include "../transactions/kgpgadduid.h" #include "../kgpginterface.h" #include "../kgpgsettings.h" #include "common.h" #include #include #include #include void KGpgAddUidTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); } void KGpgAddUidTest::testAddUid() { QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); + QString keyId = QLatin1String("BA7695F3C550DF14"); QFETCH(QString, uid_name); QFETCH(QString, uid_email); QFETCH(QString, uid_comment); KGpgAddUid *transaction = new KGpgAddUid(this, keyId, uid_name, uid_email, uid_comment); addPasswordArguments(transaction, passphrase); QObject::connect(transaction, &KGpgAddUid::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(transaction, &KGpgAddUid::done); transaction->start(); QVERIFY(spy.wait()); KgpgCore::KgpgKeyList keyList = KgpgInterface::readPublicKeys(); QCOMPARE(keyList.size(), 1); KgpgCore::KgpgKey key = keyList.first(); QCOMPARE(key.name(), uid_name); QCOMPARE(key.email(), uid_email); QCOMPARE(key.comment(), uid_comment); QCOMPARE(key.fullId(), keyId); } void KGpgAddUidTest::testAddUid_data() { QTest::addColumn("uid_name"); QTest::addColumn("uid_email"); QTest::addColumn("uid_comment"); QTest::newRow("all fields") << QString(QLatin1String("Test name")) << QString(QLatin1String("test@kde.org")) << QString(QLatin1String("Test comment")); QTest::newRow("only name") << QString(QLatin1String("Test name 2")) << QString() << QString(); QTest::newRow("name and comment") << QString(QLatin1String("Test name 2")) << QString() << QString(QLatin1String("another comment")); } void KGpgAddUidTest::testAddUidInvalid() { QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); + QString keyId = QLatin1String("BA7695F3C550DF14"); QString name = QLatin1String("Test name"); QString email = QLatin1String("a b"); // intentionally invalid QString comment = QLatin1String("Test comment"); KGpgAddUid *transaction = new KGpgAddUid(this, keyId, name, email, comment); QObject::connect(transaction, &KGpgAddUid::done, [](int result) { QCOMPARE(result, static_cast(KGpgAddUid::TS_INVALID_EMAIL)); }); QSignalSpy spy(transaction, &KGpgAddUid::done); transaction->start(); // for whatever reason spy.wait() does not work here int i = 0; while (spy.isEmpty() && i++ < 50) QTest::qWait(250); QCOMPARE(spy.count(), 1); } QTEST_MAIN(KGpgAddUidTest) diff --git a/tests/kgpgadduid.h b/tests/kgpgadduid.h index 335f40a8..f41a1957 100644 --- a/tests/kgpgadduid.h +++ b/tests/kgpgadduid.h @@ -1,16 +1,20 @@ #ifndef KGPGADDUID_TEST_H #define KGPGADDUID_TEST_H #include +#include class KGpgAddUidTest : public QObject { Q_OBJECT private slots: void init(); void testAddUid(); void testAddUid_data(); void testAddUidInvalid(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgchangedisable.cpp b/tests/kgpgchangedisable.cpp index cebabb46..c1fd1143 100644 --- a/tests/kgpgchangedisable.cpp +++ b/tests/kgpgchangedisable.cpp @@ -1,48 +1,48 @@ #include "kgpgchangedisable.h" #include "../transactions/kgpgchangedisable.h" #include "../kgpginterface.h" #include "common.h" #include #include void KGpgChangeDisableTest::init() { - QVERIFY(resetGpgConf()); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + QVERIFY(resetGpgConf(m_tempdir)); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); } void KGpgChangeDisableTest::testDisableKey() { const QString keyID = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); KGpgChangeDisable *transaction = new KGpgChangeDisable(this, keyID, true); QSignalSpy spy(transaction, &KGpgChangeDisable::done); QObject::connect(transaction, &KGpgChangeDisable::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); KgpgCore::KgpgKeyList keyList = KgpgInterface::readPublicKeys(QStringList(keyID)); QVERIFY(!keyList.isEmpty()); QVERIFY(!keyList.first().valid()); } void KGpgChangeDisableTest::testEnableKey() { const QString keyID = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); KGpgChangeDisable *transaction = new KGpgChangeDisable(this, keyID, true); QSignalSpy spy(transaction, &KGpgChangeDisable::done); transaction->start(); QVERIFY(spy.wait()); QObject::connect(transaction, &KGpgChangeDisable::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->setDisable(false); transaction->start(); QVERIFY(spy.wait()); KgpgCore::KgpgKeyList keyList = KgpgInterface::readPublicKeys(QStringList(keyID)); QVERIFY(!keyList.isEmpty()); QVERIFY(keyList.first().valid()); } QTEST_MAIN(KGpgChangeDisableTest) diff --git a/tests/kgpgchangedisable.h b/tests/kgpgchangedisable.h index 4857c4e2..58534ba7 100644 --- a/tests/kgpgchangedisable.h +++ b/tests/kgpgchangedisable.h @@ -1,14 +1,18 @@ #ifndef KGPGCHANGEDISABLE_TEST_H #define KGPGCHANGEDISABLE_TEST_H #include +#include class KGpgChangeDisableTest : public QObject { Q_OBJECT private slots: void init(); void testDisableKey(); void testEnableKey(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgchangetrust.cpp b/tests/kgpgchangetrust.cpp index a7afd9b0..eee347f7 100644 --- a/tests/kgpgchangetrust.cpp +++ b/tests/kgpgchangetrust.cpp @@ -1,40 +1,40 @@ #include "kgpgchangetrust.h" #include "../transactions/kgpgchangetrust.h" #include "../kgpginterface.h" #include "common.h" #include #include #include void KGpgChangeTrustTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgChangeTrustTest::testChangeTrust() { QFETCH(gpgme_validity_t, target_trust); QLatin1String keyID("BA7695F3C550DF14"); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); KGpgChangeTrust *transaction = new KGpgChangeTrust(this, keyID, target_trust); QSignalSpy spy(transaction, &KGpgChangeTrust::done); QObject::connect(transaction, &KGpgChangeTrust::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); KgpgCore::KgpgKeyList keyList = KgpgInterface::readPublicKeys(QStringList(keyID)); QVERIFY(!keyList.isEmpty()); QCOMPARE(keyList.first().ownerTrust(), target_trust); } void KGpgChangeTrustTest::testChangeTrust_data() { QTest::addColumn("target_trust"); QTest::newRow("ultimate") << GPGME_VALIDITY_ULTIMATE; QTest::newRow("full") << GPGME_VALIDITY_FULL; QTest::newRow("marginal") << GPGME_VALIDITY_MARGINAL; QTest::newRow("never") << GPGME_VALIDITY_NEVER; } QTEST_MAIN(KGpgChangeTrustTest) diff --git a/tests/kgpgchangetrust.h b/tests/kgpgchangetrust.h index f9a93efe..d9df55fd 100644 --- a/tests/kgpgchangetrust.h +++ b/tests/kgpgchangetrust.h @@ -1,18 +1,22 @@ #ifndef KGPGCHANGETRUST_TEST_H #define KGPGCHANGETRUST_TEST_H #include #include #include +#include class KGpgChangeTrustTest : public QObject { Q_OBJECT private slots: void init(); void testChangeTrust(); void testChangeTrust_data(); + +private: + QTemporaryDir m_tempdir; }; Q_DECLARE_METATYPE(gpgme_validity_t) #endif diff --git a/tests/kgpgdecrypt.cpp b/tests/kgpgdecrypt.cpp index 2814a1e7..d04085e3 100644 --- a/tests/kgpgdecrypt.cpp +++ b/tests/kgpgdecrypt.cpp @@ -1,37 +1,37 @@ #include "kgpgdecrypt.h" #include "../transactions/kgpgdecrypt.h" #include "common.h" #include #include void KGpgDecryptTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgDecryptTest::testDecrypt(){ QFETCH(QString, encryptedFile); QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); QString text = readFile(QLatin1String("keys/sample_text")); QString encryptedText = readFile(encryptedFile); KGpgDecrypt *transaction = new KGpgDecrypt(this, encryptedText); QObject::connect(transaction, &KGpgDecrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(transaction, &KGpgDecrypt::done); addPasswordArguments(transaction, passphrase); transaction->start(); QVERIFY(spy.wait()); QVERIFY(text.compare(transaction->decryptedText().join(QLatin1Char('\n')))); } void KGpgDecryptTest::testDecrypt_data(){ QTest::addColumn("encryptedFile"); QTest::newRow("AsciiArmored") << QString(QLatin1String("keys/encrypt_text.txt")); QTest::newRow("HideKeyId") << QString(QLatin1String("keys/encrypt_text_hide_key_id.txt")); QTest::newRow("Symmetrical") << QString(QLatin1String("keys/encrypted_symmetrical.txt")); } QTEST_MAIN(KGpgDecryptTest) diff --git a/tests/kgpgdecrypt.h b/tests/kgpgdecrypt.h index a5788ae9..f9f89da2 100644 --- a/tests/kgpgdecrypt.h +++ b/tests/kgpgdecrypt.h @@ -1,14 +1,18 @@ #ifndef KGPGDECRYPT_TEST_H #define KGPGDECRYPT_TEST_H #include +#include class KGpgDecryptTest : public QObject { Q_OBJECT private slots: void init(); void testDecrypt(); void testDecrypt_data(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgdelkey.cpp b/tests/kgpgdelkey.cpp index d48c4823..c5a1eb07 100644 --- a/tests/kgpgdelkey.cpp +++ b/tests/kgpgdelkey.cpp @@ -1,46 +1,46 @@ #include "kgpgdelkey.h" #include "../core/kgpgkey.h" #include "../core/KGpgRootNode.h" #include "../kgpginterface.h" #include "../model/kgpgitemmodel.h" #include "../transactions/kgpgdelkey.h" #include "common.h" #include #include void KGpgDelKeyTest::init() { - resetGpgConf(); + resetGpgConf(m_tempdir); } void KGpgDelKeyTest::testDeleteKey() { QFETCH(QString, passphrase); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); QString keyId = QLatin1String("BA7695F3C550DF14"); KGpgItemModel *model = new KGpgItemModel(this); KGpgRootNode *rootNode = new KGpgRootNode(model); rootNode->addKeys(QStringList(keyId)); KGpgKeyNode *keyNode = rootNode->findKey(keyId); QVERIFY(keyNode != nullptr); KGpgDelKey *transaction = new KGpgDelKey(this, keyNode); QObject::connect(transaction, &KGpgDelKey::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(transaction, &KGpgDelKey::done); transaction->addArgument("--yes"); transaction->start(); QVERIFY(spy.wait()); QCOMPARE(KgpgInterface::readSecretKeys().size(), 0); QCOMPARE(KgpgInterface::readPublicKeys().size(), 0); } void KGpgDelKeyTest::testDeleteKey_data() { QTest::addColumn("passphrase"); QTest::newRow("public") << QString(); QTest::newRow("secret") << readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); } QTEST_MAIN(KGpgDelKeyTest) diff --git a/tests/kgpgdelkey.h b/tests/kgpgdelkey.h index 9438cc57..4aebd15a 100644 --- a/tests/kgpgdelkey.h +++ b/tests/kgpgdelkey.h @@ -1,14 +1,18 @@ #ifndef KGPGDELKEY_TEST_H #define KGPGDELKEY_TEST_H #include +#include class KGpgDelKeyTest : public QObject { Q_OBJECT private slots: void init(); void testDeleteKey(); void testDeleteKey_data(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgencrypt.cpp b/tests/kgpgencrypt.cpp index bc014d22..29996c77 100644 --- a/tests/kgpgencrypt.cpp +++ b/tests/kgpgencrypt.cpp @@ -1,143 +1,143 @@ #include "kgpgencrypt.h" #include "common.h" #include "../transactions/kgpgencrypt.h" #include "../transactions/kgpgdecrypt.h" #include #include #include #include #include void KGpgEncryptTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgEncryptTest::testAsciiArmoredEncryption() { //Add keys to keyring - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); //Encrypt text QString text = readFile(QLatin1String("keys/sample_text")); QStringList userIds(QLatin1String("Test KGpg")); KGpgEncrypt *encryption = new KGpgEncrypt( this, userIds, text, KGpgEncrypt::AsciiArmored | KGpgEncrypt::AllowUntrustedEncryption); QObject::connect(encryption, &KGpgEncrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(encryption, &KGpgEncrypt::done); encryption->start(); QVERIFY(spy.wait()); QString encryptedText = encryption->encryptedText().join("\n"); //Check if the encrypted text has a header and footer QVERIFY(encryptedText.startsWith(QLatin1String("-----BEGIN PGP MESSAGE-----"))); QVERIFY(encryptedText.endsWith(QLatin1String("-----END PGP MESSAGE-----"))); //Test if encrypted text contains "KGpg" QVERIFY(!encryptedText.contains(QLatin1String("KGpg"))); // check that the helper function also thinks it's encrypted QVERIFY(KGpgDecrypt::isEncryptedText(encryptedText, nullptr, nullptr)); int startPos = -1; QVERIFY(KGpgDecrypt::isEncryptedText(encryptedText, &startPos, nullptr)); QCOMPARE(startPos, 0); //Decrypt encrypted text KGpgDecrypt *decryption = new KGpgDecrypt(this, encryptedText); QObject::connect(decryption, &KGpgDecrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy2(decryption, &KGpgDecrypt::done); addPasswordArguments(decryption, passphrase); decryption->start(); QVERIFY(spy2.wait()); //Check if decrypted text is equal to original text QVERIFY(text.compare(decryption->decryptedText().join(QLatin1Char('\n')))); } void KGpgEncryptTest::testHideKeyIdEncryption() { //Add keys to keyring - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); //Encrypt text QString text = readFile(QLatin1String("keys/sample_text")); QStringList userIds(QLatin1String("Test KGpg")); KGpgEncrypt *encryption = new KGpgEncrypt(this, userIds, text, KGpgEncrypt::AsciiArmored | KGpgEncrypt::HideKeyId | KGpgEncrypt::AllowUntrustedEncryption); QObject::connect(encryption, &KGpgEncrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(encryption, &KGpgEncrypt::done); encryption->start(); QVERIFY(spy.wait()); QString encryptedText = encryption->encryptedText().join("\n"); //Check if the encrypted text has a header and footer QVERIFY(encryptedText.startsWith(QLatin1String("-----BEGIN PGP MESSAGE-----"))); QVERIFY(encryptedText.endsWith(QLatin1String("-----END PGP MESSAGE-----"))); //Test if encrypted text contains "KGpg" QVERIFY(!encryptedText.contains(QLatin1String("KGpg"))); //Check if encrypted text contains key Id QString keyId = QLatin1String("BA7695F3C550DF14"); QString log = encryption->getMessages().join(QLatin1Char('\n')); QVERIFY(!log.contains(keyId)); //Decrypt encrypted text KGpgDecrypt *decryption = new KGpgDecrypt(this, encryptedText); QObject::connect(decryption, &KGpgDecrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy2(decryption, &KGpgDecrypt::done); addPasswordArguments(decryption, passphrase); decryption->start(); QVERIFY(spy2.wait()); //Check if decrypted text is equal to original text QVERIFY(text.compare(decryption->decryptedText().join(QLatin1Char('\n')))); } void KGpgEncryptTest::testSymmetricEncryption() { QString passphrase = QLatin1String("symmetric key"); QString text = readFile(QLatin1String("keys/sample_text")); QStringList userIds; //Encrypt text KGpgEncrypt *encryption = new KGpgEncrypt( this, userIds, text, KGpgEncrypt::AsciiArmored | KGpgEncrypt::AllowUntrustedEncryption); QObject::connect(encryption, &KGpgEncrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy(encryption, &KGpgEncrypt::done); addPasswordArguments(encryption, passphrase); encryption->start(); QVERIFY(spy.wait()); QString encryptedText = encryption->encryptedText().join("\n"); //Check if the encrypted text has a header and footer QVERIFY(encryptedText.startsWith(QLatin1String("-----BEGIN PGP MESSAGE-----"))); QVERIFY(encryptedText.endsWith(QLatin1String("-----END PGP MESSAGE-----"))); //Test if encrypted text contains "KGpg" QVERIFY(!encryptedText.contains(QLatin1String("KGpg"))); //Decrypt encrypted text KGpgDecrypt *decryption = new KGpgDecrypt(this, encryptedText); QObject::connect(decryption, &KGpgDecrypt::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); QSignalSpy spy2(decryption, &KGpgDecrypt::done); addPasswordArguments(decryption, passphrase); decryption->start(); QVERIFY(spy2.wait()); //Check if decrypted text is equal to original text QVERIFY(text.compare(decryption->decryptedText().join(QLatin1Char('\n')))); } QTEST_MAIN(KGpgEncryptTest) diff --git a/tests/kgpgencrypt.h b/tests/kgpgencrypt.h index 52db819e..a9e1279d 100644 --- a/tests/kgpgencrypt.h +++ b/tests/kgpgencrypt.h @@ -1,15 +1,19 @@ #ifndef KGPGENCRYPT_TEST_H #define KGPGENCRYPT_TEST_H #include +#include class KGpgEncryptTest : public QObject { Q_OBJECT private slots: void init(); void testAsciiArmoredEncryption(); void testHideKeyIdEncryption(); void testSymmetricEncryption(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgexport.cpp b/tests/kgpgexport.cpp index 9fe89bcb..64ecf680 100644 --- a/tests/kgpgexport.cpp +++ b/tests/kgpgexport.cpp @@ -1,82 +1,82 @@ #include "kgpgexport.h" #include "../transactions/kgpgexport.h" #include "../kgpginterface.h" #include "common.h" #include #include #include void KGpgExportTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgExportTest::testExportPublicKeyToFile() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QTemporaryFile file("key_pub.asc"); QVERIFY(file.open()); QString filename = file.fileName(); QStringList ids(QLatin1String("BA7695F3C550DF14")); // Output in Ascii mode QStringList options(QLatin1String("--armor")); KGpgExport *transaction = new KGpgExport(this, ids, filename, options, false); QSignalSpy spy(transaction, &KGpgExport::done); QObject::connect(transaction, &KGpgExport::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); QString exportedKey = readFile(filename); QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QVERIFY(key.compare(exportedKey) == 0); } void KGpgExportTest::testExportSecretKeyToFile() { QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")); - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase); QTemporaryFile file("key.asc"); QVERIFY(file.open()); QString filename = file.fileName(); QStringList ids(QLatin1String("BA7695F3C550DF14")); // Output in Ascii mode QStringList options(QLatin1String("--armor")); KGpgExport *transaction = new KGpgExport(this, ids, filename, options, true); addPasswordArguments(transaction, passphrase); QSignalSpy spy(transaction, &KGpgExport::done); QObject::connect(transaction, &KGpgExport::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); //reset gpg home dir - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); //Import exported key - addGpgKey(filename, passphrase); + addGpgKey(m_tempdir, filename, passphrase); KgpgCore::KgpgKeyList keys = KgpgInterface::readSecretKeys(); QString keyID = QLatin1String("BA7695F3C550DF14"); QCOMPARE(keys.size(), 1); QVERIFY(keys.first().fullId().compare(keyID) == 0); } void KGpgExportTest::testExportPublicKeyToStdOutput() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QStringList ids(QLatin1String("BA7695F3C550DF14")); // Output in Ascii mode QStringList options(QLatin1String("--armor")); KGpgExport *transaction = new KGpgExport(this, ids, options, false); QSignalSpy spy(transaction, &KGpgExport::done); QObject::connect(transaction, &KGpgExport::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); QString exportedKey = QLatin1String(transaction->getOutputData()); QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QVERIFY(key.compare(exportedKey) == 0); } QTEST_MAIN(KGpgExportTest) diff --git a/tests/kgpgexport.h b/tests/kgpgexport.h index 1fd6e7d5..76f78707 100644 --- a/tests/kgpgexport.h +++ b/tests/kgpgexport.h @@ -1,15 +1,19 @@ #ifndef KGPGEXPORT_TEST_H #define KGPGEXPORT_TEST_H #include +#include class KGpgExportTest : public QObject { Q_OBJECT private slots: void init(); void testExportPublicKeyToFile(); void testExportSecretKeyToFile(); void testExportPublicKeyToStdOutput(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgimport.cpp b/tests/kgpgimport.cpp index 067018b3..15a190cb 100644 --- a/tests/kgpgimport.cpp +++ b/tests/kgpgimport.cpp @@ -1,138 +1,138 @@ #include "kgpgimport.h" #include "../transactions/kgpgimport.h" #include "common.h" #include #include #include #include #include #include #include void KGpgImportTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgImportTest::testImportTextKey() { QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QVERIFY(KGpgImport::isKey(key)); KGpgImport *transaction = new KGpgImport(this, key); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction, key](int result) { QCOMPARE(transaction->getImportedKeys().size(), 1); QString keyID = QLatin1String("BA7695F3C550DF14"); QVERIFY(transaction->getImportedKeys().first().startsWith(keyID)); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testImportKeyFromFile() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"))); KGpgImport *transaction = new KGpgImport(this, list); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction](int result) { QCOMPARE(transaction->getImportedKeys().size(), 1); QString keyID = QLatin1String("BA7695F3C550DF14"); QVERIFY(transaction->getImportedKeys().first().startsWith(keyID)); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testImportSameKeyTwice() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"))); KGpgImport *transaction = new KGpgImport(this, list); QSignalSpy spy(transaction, &KGpgImport::done); transaction->start(); QVERIFY(spy.wait()); QObject::connect(transaction, &KGpgImport::done, [transaction](int result) { QCOMPARE(transaction->getImportedKeys().size(), 1); QString keyID = QLatin1String("BA7695F3C550DF14"); QString duplicateMsg = QLatin1String("IMPORT_OK 0 FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); qDebug() << "MESSAGES: " << transaction->getMessages(); QVERIFY(transaction->getImportedKeys().first().startsWith(keyID)); QVERIFY(transaction->getMessages().join(QLatin1Char(' ')).contains(duplicateMsg)); QEXPECT_FAIL("", "Test is broken. Possible bug!", Continue); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testImportIdsAll() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"))); KGpgImport *transaction = new KGpgImport(this, list); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction](int result) { QCOMPARE(transaction->getImportedIds(-1).size(), 1); QString fingerprint = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); QVERIFY(transaction->getImportedIds(-1).first().compare(fingerprint) == 0); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testImportIdsUnchanged() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"))); KGpgImport *transaction = new KGpgImport(this, list); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction](int result) { QCOMPARE(transaction->getImportedIds(0).size(), 1); QString fingerprint = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); QVERIFY(transaction->getImportedIds(0).first().compare(fingerprint) == 0); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testLogMessage() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"))); KGpgImport *transaction = new KGpgImport(this, list); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction](int result) { QString msg = QLatin1String("IMPORT_OK 1 FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14"); QVERIFY(transaction->getMessages().join(QLatin1Char(' ')).contains(msg)); QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgImportTest::testImportSecretKey() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"))); KGpgImport *transaction = new KGpgImport(this, list); addPasswordArguments(transaction, readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass"))); QSignalSpy spy(transaction, &KGpgImport::done); QObject::connect(transaction, &KGpgImport::done, [transaction]() { QVERIFY(transaction->getImportedKeys().size() == 1); QString keyID = QLatin1String("BA7695F3C550DF14"); QVERIFY(transaction->getImportedKeys().first().startsWith(keyID)); }); transaction->start(); QVERIFY(spy.wait()); } QTEST_MAIN(KGpgImportTest) diff --git a/tests/kgpgimport.h b/tests/kgpgimport.h index 32ca89a7..657e693f 100644 --- a/tests/kgpgimport.h +++ b/tests/kgpgimport.h @@ -1,20 +1,24 @@ #ifndef KGPGIMPORT_TEST_H #define KGPGIMPORT_TEST_H #include +#include class KGpgImportTest: public QObject { Q_OBJECT private slots: void init(); void testImportTextKey(); void testImportIdsAll(); void testImportIdsUnchanged(); void testImportKeyFromFile(); void testImportSameKeyTwice(); void testLogMessage(); void testImportSecretKey(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpginterface.cpp b/tests/kgpginterface.cpp index 6e5ac844..43bc52fc 100644 --- a/tests/kgpginterface.cpp +++ b/tests/kgpginterface.cpp @@ -1,41 +1,41 @@ #include "kgpginterface.h" #include "../kgpginterface.h" #include "common.h" #include #include void KGpgInterfaceTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgInterfaceTest::testReadPublicKeys() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")); KgpgCore::KgpgKeyList keys = KgpgInterface::readPublicKeys(); QString fingerprint = QLatin1String("FBAF 08DD 7D9D 0921 C15D DA9F BA76 95F3 C550 DF14"); QCOMPARE(keys.size(), 1); KgpgCore::KgpgKey key = keys.first(); QVERIFY(fingerprint.compare(key.fingerprint())); } void KGpgInterfaceTest::testReadSecretKeys() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass"))); KgpgCore::KgpgKeyList keys = KgpgInterface::readSecretKeys(); QString keyID = QLatin1String("BA7695F3C550DF14"); QCOMPARE(keys.size(), 1); QVERIFY(keys.first().fullId().compare(keyID) == 0); } void KGpgInterfaceTest::testReadEmptyKeyring() { KgpgCore::KgpgKeyList keys = KgpgInterface::readSecretKeys(); KgpgCore::KgpgKeyList pub_keys = KgpgInterface::readPublicKeys(); QCOMPARE(keys.size(), 0); QCOMPARE(pub_keys.size(), 0); } QTEST_MAIN(KGpgInterfaceTest) diff --git a/tests/kgpginterface.h b/tests/kgpginterface.h index d55554a9..5503d968 100644 --- a/tests/kgpginterface.h +++ b/tests/kgpginterface.h @@ -1,16 +1,20 @@ #ifndef KGPG_INTERFACE_TEST_H #define KGPG_INTERFACE_TEST_H #include +#include class KGpgInterfaceTest: public QObject { Q_OBJECT private slots: void init(); void testReadPublicKeys(); void testReadSecretKeys(); void testReadEmptyKeyring(); + +private: + QTemporaryDir m_tempdir; }; #endif diff --git a/tests/kgpgverify.cpp b/tests/kgpgverify.cpp index 37c86dca..731453e1 100644 --- a/tests/kgpgverify.cpp +++ b/tests/kgpgverify.cpp @@ -1,80 +1,80 @@ #include "kgpgverify.h" #include "../transactions/kgpgverify.h" #include "common.h" #include #include #include #include #include void KGpgVerifyTest::init() { - QVERIFY(resetGpgConf()); + QVERIFY(resetGpgConf(m_tempdir)); } void KGpgVerifyTest::testVerifySignedText() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); QString text = readFile(QLatin1String("keys/signed_text")); KGpgVerify *transaction = new KGpgVerify(this, text); QSignalSpy spy(transaction, &KGpgVerify::done); QObject::connect(transaction, &KGpgVerify::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgVerifyTest::testVerifySignedFile() { - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/signed_text"))); KGpgVerify *transaction = new KGpgVerify(this, list); QSignalSpy spy(transaction, &KGpgVerify::done); QObject::connect(transaction, &KGpgVerify::done, [](int result) { QCOMPARE(result, static_cast(KGpgTransaction::TS_OK)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgVerifyTest::testVerifyReturnMissingKey() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/signed_text"))); KGpgVerify *transaction = new KGpgVerify(this, list); QSignalSpy spy(transaction, &KGpgVerify::done); QObject::connect(transaction, &KGpgVerify::done, [](int result) { QCOMPARE(result, static_cast(KGpgVerify::TS_MISSING_KEY)); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgVerifyTest::testVerifyMissingId() { QList list; list.append(QUrl::fromLocalFile(QLatin1String("keys/signed_text"))); KGpgVerify *transaction = new KGpgVerify(this, list); QSignalSpy spy(transaction, &KGpgVerify::done); QObject::connect(transaction, &KGpgVerify::done, [transaction]() { QString keyID = QLatin1String("7882C615210F1022"); QVERIFY(transaction->missingId().compare(keyID) == 0); }); transaction->start(); QVERIFY(spy.wait()); } void KGpgVerifyTest::testVerifyReturnBadSignature() { QList list; - addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); + addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); list.append(QUrl::fromLocalFile(QLatin1String("keys/signed_bad_sig"))); KGpgVerify *transaction = new KGpgVerify(this, list); QSignalSpy spy(transaction, &KGpgVerify::done); QObject::connect(transaction, &KGpgVerify::done, [](int result) { QCOMPARE(result, static_cast(KGpgVerify::TS_BAD_SIGNATURE)); }); transaction->start(); QVERIFY(spy.wait()); } QTEST_MAIN(KGpgVerifyTest) diff --git a/tests/kgpgverify.h b/tests/kgpgverify.h index 32dc0e5d..a772dc79 100644 --- a/tests/kgpgverify.h +++ b/tests/kgpgverify.h @@ -1,18 +1,22 @@ #ifndef KGPGVERIFYTEST_H #define KGPGVERIFYTEST_H #include +#include class KGpgVerifyTest: public QObject { Q_OBJECT private slots: void init(); void testVerifySignedText(); void testVerifySignedFile(); void testVerifyReturnMissingKey(); void testVerifyMissingId(); void testVerifyReturnBadSignature(); + +private: + QTemporaryDir m_tempdir; }; #endif // KGPGVERIFYTEST_H