diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 15458cf5..363abc36 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,42 +1,43 @@ 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) 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/kgpgverify.cpp b/tests/kgpgverify.cpp new file mode 100644 index 00000000..0e885991 --- /dev/null +++ b/tests/kgpgverify.cpp @@ -0,0 +1,78 @@ +#include "kgpgverify.h" +#include "../transactions/kgpgverify.h" +#include "common.h" + +#include +#include +#include + +void KGpgVerifyTest::init() +{ + QVERIFY(resetGpgConf()); +} + +void KGpgVerifyTest::testVerifySignedText() +{ + addGpgKey(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")); + QString text = readFile(QLatin1String("keys/signed_text")); + KGpgVerify *transaction = new KGpgVerify(this, text); + QSignalSpy spy(transaction, &KGpgVerify::done); + transaction->start(); + QObject::connect(transaction, &KGpgVerify::done, + [](int result) { QCOMPARE(result, KGpgTransaction::TS_OK); }); + QVERIFY(spy.wait()); +} + +void KGpgVerifyTest::testVerifySignedFile() +{ + addGpgKey(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); + transaction->start(); + QObject::connect(transaction, &KGpgVerify::done, + [](int result) { QCOMPARE(result, KGpgTransaction::TS_OK); }); + 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); + transaction->start(); + QObject::connect(transaction, &KGpgVerify::done, + [](int result) { QCOMPARE(result, KGpgVerify::TS_MISSING_KEY); }); + 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); + transaction->start(); + QObject::connect(transaction, &KGpgVerify::done, [transaction]() { + QString keyID = QLatin1String("7882C615210F1022"); + QVERIFY(transaction->missingId().compare(keyID) == 0); + }); + QVERIFY(spy.wait()); +} + +void KGpgVerifyTest::testVerifyReturnBadSignature() +{ + QList list; + addGpgKey(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); + transaction->start(); + QObject::connect(transaction, &KGpgVerify::done, + [](int result) { QCOMPARE(result, KGpgVerify::TS_BAD_SIGNATURE); }); + QVERIFY(spy.wait()); +} + +QTEST_MAIN(KGpgVerifyTest) diff --git a/tests/kgpgverify.h b/tests/kgpgverify.h new file mode 100644 index 00000000..95abdf62 --- /dev/null +++ b/tests/kgpgverify.h @@ -0,0 +1,13 @@ +#include + +class KGpgVerifyTest: public QObject +{ + Q_OBJECT +private slots: + void init(); + void testVerifySignedText(); + void testVerifySignedFile(); + void testVerifyReturnMissingKey(); + void testVerifyMissingId(); + void testVerifyReturnBadSignature(); +};