diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f10cf4e7..b82d1421 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,47 +1,48 @@ 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) 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/kgpgdecrypt.cpp b/tests/kgpgdecrypt.cpp new file mode 100644 index 00000000..89e67571 --- /dev/null +++ b/tests/kgpgdecrypt.cpp @@ -0,0 +1,37 @@ +#include "kgpgdecrypt.h" +#include "../transactions/kgpgdecrypt.h" +#include "common.h" + +#include +#include + +void KGpgDecryptTest::init() +{ + QVERIFY(resetGpgConf()); +} + +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); + 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, 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 new file mode 100644 index 00000000..a5788ae9 --- /dev/null +++ b/tests/kgpgdecrypt.h @@ -0,0 +1,14 @@ +#ifndef KGPGDECRYPT_TEST_H +#define KGPGDECRYPT_TEST_H + +#include + +class KGpgDecryptTest : public QObject { + Q_OBJECT +private slots: + void init(); + void testDecrypt(); + void testDecrypt_data(); +}; + +#endif