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"