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)