File indexing completed on 2024-05-12 15:47:07

0001 /*
0002     This file is part of the KDE Libraries
0003     SPDX-FileCopyrightText: 2007 Thomas McGuire <thomas.mcguire@gmx.net>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "kwallettest.h"
0009 
0010 #include <QTest>
0011 #include <qglobal.h>
0012 
0013 #include <kwallet.h>
0014 
0015 using namespace KWallet;
0016 
0017 void KWalletTest::init()
0018 {
0019     if (!qEnvironmentVariableIsSet("DISPLAY")) {
0020         QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
0021     }
0022 }
0023 
0024 void KWalletTest::testWallet()
0025 {
0026     QString testWallet = QStringLiteral("kdewallet");
0027     QString testFolder = QStringLiteral("wallettestfolder");
0028     QString testKeys[] = {QStringLiteral("testKey"), QStringLiteral("account-302948"), QStringLiteral("\\"), QStringLiteral("/abc"), QStringLiteral("a@b.c")};
0029     QByteArray testValues[] = {"test", "@(!ยง\"%&", "", ".test", "\\"};
0030     int numTests = 5;
0031 
0032     // open
0033     Wallet *wallet = Wallet::openWallet(testWallet, 0, Wallet::Synchronous);
0034     if (wallet == nullptr) {
0035         qDebug() << "Couldn't open the wallet. Maybe the wallet daemon is not running?";
0036     }
0037     QVERIFY2(wallet != nullptr, "openWallet failed!");
0038     QVERIFY2(Wallet::isOpen(testWallet), "opwnWallet succeeded but the wallet !isOpen");
0039 
0040     // create folder
0041     wallet->createFolder(testFolder);
0042     QVERIFY2(wallet->hasFolder(testFolder), "Failed to create testFolder");
0043     wallet->setFolder(testFolder);
0044     QVERIFY2(wallet->currentFolder() == testFolder, "Failed to set current testFolder");
0045     QVERIFY2(wallet->folderList().contains(testFolder), "The wallet does not contain freshly created testFolder");
0046 
0047     // write & read many entries
0048     for (int i = 0; i < numTests; i++) {
0049         wallet->writeEntry(testKeys[i], testValues[i]);
0050         QVERIFY2(wallet->hasEntry(testKeys[i]), "hasEntry failed!");
0051         QByteArray readEntry;
0052         wallet->readEntry(testKeys[i], readEntry);
0053         QVERIFY2(readEntry == testValues[i], "readEntry failed!");
0054     }
0055 
0056     // close
0057     wallet->sync();
0058     Wallet::closeWallet(QStringLiteral("kdewallet"), true);
0059     QVERIFY2(!Wallet::isOpen("kdewallet"), "wallet is still opened after close call!");
0060 
0061     // test for key - closed wallet
0062     for (int i = 0; i < 5; i++) {
0063         QVERIFY2(!Wallet::keyDoesNotExist(testWallet, testFolder, testKeys[i]), "keyDoesNotExist(1) failed");
0064         QVERIFY2(Wallet::keyDoesNotExist(testWallet, testFolder, "madeUpKey"), "keyDoesNotExist(2) failed");
0065         QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", "madeUpKey"), "keyDoesNotExist(3) failed");
0066         QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", testKeys[i]), "keyDoesNotExist(4) failed");
0067     }
0068 
0069     // open
0070     wallet = Wallet::openWallet(testWallet, 0, Wallet::Synchronous);
0071     QVERIFY2(wallet != nullptr, "openWallet failed");
0072     QVERIFY2(Wallet::isOpen(testWallet), "openWallet succeeded but the wallet !isOpen (2)");
0073 
0074     // set folder
0075     QVERIFY2(wallet->hasFolder(testFolder), "The wallet do not have testFolder!");
0076     wallet->setFolder(testFolder);
0077     QVERIFY2(wallet->currentFolder() == testFolder, "Failed to set current folder");
0078 
0079     // test for key - opened wallet
0080     for (int i = 0; i < numTests; i++) {
0081         QVERIFY2(!Wallet::keyDoesNotExist(testWallet, testFolder, testKeys[i]), "keyDoesNotExist(1) failed");
0082         QVERIFY2(Wallet::keyDoesNotExist(testWallet, testFolder, "madeUpKey"), "keyDoesNotExist(2) failed");
0083         QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", "madeUpKey"), "keyDoesNotExist(3) failed");
0084         QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", testKeys[i]), "keyDoesNotExist(4) failed");
0085     }
0086 
0087     // read many keys
0088     for (int i = 0; i < numTests; i++) {
0089         QByteArray readEntry;
0090         wallet->readEntry(testKeys[i], readEntry);
0091         QVERIFY2(readEntry == testValues[i], "Test value after read many keys failed!");
0092     }
0093 
0094     // delete folder
0095     wallet->removeFolder(testFolder);
0096     QVERIFY2(!wallet->hasFolder(testFolder), "Failed to delete the testFolder");
0097 
0098     // close
0099     Wallet::closeWallet(QStringLiteral("kdewallet"), true);
0100     QVERIFY2(!Wallet::isOpen("kdewallet"), "Failed to close wallet");
0101 }
0102 
0103 QTEST_GUILESS_MAIN(KWalletTest)
0104 
0105 #include "moc_kwallettest.cpp"