File indexing completed on 2024-04-14 05:43:28

0001 #include "kgpgimport.h"
0002 #include "../transactions/kgpgimport.h"
0003 #include "common.h"
0004 
0005 #include <QList>
0006 #include <QString>
0007 #include <QStringList>
0008 #include <QSignalSpy>
0009 #include <QTest>
0010 #include <QTextStream>
0011 #include <QUrl>
0012 
0013 void KGpgImportTest::init()
0014 {
0015     QVERIFY(resetGpgConf(m_tempdir));
0016 }
0017 
0018 void KGpgImportTest::testImportTextKey()
0019 {
0020     QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0021     QVERIFY(KGpgImport::isKey(key));
0022     KGpgImport *transaction = new KGpgImport(this, key);
0023     QSignalSpy spy(transaction, &KGpgImport::done);
0024     QObject::connect(transaction, &KGpgImport::done, [transaction, key](int result) {
0025         QCOMPARE(transaction->getImportedKeys().size(), 1);
0026         QString keyID = QLatin1String("BA7695F3C550DF14");
0027         QVERIFY(transaction->getImportedKeys().first().startsWith(keyID));
0028         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0029     });
0030     transaction->start();
0031     QVERIFY(spy.wait(10000));
0032 }
0033 
0034 void KGpgImportTest::testImportKeyFromFile()
0035 {
0036     QList<QUrl> list;
0037     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")));
0038 
0039     KGpgImport *transaction = new KGpgImport(this, list);
0040     QSignalSpy spy(transaction, &KGpgImport::done);
0041     QObject::connect(transaction, &KGpgImport::done, [transaction](int result) {
0042         QCOMPARE(transaction->getImportedKeys().size(), 1);
0043         QString keyID = QLatin1String("BA7695F3C550DF14");
0044         QVERIFY(transaction->getImportedKeys().first().startsWith(keyID));
0045         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0046     });
0047     transaction->start();
0048     QVERIFY(spy.wait(10000));
0049 }
0050 
0051 void KGpgImportTest::testImportSameKeyTwice()
0052 {
0053     QList<QUrl> list;
0054     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")));
0055     KGpgImport *transaction = new KGpgImport(this, list);
0056     QSignalSpy spy(transaction, &KGpgImport::done);
0057     transaction->start();
0058     QVERIFY(spy.wait(10000));
0059     QObject::connect(transaction, &KGpgImport::done, [transaction](int result) {
0060         QCOMPARE(transaction->getImportedKeys().size(), 1);
0061         QString keyID = QLatin1String("BA7695F3C550DF14");
0062         QString duplicateMsg = QLatin1String("IMPORT_OK 0 FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14");
0063         qDebug() << "MESSAGES: " << transaction->getMessages();
0064         QVERIFY(transaction->getImportedKeys().first().startsWith(keyID));
0065         QVERIFY(transaction->getMessages().join(QLatin1Char(' ')).contains(duplicateMsg));
0066         QEXPECT_FAIL("", "Test is broken. Possible bug!", Continue);
0067         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0068     });
0069     transaction->start();
0070     QVERIFY(spy.wait(10000));
0071 }
0072 
0073 void KGpgImportTest::testImportIdsAll()
0074 {
0075     QList<QUrl> list;
0076     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")));
0077     KGpgImport *transaction = new KGpgImport(this, list);
0078     QSignalSpy spy(transaction, &KGpgImport::done);
0079     QObject::connect(transaction, &KGpgImport::done, [transaction](int result) {
0080         QCOMPARE(transaction->getImportedIds(-1).size(), 1);
0081         QString fingerprint = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14");
0082         QVERIFY(transaction->getImportedIds(-1).first().compare(fingerprint) == 0);
0083         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0084     });
0085     transaction->start();
0086     QVERIFY(spy.wait(10000));
0087 }
0088 
0089 void KGpgImportTest::testImportIdsUnchanged()
0090 {
0091     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0092     QList<QUrl> list;
0093     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")));
0094     KGpgImport *transaction = new KGpgImport(this, list);
0095     QSignalSpy spy(transaction, &KGpgImport::done);
0096     QObject::connect(transaction, &KGpgImport::done, [transaction](int result) {
0097         QCOMPARE(transaction->getImportedIds(0).size(), 1);
0098         QString fingerprint = QLatin1String("FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14");
0099         QVERIFY(transaction->getImportedIds(0).first().compare(fingerprint) == 0);
0100         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0101     });
0102     transaction->start();
0103     QVERIFY(spy.wait(10000));
0104 }
0105 
0106 void KGpgImportTest::testLogMessage()
0107 {
0108     QList<QUrl> list;
0109     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc")));
0110     KGpgImport *transaction = new KGpgImport(this, list);
0111     QSignalSpy spy(transaction, &KGpgImport::done);
0112     QObject::connect(transaction, &KGpgImport::done, [transaction](int result) {
0113         QString msg = QLatin1String("IMPORT_OK 1 FBAF08DD7D9D0921C15DDA9FBA7695F3C550DF14");
0114         QVERIFY(transaction->getMessages().join(QLatin1Char(' ')).contains(msg));
0115         QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK));
0116     });
0117     transaction->start();
0118     QVERIFY(spy.wait(10000));
0119 }
0120 
0121 void KGpgImportTest::testImportSecretKey()
0122 {
0123     QList<QUrl> list;
0124     list.append(QUrl::fromLocalFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc")));
0125     KGpgImport *transaction = new KGpgImport(this, list);
0126     addPasswordArguments(transaction,
0127                  readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass")));
0128     QSignalSpy spy(transaction, &KGpgImport::done);
0129     QObject::connect(transaction, &KGpgImport::done, [transaction]() {
0130         QVERIFY(transaction->getImportedKeys().size() == 1);
0131         QString keyID = QLatin1String("BA7695F3C550DF14");
0132         QVERIFY(transaction->getImportedKeys().first().startsWith(keyID));
0133     });
0134     transaction->start();
0135     QVERIFY(spy.wait(10000));
0136 }
0137 
0138 QTEST_GUILESS_MAIN(KGpgImportTest)