diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b82d1421..0c9c6078 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,48 +1,49 @@ 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) 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 ) 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/kgpgdelkey.cpp b/tests/kgpgdelkey.cpp new file mode 100644 index 00000000..1717c097 --- /dev/null +++ b/tests/kgpgdelkey.cpp @@ -0,0 +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(); +} + +void KGpgDelKeyTest::testDeleteKey() +{ + QFETCH(QString, passphrase); + addGpgKey(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, 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 new file mode 100644 index 00000000..9438cc57 --- /dev/null +++ b/tests/kgpgdelkey.h @@ -0,0 +1,14 @@ +#ifndef KGPGDELKEY_TEST_H +#define KGPGDELKEY_TEST_H + +#include + +class KGpgDelKeyTest : public QObject { + Q_OBJECT +private slots: + void init(); + void testDeleteKey(); + void testDeleteKey_data(); +}; + +#endif