diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a225d8c39..8f3b65e8f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,118 +1,78 @@ add_subdirectory(gnupg_home) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) include_directories( ${CMAKE_SOURCE_DIR}/src/ ${CMAKE_BINARY_DIR}/src/ ${Boost_INCLUDE_DIR} ${GPGME_INCLUDES} ) ########### next target ############### -if(PORT_ME_AWAY_FROM_EVENT_LOOPS) - set(test_keylistmodels_SRCS - test_keylistmodels.cpp - ${CMAKE_SOURCE_DIR}/src/models/keylistmodel.cpp - ${CMAKE_SOURCE_DIR}/src/models/keylistsortfilterproxymodel.cpp - ${CMAKE_SOURCE_DIR}/src/utils/formatting.cpp - ) - if(KLEO_MODEL_TEST) - set(test_keylistmodels_SRCS - ${test_keylistmodels_SRCS} - ${CMAKE_SOURCE_DIR}/src/models/modeltest.cpp - ) - endif() - - add_executable(test_keylistmodels TEST ${test_keylistmodels_SRCS}) - - target_link_libraries(test_keylistmodels KF5::Libkleo ) - -########### next target ############### - - set(test_useridlistmodels_SRCS - test_useridlistmodels.cpp - ${CMAKE_SOURCE_DIR}/src/models/useridlistmodel.cpp - ${CMAKE_SOURCE_DIR}/src/utils/formatting.cpp - ) - if(KLEO_MODEL_TEST) - set(test_useridlistmodels_SRCS - ${test_useridlistmodels_SRCS} - ${CMAKE_SOURCE_DIR}/src/models/modeltest.cpp - ) - endif() - - add_executable(test_useridlistmodels TEST ${test_useridlistmodels_SRCS}) - - target_link_libraries(test_useridlistmodels KF5::Libkleo ) - -endif() - -########### next target ############### - set(test_verify_SRCS test_verify.cpp) add_definitions(-DKLEO_TEST_GNUPGHOME="${CMAKE_CURRENT_BINARY_DIR}/gnupg_home") add_definitions(-DKLEO_TEST_DATADIR="${CMAKE_CURRENT_SOURCE_DIR}") add_executable(test_verify ${test_verify_SRCS}) add_test(NAME test_verify COMMAND test_verify) ecm_mark_as_test(test_verify) target_link_libraries(test_verify KF5::Libkleo Qt5::Test QGpgme KF5::CoreAddons KF5::I18n Qt5::Widgets ) ########### next target ############### if(USABLE_ASSUAN_FOUND) # this doesn't yet work on Windows add_definitions(-DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_USER_2) set(test_uiserver_SRCS test_uiserver.cpp ${CMAKE_SOURCE_DIR}/src/utils/wsastarter.cpp ${CMAKE_SOURCE_DIR}/src/utils/hex.cpp) #FIXME: omitting TEST makes test_uiserver print output again on a Win32 console; # find a better fix for this issue if(WIN32) add_executable(test_uiserver ${test_uiserver_SRCS}) else() add_executable(test_uiserver ${test_uiserver_SRCS}) endif() target_link_libraries(test_uiserver KF5::I18n) if(ASSUAN2_FOUND) target_link_libraries(test_uiserver KF5::Libkleo ${ASSUAN2_LIBRARIES} ) else() target_link_libraries(test_uiserver KF5::Libkleo ${ASSUAN_LIBRARIES} ) endif() if(WIN32) target_link_libraries(test_uiserver ${ASSUAN_VANILLA_LIBRARIES} QGpgme ws2_32 ) else() target_link_libraries(test_uiserver ${ASSUAN_PTHREAD_LIBRARIES} QGpgme ) endif() endif() diff --git a/tests/test_keylistmodels.cpp b/tests/test_keylistmodels.cpp deleted file mode 100644 index 0f66297d5..000000000 --- a/tests/test_keylistmodels.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* -*- mode: c++; c-basic-offset:4 -*- - test_keylistmodels.cpp - - This file is part of Kleopatra's test suite. - SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#include - -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include "kleopatra_debug.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -class Relay : public QObject -{ - Q_OBJECT -public: - explicit Relay(QObject *p = nullptr) : QObject(p) {} - -public Q_SLOTS: - void slotNextKeyEvent(GpgME::Context *, const GpgME::Key &key) - { - qDebug("next key"); - mKeys.push_back(key); - // push out keys in chunks of 1..16 keys - if (mKeys.size() > qrand() % 16U) { - emit nextKeys(mKeys); - mKeys.clear(); - } - } - - void slotOperationDoneEvent(GpgME::Context *, const GpgME::Error &error) - { - qDebug("listing done error: %d", error.encodedError()); - } - -Q_SIGNALS: - void nextKeys(const std::vector &keys); - -private: - std::vector mKeys; -}; - -int main(int argc, char *argv[]) -{ - - if (const GpgME::Error initError = GpgME::initializeLibrary(0)) { - qCDebug(KLEOPATRA_LOG) << "Error initializing gpgme:" << QString::fromLocal8Bit(initError.asString()); - return 1; - } - - KAboutData aboutData("test_flatkeylistmodel", 0, i18n("FlatKeyListModel Test"), "0.2"); - QApplication app(argc, argv); - QCommandLineParser parser; - KAboutData::setApplicationData(aboutData); - parser.addVersionOption(); - parser.addHelpOption(); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("flat"), i18n("Perform flat certificate listing"))); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("hierarchical"), i18n("Perform hierarchical certificate listing"))); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("disable-smime"), i18n("Do not list SMIME certificates"))); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("secret"), i18n("List secret keys only"))); - - aboutData.setupCommandLine(&parser); - parser.process(app); - aboutData.processCommandLine(&parser); - - const bool showFlat = parser.isSet(QStringLiteral("flat")) || !parser.isSet(QStringLiteral("hierarchical")); - const bool showHier = parser.isSet(QStringLiteral("hierarchical")) || !parser.isSet(QStringLiteral("flat")); - const bool disablesmime = parser.isSet(QStringLiteral("disable-smime")); - const bool secretOnly = parser.isSet(QStringLiteral("secret")); - - qsrand(QDateTime::currentDateTime().toTime_t()); - - QWidget flatWidget, hierarchicalWidget; - QVBoxLayout flatLay(&flatWidget), hierarchicalLay(&hierarchicalWidget); - QLineEdit flatLE(&flatWidget), hierarchicalLE(&hierarchicalWidget); - QTreeView flat(&flatWidget), hierarchical(&hierarchicalWidget); - - flat.setSortingEnabled(true); - flat.sortByColumn(Kleo::AbstractKeyListModel::Fingerprint, Qt::AscendingOrder); - hierarchical.setSortingEnabled(true); - hierarchical.sortByColumn(Kleo::AbstractKeyListModel::Fingerprint, Qt::AscendingOrder); - - flatLay.addWidget(&flatLE); - flatLay.addWidget(&flat); - - hierarchicalLay.addWidget(&hierarchicalLE); - hierarchicalLay.addWidget(&hierarchical); - - flatWidget.setWindowTitle(QStringLiteral("Flat Key Listing")); - hierarchicalWidget.setWindowTitle(QStringLiteral("Hierarchical Key Listing")); - - Kleo::KeyListSortFilterProxyModel flatProxy, hierarchicalProxy; - - QObject::connect(&flatLE, SIGNAL(textChanged(QString)), &flatProxy, SLOT(setFilterFixedString(QString))); - QObject::connect(&hierarchicalLE, SIGNAL(textChanged(QString)), &hierarchicalProxy, SLOT(setFilterFixedString(QString))); - - Relay relay; - QObject::connect(QGpgME::EventLoopInteractor::instance(), SIGNAL(nextKeyEventSignal(GpgME::Context*,GpgME::Key)), - &relay, SLOT(slotNextKeyEvent(GpgME::Context*,GpgME::Key))); - QObject::connect(QGpgME::EventLoopInteractor::instance(), SIGNAL(operationDoneEventSignal(GpgME::Context*,GpgME::Error)), - &relay, SLOT(slotOperationDoneEvent(GpgME::Context*,GpgME::Error))); - - if (showFlat) - if (Kleo::AbstractKeyListModel *const model = Kleo::AbstractKeyListModel::createFlatKeyListModel(&flat)) { - QObject::connect(&relay, SIGNAL(nextKeys(std::vector)), model, SLOT(addKeys(std::vector))); - model->setToolTipOptions(Kleo::Formatting::AllOptions); - flatProxy.setSourceModel(model); - flat.setModel(&flatProxy); - - flatWidget.show(); - } - - if (showHier) - if (Kleo::AbstractKeyListModel *const model = Kleo::AbstractKeyListModel::createHierarchicalKeyListModel(&hierarchical)) { - QObject::connect(&relay, SIGNAL(nextKeys(std::vector)), model, SLOT(addKeys(std::vector))); - model->setToolTipOptions(Kleo::Formatting::AllOptions); - hierarchicalProxy.setSourceModel(model); - hierarchical.setModel(&hierarchicalProxy); - - hierarchicalWidget.show(); - } - - const char *pattern[] = { nullptr }; - - const std::auto_ptr pgp(GpgME::Context::createForProtocol(GpgME::OpenPGP)); - pgp->setManagedByEventLoopInteractor(true); - pgp->setKeyListMode(GpgME::Local); - - if (const GpgME::Error e = pgp->startKeyListing(pattern, secretOnly)) { - qCDebug(KLEOPATRA_LOG) << "pgp->startKeyListing() ->" << e.asString(); - } - - if (!disablesmime) { - const std::auto_ptr cms(GpgME::Context::createForProtocol(GpgME::CMS)); - cms->setManagedByEventLoopInteractor(true); - cms->setKeyListMode(GpgME::Local); - - if (const GpgME::Error e = cms->startKeyListing(pattern, secretOnly)) { - qCDebug(KLEOPATRA_LOG) << "cms" << e.asString(); - } - - QEventLoop loop; - QTimer::singleShot(2000, &loop, SLOT(quit())); - loop.exec(); - - const std::auto_ptr cms2(GpgME::Context::createForProtocol(GpgME::CMS)); - cms2->setManagedByEventLoopInteractor(true); - cms2->setKeyListMode(GpgME::Local); - - if (const GpgME::Error e = cms2->startKeyListing(pattern, secretOnly)) { - qCDebug(KLEOPATRA_LOG) << "cms2" << e.asString(); - } - } - - return app.exec(); -} - -#include "test_flatkeylistmodel.moc" diff --git a/tests/test_useridlistmodels.cpp b/tests/test_useridlistmodels.cpp deleted file mode 100644 index 4e7a86ded..000000000 --- a/tests/test_useridlistmodels.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* -*- mode: c++; c-basic-offset:4 -*- - test_useridlistmodels.cpp - - This file is part of Kleopatra's test suite. - SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#include - -#include - -#include - -#include - -#ifdef KLEO_MODEL_TEST -# include -#endif - -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class KeyResolveJob : QObject -{ - Q_OBJECT -public: - explicit KeyResolveJob(GpgME::Protocol proto = GpgME::OpenPGP, QObject *p = 0) - : QObject(p), - m_ctx(GpgME::Context::createForProtocol(proto)), - m_done(false), - m_loop(0) - { - Q_ASSERT(m_ctx.get()); - connect(QGpgME::EventLoopInteractor::instance(), SIGNAL(nextKeyEventSignal(GpgME::Context*,GpgME::Key)), - this, SLOT(slotNextKey(GpgME::Context*,GpgME::Key))); - connect(QGpgME::EventLoopInteractor::instance(), SIGNAL(operationDoneEventSignal(GpgME::Context*,GpgME::Error)), - this, SLOT(slotDone(GpgME::Context*,GpgME::Error))); - - m_ctx->setManagedByEventLoopInteractor(true); - } - - GpgME::Error start(const char *pattern, bool secretOnly = false) - { - m_ctx->addKeyListMode(GpgME::Signatures | GpgME::SignatureNotations); - return m_ctx->startKeyListing(pattern, secretOnly); - } - - GpgME::Error waitForDone() - { - if (m_done) { - return m_error; - } - QEventLoop loop; - m_loop = &loop; - loop.exec(); - m_loop = 0; - return m_error; - } - - std::vector keys() const - { - return m_keys; - } - -private Q_SLOTS: - void slotNextKey(GpgME::Context *ctx, const GpgME::Key &key) - { - if (ctx != m_ctx.get()) { - return; - } - m_keys.push_back(key); - } - void slotDone(GpgME::Context *ctx, const GpgME::Error &err) - { - if (ctx != m_ctx.get()) { - return; - } - m_error = err; - m_done = true; - if (m_loop) { - m_loop->quit(); - } - } - -private: - std::auto_ptr m_ctx; - GpgME::Error m_error; - bool m_done; - std::vector m_keys; - QEventLoop *m_loop; -}; - -using namespace GpgME; -using namespace Kleo; - -static void start(const QString &str, Protocol proto) -{ - const QByteArray arg = str.toUtf8(); - - KeyResolveJob job(proto); - - if (const GpgME::Error err = job.start(arg)) { - throw std::runtime_error(std::string("startKeyListing: ") + gpg_strerror(err.encodedError())); - } - - if (const GpgME::Error err = job.waitForDone()) { - throw std::runtime_error(std::string("nextKey: ") + gpg_strerror(err.encodedError())); - } - - const Key key = job.keys().front(); - - if (key.isNull()) { - throw std::runtime_error(std::string("key is null")); - } - - QTreeView *const tv = new QTreeView; - tv->setWindowTitle(QString::fromLatin1("UserIDListModel Test - %1").arg(str)); - - UserIDListModel *const model = new UserIDListModel(tv); -#ifdef KLEO_MODEL_TEST - new ModelTest(model); -#endif - model->setKey(key); - - tv->setModel(model); - - tv->show(); -} - -int main(int argc, char *argv[]) -{ - - KAboutData aboutData(QStringLiteral("test_useridlistmodels"), i18n("UserIDListModel Test"), QStringLiteral("0.1")); - QApplication app(argc, argv); - QCommandLineParser parser; - KAboutData::setApplicationData(aboutData); - parser.addVersionOption(); - parser.addHelpOption(); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("p"), i18n("OpenPGP certificate to look up"), QStringLiteral("pattern"))); - parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("x"), i18n("X.509 certificate to look up"), QStringLiteral("pattern"))); - - aboutData.setupCommandLine(&parser); - parser.process(app); - aboutData.processCommandLine(&parser); - - if (parser.values(QStringLiteral("p")).empty() && parser.values(QStringLiteral("x")).empty()) { - return 1; - } - - try { - - Q_FOREACH (const QString &arg, parser.values(QStringLiteral("p"))) { - start(arg, OpenPGP); - } - - Q_FOREACH (const QString &arg, parser.values(QStringLiteral("x"))) { - start(arg, CMS); - } - - return app.exec(); - - } catch (const std::exception &e) { - std::cerr << "Caught exception: " << e.what() << std::endl; - return 1; - } -} - -#include "test_useridlistmodel.moc"