File indexing completed on 2024-04-21 05:50:40

0001 #include "kgpgexport.h"
0002 #include "../transactions/kgpgexport.h"
0003 #include "../kgpginterface.h"
0004 #include "common.h"
0005 
0006 #include <QSignalSpy>
0007 #include <QTest>
0008 #include <QTemporaryFile>
0009 
0010 void KGpgExportTest::init()
0011 {
0012     QVERIFY(resetGpgConf(m_tempdir));
0013 }
0014 
0015 void KGpgExportTest::testExportPublicKeyToFile()
0016 {
0017     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0018     QTemporaryFile file(QStringLiteral("key_pub.asc"));
0019     QVERIFY(file.open());
0020     QString filename = file.fileName();
0021 
0022     QStringList ids(QLatin1String("BA7695F3C550DF14"));
0023     // Output in Ascii mode
0024     QStringList options(QLatin1String("--armor"));
0025     KGpgExport *transaction = new KGpgExport(this, ids, filename, options, false);
0026     QSignalSpy spy(transaction, &KGpgExport::done);
0027     QObject::connect(transaction, &KGpgExport::done,
0028              [](int result) { QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK)); });
0029     transaction->start();
0030     QVERIFY(spy.wait(10000));
0031     QString exportedKey = readFile(filename);
0032     QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0033     QVERIFY(key.compare(exportedKey) == 0);
0034 }
0035 
0036 void KGpgExportTest::testExportSecretKeyToFile()
0037 {
0038     QString passphrase = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14.pass"));
0039     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14.asc"), passphrase);
0040     QTemporaryFile file(QStringLiteral("key.asc"));
0041     QVERIFY(file.open());
0042     QString filename = file.fileName();
0043     QStringList ids(QLatin1String("BA7695F3C550DF14"));
0044     // Output in Ascii mode
0045     QStringList options(QLatin1String("--armor"));
0046     KGpgExport *transaction = new KGpgExport(this, ids, filename, options, true);
0047     addPasswordArguments(transaction, passphrase);
0048     QSignalSpy spy(transaction, &KGpgExport::done);
0049     QObject::connect(transaction, &KGpgExport::done,
0050              [](int result) { QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK)); });
0051     transaction->start();
0052     QVERIFY(spy.wait(10000));
0053 
0054     //reset gpg home dir
0055     QVERIFY(resetGpgConf(m_tempdir));
0056     //Import exported key
0057     addGpgKey(m_tempdir, filename, passphrase);
0058     KgpgCore::KgpgKeyList keys = KgpgInterface::readSecretKeys();
0059     QString keyID = QLatin1String("BA7695F3C550DF14");
0060     QCOMPARE(keys.size(), 1);
0061     QVERIFY(keys.first().fullId().compare(keyID) == 0);
0062 }
0063 
0064 void KGpgExportTest::testExportPublicKeyToStdOutput()
0065 {
0066     addGpgKey(m_tempdir, QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0067 
0068     QStringList ids(QLatin1String("BA7695F3C550DF14"));
0069     // Output in Ascii mode
0070     QStringList options(QLatin1String("--armor"));
0071     KGpgExport *transaction = new KGpgExport(this, ids, options, false);
0072     QSignalSpy spy(transaction, &KGpgExport::done);
0073     QObject::connect(transaction, &KGpgExport::done,
0074              [](int result) { QCOMPARE(result, static_cast<int>(KGpgTransaction::TS_OK)); });
0075     transaction->start();
0076     QVERIFY(spy.wait(10000));
0077     QString exportedKey = QLatin1String(transaction->getOutputData());
0078     QString key = readFile(QLatin1String("keys/kgpgtest_BA7695F3C550DF14_pub.asc"));
0079     QVERIFY(key.compare(exportedKey) == 0);
0080 }
0081 
0082 QTEST_GUILESS_MAIN(KGpgExportTest)