aboutsummaryrefslogtreecommitdiffstats
path: root/lang/qt/tests/t-disablekey.cpp
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2024-08-06 14:57:14 +0000
committerIngo Klöcker <[email protected]>2024-08-07 08:53:21 +0000
commit63822343dfaac8b638ef475d441c4379da3a9804 (patch)
treea72fc7cdfea56eed20c09aadc1ab31ac755edbcc /lang/qt/tests/t-disablekey.cpp
parentcpp: Add support for setting owner trust and for disabling keys (diff)
downloadgpgme-63822343dfaac8b638ef475d441c4379da3a9804.tar.gz
gpgme-63822343dfaac8b638ef475d441c4379da3a9804.zip
qt: Support disabling and enabling of keys
* lang/qt/src/Makefile.am: Add new files. * lang/qt/src/job.cpp (QuickJob): Move definition of constructor and destructor and inclusion of the moc file to quickjob.cpp. * lang/qt/src/qgpgmequickjob.cpp (class QGpgMEQuickJobPrivate): New. (QGpgMEQuickJob::QGpgMEQuickJob): Instantiate private job class. (set_key_enabled): New. * lang/qt/src/quickjob.cpp: New. * lang/qt/src/quickjob.h (class QuickJob): Add member function startSetKeyEnabled. * lang/qt/src/quickjob_p.h: New. * lang/qt/tests/Makefile.am: Add new test for Qt 5 and Qt 6. * lang/qt/tests/t-disablekey.cpp: New. -- GnuPG-bug-id: 7239
Diffstat (limited to '')
-rw-r--r--lang/qt/tests/t-disablekey.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/lang/qt/tests/t-disablekey.cpp b/lang/qt/tests/t-disablekey.cpp
new file mode 100644
index 00000000..40581719
--- /dev/null
+++ b/lang/qt/tests/t-disablekey.cpp
@@ -0,0 +1,118 @@
+/* t-disablekey.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2024 g10 Code GmbH
+ Software engineering by Ingo Klöcker <[email protected]>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "t-support.h"
+
+#include "quickjob.h"
+#include "debug.h"
+#include "keylistjob.h"
+#include "protocol.h"
+
+#include <gpgme++/engineinfo.h>
+#include <gpgme++/keylistresult.h>
+
+#include <QDebug>
+#include <QSignalSpy>
+#include <QTest>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+class DisableKeyTest: public QGpgMETest
+{
+ Q_OBJECT
+
+ Key getTestKey()
+ {
+ const std::unique_ptr<KeyListJob> job{openpgp()->keyListJob(false, true, true)};
+ std::vector<GpgME::Key> keys;
+ KeyListResult result = job->exec({QStringLiteral("[email protected]")}, false, keys);
+ VERIFY_OR_OBJECT(!result.error());
+ VERIFY_OR_OBJECT(keys.size() == 1);
+ return keys.front();
+ }
+
+private Q_SLOTS:
+
+ void testDisableAndEnableKey()
+ {
+ if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.4.6") {
+ QSKIP("gpg does not yet support the --quick-set-ownertrust command");
+ }
+
+ Key key = getTestKey();
+ QVERIFY(!key.isNull());
+ QVERIFY(!key.isDisabled());
+
+ {
+ const std::unique_ptr<QuickJob> job{openpgp()->quickJob()};
+ connect(job.get(), &QuickJob::result, this, [this](Error e) {
+ if (e) {
+ qDebug() << "Error in result:" << e;
+ }
+ QVERIFY(!e);
+ Q_EMIT asyncDone();
+ });
+ job->startSetKeyEnabled(key, false);
+ QSignalSpy spy{this, SIGNAL(asyncDone())};
+ QVERIFY(spy.wait(QSIGNALSPY_TIMEOUT));
+ }
+ key = getTestKey();
+ QVERIFY(!key.isNull());
+ QVERIFY(key.isDisabled());
+
+ {
+ const std::unique_ptr<QuickJob> job{openpgp()->quickJob()};
+ connect(job.get(), &QuickJob::result, this, [this](Error e) {
+ if (e) {
+ qDebug() << "Error in result:" << e;
+ }
+ QVERIFY(!e);
+ Q_EMIT asyncDone();
+ });
+ job->startSetKeyEnabled(key, true);
+ QSignalSpy spy{this, SIGNAL(asyncDone())};
+ QVERIFY(spy.wait(QSIGNALSPY_TIMEOUT));
+ }
+ key = getTestKey();
+ QVERIFY(!key.isNull());
+ QVERIFY(!key.isDisabled());
+ }
+};
+
+QTEST_MAIN(DisableKeyTest)
+
+#include "t-disablekey.moc"