File indexing completed on 2024-04-28 09:46:02

0001 #include "kgpgadduid.h"
0002 #include "../transactions/kgpgadduid.h"
0003 #include "../kgpginterface.h"
0004 #include "../kgpgsettings.h"
0005 #include "common.h"
0006 
0007 #include <QLatin1String>
0008 #include <QSignalSpy>
0009 #include <QString>
0010 #include <QTest>
0011 
0012 void KGpgAddUidTest::init()
0013 {
0014     QVERIFY(resetGpgConf(m_tempdir));
0015     QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass"));
0016     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0017     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase);
0018 }
0019 
0020 void KGpgAddUidTest::testAddUid()
0021 {
0022     QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass"));
0023 
0024     QString keyId = QLatin1String("BA7695F3C550DF14");
0025 
0026     QFETCH(QString, uid_name);
0027     QFETCH(QString, uid_email);
0028     QFETCH(QString, uid_comment);
0029     KGpgAddUid *transaction = new KGpgAddUid(this, keyId, uid_name, uid_email, uid_comment);
0030     addPasswordArguments(transaction, passphrase);
0031     QObject::connect(transaction, &KGpgAddUid::done,
0032              [](int result) { QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK)); });
0033     QSignalSpy spy(transaction, &KGpgAddUid::done);
0034     transaction->start();
0035     QVERIFY(spy.wait(10000));
0036     KgpgCore::KgpgKeyList keyList = KgpgInterface::readPublicKeys();
0037     QCOMPARE(keyList.size(), 1);
0038     KgpgCore::KgpgKey key = keyList.first();
0039     QCOMPARE(key.name(), uid_name);
0040     QCOMPARE(key.email(), uid_email);
0041     QCOMPARE(key.comment(), uid_comment);
0042     QCOMPARE(key.fullId(), keyId);
0043 }
0044 
0045 void KGpgAddUidTest::testAddUid_data()
0046 {
0047     QTest::addColumn<QString>("uid_name");
0048     QTest::addColumn<QString>("uid_email");
0049     QTest::addColumn<QString>("uid_comment");
0050 
0051     QTest::newRow("all fields") << QString(QLatin1String("Test name"))
0052             << QString(QLatin1String("test@kde.org"))
0053             << QString(QLatin1String("Test comment"));
0054     QTest::newRow("only name") << QString(QLatin1String("Test name 2"))
0055             << QString() << QString();
0056     QTest::newRow("name and comment") << QString(QLatin1String("Test name 2"))
0057             << QString() << QString(QLatin1String("another comment"));
0058 }
0059 
0060 void KGpgAddUidTest::testAddUidInvalid()
0061 {
0062     QString keyId = QLatin1String("BA7695F3C550DF14");
0063     QString name = QLatin1String("Test name");
0064     QString email = QLatin1String("a b"); // intentionally invalid
0065     QString comment = QLatin1String("Test comment");
0066     KGpgAddUid *transaction = new KGpgAddUid(this, keyId, name, email, comment);
0067     QObject::connect(transaction, &KGpgAddUid::done,
0068              [](int result) { QCOMPARE(result, static_cast<int>(KGpgAddUid::TS_INVALID_EMAIL)); });
0069     QSignalSpy spy(transaction, &KGpgAddUid::done);
0070     transaction->start();
0071 
0072     // for whatever reason spy.wait() does not work here
0073     int i = 0;
0074     while (spy.isEmpty() && i++ < 50)
0075         QTest::qWait(250);
0076     QCOMPARE(spy.count(), 1);
0077 }
0078 
0079 QTEST_GUILESS_MAIN(KGpgAddUidTest)