File indexing completed on 2024-03-24 05:53:30
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)