milestone: 22 KF6 enabled, blake3 placeholders removed, text-login fixed
- kf6-knewstuff/kwallet: removed all-zero blake3 placeholders - CONSOLE-TO-KDE-DESKTOP-PLAN.md: 20→22 KF6 enabled count - BOOT-PROCESS-IMPROVEMENT-PLAN.md: text-login→graphical greeter path - D-Bus session/kwin compositor/sessiond enhancements from Wave tasks - Only kirigami remains suppressed (QML-dependent, environmental gate) Zero warnings. 24 commits total.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
|
||||
add_subdirectory(KWallet)
|
||||
|
||||
if(BUILD_KWALLETD)
|
||||
add_subdirectory(kwalletd)
|
||||
endif()
|
||||
@@ -0,0 +1,18 @@
|
||||
remove_definitions(-DQT_NO_CAST_FROM_ASCII)
|
||||
remove_definitions(-DQT_NO_CAST_TO_ASCII)
|
||||
|
||||
include(ECMMarkAsTest)
|
||||
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test)
|
||||
|
||||
macro(kwallet_executable_tests)
|
||||
foreach(_testname ${ARGN})
|
||||
add_executable(${_testname} ${_testname}.cpp)
|
||||
ecm_mark_as_test(${_testname})
|
||||
target_link_libraries(${_testname} Qt6::Test Qt6::Widgets KF6::Wallet)
|
||||
endforeach(_testname)
|
||||
endmacro()
|
||||
|
||||
kwallet_executable_tests(
|
||||
kwallettest
|
||||
)
|
||||
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2007 Thomas McGuire <thomas.mcguire@gmx.net>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "kwallettest.h"
|
||||
|
||||
#include <QTest>
|
||||
#include <qglobal.h>
|
||||
|
||||
#include <kwallet.h>
|
||||
|
||||
using namespace KWallet;
|
||||
|
||||
void KWalletTest::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletTest::testWallet()
|
||||
{
|
||||
QString testWallet = QStringLiteral("kdewallet");
|
||||
QString testFolder = QStringLiteral("wallettestfolder");
|
||||
QString testKeys[] = {QStringLiteral("testKey"), QStringLiteral("account-302948"), QStringLiteral("\\"), QStringLiteral("/abc"), QStringLiteral("a@b.c")};
|
||||
QByteArray testValues[] = {"test", "@(!§\"%&", "", ".test", "\\"};
|
||||
int numTests = 5;
|
||||
|
||||
// open
|
||||
Wallet *wallet = Wallet::openWallet(testWallet, 0, Wallet::Synchronous);
|
||||
if (wallet == nullptr) {
|
||||
qDebug() << "Couldn't open the wallet. Maybe the wallet daemon is not running?";
|
||||
}
|
||||
QVERIFY2(wallet != nullptr, "openWallet failed!");
|
||||
QVERIFY2(Wallet::isOpen(testWallet), "opwnWallet succeeded but the wallet !isOpen");
|
||||
|
||||
// create folder
|
||||
wallet->createFolder(testFolder);
|
||||
QVERIFY2(wallet->hasFolder(testFolder), "Failed to create testFolder");
|
||||
wallet->setFolder(testFolder);
|
||||
QVERIFY2(wallet->currentFolder() == testFolder, "Failed to set current testFolder");
|
||||
QVERIFY2(wallet->folderList().contains(testFolder), "The wallet does not contain freshly created testFolder");
|
||||
|
||||
// write & read many entries
|
||||
for (int i = 0; i < numTests; i++) {
|
||||
wallet->writeEntry(testKeys[i], testValues[i]);
|
||||
QVERIFY2(wallet->hasEntry(testKeys[i]), "hasEntry failed!");
|
||||
QByteArray readEntry;
|
||||
wallet->readEntry(testKeys[i], readEntry);
|
||||
QVERIFY2(readEntry == testValues[i], "readEntry failed!");
|
||||
}
|
||||
|
||||
// close
|
||||
wallet->sync();
|
||||
Wallet::closeWallet(QStringLiteral("kdewallet"), true);
|
||||
QVERIFY2(!Wallet::isOpen("kdewallet"), "wallet is still opened after close call!");
|
||||
|
||||
// test for key - closed wallet
|
||||
for (int i = 0; i < 5; i++) {
|
||||
QVERIFY2(!Wallet::keyDoesNotExist(testWallet, testFolder, testKeys[i]), "keyDoesNotExist(1) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, testFolder, "madeUpKey"), "keyDoesNotExist(2) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", "madeUpKey"), "keyDoesNotExist(3) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", testKeys[i]), "keyDoesNotExist(4) failed");
|
||||
}
|
||||
|
||||
// open
|
||||
wallet = Wallet::openWallet(testWallet, 0, Wallet::Synchronous);
|
||||
QVERIFY2(wallet != nullptr, "openWallet failed");
|
||||
QVERIFY2(Wallet::isOpen(testWallet), "openWallet succeeded but the wallet !isOpen (2)");
|
||||
|
||||
// set folder
|
||||
QVERIFY2(wallet->hasFolder(testFolder), "The wallet do not have testFolder!");
|
||||
wallet->setFolder(testFolder);
|
||||
QVERIFY2(wallet->currentFolder() == testFolder, "Failed to set current folder");
|
||||
|
||||
// test for key - opened wallet
|
||||
for (int i = 0; i < numTests; i++) {
|
||||
QVERIFY2(!Wallet::keyDoesNotExist(testWallet, testFolder, testKeys[i]), "keyDoesNotExist(1) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, testFolder, "madeUpKey"), "keyDoesNotExist(2) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", "madeUpKey"), "keyDoesNotExist(3) failed");
|
||||
QVERIFY2(Wallet::keyDoesNotExist(testWallet, "madeUpFolderName", testKeys[i]), "keyDoesNotExist(4) failed");
|
||||
}
|
||||
|
||||
// read many keys
|
||||
for (int i = 0; i < numTests; i++) {
|
||||
QByteArray readEntry;
|
||||
wallet->readEntry(testKeys[i], readEntry);
|
||||
QVERIFY2(readEntry == testValues[i], "Test value after read many keys failed!");
|
||||
}
|
||||
|
||||
// delete folder
|
||||
wallet->removeFolder(testFolder);
|
||||
QVERIFY2(!wallet->hasFolder(testFolder), "Failed to delete the testFolder");
|
||||
|
||||
// close
|
||||
Wallet::closeWallet(QStringLiteral("kdewallet"), true);
|
||||
QVERIFY2(!Wallet::isOpen("kdewallet"), "Failed to close wallet");
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletTest)
|
||||
|
||||
#include "moc_kwallettest.cpp"
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2007 Thomas McGuire <thomas.mcguire@gmx.net>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETTEST_H
|
||||
#define KWALLETTEST_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void testWallet();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,77 @@
|
||||
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../../src/api/KWallet ) # for kwallet.h
|
||||
include_directories( ${CMAKE_CURRENT_BINARY_DIR}/../../src/api/KWallet )
|
||||
|
||||
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../../src/runtime/kwalletd ) # kwalletwizard.h
|
||||
include_directories( ${CMAKE_CURRENT_BINARY_DIR}/../../src/runtime/kwalletd/backend ) # kwalletwizard.h
|
||||
|
||||
include(ECMMarkAsTest)
|
||||
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test)
|
||||
find_package(KF6CoreAddons ${KF_DEP_VERSION} REQUIRED)
|
||||
find_package(KF6I18n ${KF_DEP_VERSION} REQUIRED)
|
||||
find_package(KF6WidgetsAddons ${KF_DEP_VERSION} REQUIRED)
|
||||
find_package(Gpgmepp) # provided by GpgME
|
||||
|
||||
remove_definitions(-DQT_NO_CAST_FROM_ASCII)
|
||||
remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
|
||||
|
||||
add_executable(kwalletwizardtest)
|
||||
set(kwalletwizardtest_ui_SRCS)
|
||||
qt_wrap_ui(kwalletwizardtest_ui_SRCS
|
||||
../../src/runtime/kwalletd/kbetterthankdialogbase.ui
|
||||
../../src/runtime/kwalletd/kwalletwizardpageexplanation.ui
|
||||
../../src/runtime/kwalletd/kwalletwizardpageintro.ui
|
||||
../../src/runtime/kwalletd/kwalletwizardpageoptions.ui
|
||||
../../src/runtime/kwalletd/kwalletwizardpagepassword.ui
|
||||
../../src/runtime/kwalletd/kwalletwizardpagegpgkey.ui
|
||||
)
|
||||
|
||||
if (Gpgmepp_FOUND)
|
||||
qt_wrap_ui(kwalletwizardtest_ui_SRCS
|
||||
../../src/runtime/kwalletd/kwalletwizardpagepasswordgpg.ui)
|
||||
endif(Gpgmepp_FOUND)
|
||||
|
||||
target_sources(kwalletwizardtest PRIVATE
|
||||
kwalletwizardtest.cpp
|
||||
../../src/runtime/kwalletd/kwalletwizard.cpp
|
||||
${kwalletwizardtest_ui_SRCS}
|
||||
)
|
||||
ecm_mark_as_test(kwalletwizardtest)
|
||||
target_link_libraries(kwalletwizardtest
|
||||
KF6Wallet
|
||||
Qt6::Test
|
||||
KF6::CoreAddons
|
||||
KF6::I18n
|
||||
KF6::WidgetsAddons)
|
||||
if (Gpgmepp_FOUND)
|
||||
target_link_libraries(kwalletwizardtest Gpgmepp)
|
||||
endif(Gpgmepp_FOUND)
|
||||
|
||||
add_library(kwallettestlib STATIC kwallettest.cpp)
|
||||
target_link_libraries(kwallettestlib KF6Wallet Qt6::Widgets)
|
||||
|
||||
macro(kwalletd_tests)
|
||||
foreach(_testname ${ARGN})
|
||||
add_executable(${_testname} ${_testname}.cpp)
|
||||
ecm_mark_as_test(${_testname})
|
||||
target_link_libraries(${_testname}
|
||||
kwallettestlib
|
||||
KF6WalletBackend
|
||||
KF6Wallet
|
||||
Qt6::DBus
|
||||
Qt6::Test
|
||||
KF6::CoreAddons
|
||||
KF6::I18n)
|
||||
endforeach(_testname)
|
||||
endmacro()
|
||||
|
||||
kwalletd_tests(
|
||||
kwalletasync
|
||||
kwalletsync
|
||||
kwalletpath
|
||||
kwalletboth
|
||||
kwalletmany
|
||||
kwalletcbc
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
Tests for opening the wallet synchronously and asynchronously
|
||||
|
||||
kwalletsync - open synchronously
|
||||
kwalletasync - open asynchronously
|
||||
kwalletboth - start opening asynchronously, then, during the async call, open synchronously
|
||||
@@ -0,0 +1,12 @@
|
||||
TESTS TO BE DONE
|
||||
================
|
||||
|
||||
|
||||
* Test the autoclose function
|
||||
|
||||
It should setup a timer whose duration is longer than the autoclose delay
|
||||
configured in kwalletd. After that delay, it should test the wallet
|
||||
really autoclosed in kwalletd. For the test to work, kwalletd should be
|
||||
configured to do aucoclose and the timeout should be set to be shorter
|
||||
that the delay hard-coded in the test.
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
#include "kwalletasync.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QTest>
|
||||
#include <QTextStream>
|
||||
#include <QTimer>
|
||||
|
||||
#include <KAboutData>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <kwallet.h>
|
||||
|
||||
#include "kwallettest.h"
|
||||
|
||||
static QTextStream _out(stdout, QIODevice::WriteOnly);
|
||||
|
||||
void KWalletAsyncTest::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletAsyncTest::openWallet()
|
||||
{
|
||||
_out << "About to ask for wallet async\n";
|
||||
|
||||
// we have no wallet: ask for one.
|
||||
KWallet::Wallet *wallet = KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), 0, KWallet::Wallet::Asynchronous);
|
||||
QVERIFY(wallet != nullptr);
|
||||
|
||||
WalletReceiver r;
|
||||
QVERIFY(connect(wallet, &KWallet::Wallet::walletOpened, &r, &WalletReceiver::walletOpened));
|
||||
|
||||
_out << "About to start 30 second event loop\n";
|
||||
|
||||
QTimer::singleShot(30000, qApp, SLOT(quit()));
|
||||
int ret = qApp->exec();
|
||||
|
||||
if (ret == 0) {
|
||||
_out << "Timed out!\n";
|
||||
} else {
|
||||
_out << "Success!\n";
|
||||
}
|
||||
_out.flush();
|
||||
|
||||
QVERIFY2(ret == 1, "Timeout when waiting for wallet open");
|
||||
}
|
||||
|
||||
void WalletReceiver::walletOpened(bool got)
|
||||
{
|
||||
_out << "Got async wallet: " << got << '\n';
|
||||
_out.flush();
|
||||
qApp->exit(1);
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletAsyncTest)
|
||||
|
||||
#include "moc_kwalletasync.cpp"
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2014 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETASYNC_H
|
||||
#define KWALLETASYNC_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletAsyncTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void openWallet();
|
||||
};
|
||||
|
||||
#endif // KWALLETASYNC_H
|
||||
@@ -0,0 +1,83 @@
|
||||
#include "kwalletboth.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QMap>
|
||||
#include <QTest>
|
||||
#include <QTextStream>
|
||||
#include <QTimer>
|
||||
|
||||
#include <KAboutData>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <kwallet.h>
|
||||
|
||||
#include "kwallettest.h"
|
||||
|
||||
static QTextStream _out(stdout, QIODevice::WriteOnly);
|
||||
|
||||
void KWalletBothTest::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletBothTest::openWallet()
|
||||
{
|
||||
_out << "About to ask for wallet async\n";
|
||||
|
||||
// we have no wallet: ask for one.
|
||||
KWallet::Wallet *wallet = KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), 0, KWallet::Wallet::Asynchronous);
|
||||
QVERIFY(wallet != nullptr);
|
||||
|
||||
WalletReceiver r;
|
||||
connect(wallet, &KWallet::Wallet::walletOpened, &r, &WalletReceiver::walletOpened);
|
||||
|
||||
_out << "About to ask for wallet sync\n";
|
||||
|
||||
wallet = KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), 0, KWallet::Wallet::Synchronous);
|
||||
QVERIFY(wallet != nullptr);
|
||||
|
||||
_out << "Got sync wallet: " << (wallet != nullptr) << '\n';
|
||||
_out << "About to start 30 second event loop\n";
|
||||
|
||||
QTimer::singleShot(30000, qApp, SLOT(quit()));
|
||||
int ret = qApp->exec();
|
||||
|
||||
if (ret == 0) {
|
||||
_out << "Timed out!\n";
|
||||
} else {
|
||||
_out << "Success!\n";
|
||||
}
|
||||
|
||||
bool success = false;
|
||||
QMap<QString, QString> p;
|
||||
p = wallet->passwordList(&success);
|
||||
_out << "passwordList returned: " << success << '\n';
|
||||
_out << "passwordList returned " << p.keys().count() << " entries\n";
|
||||
|
||||
QMap<QString, QMap<QString, QString>> q;
|
||||
q = wallet->mapList(&success);
|
||||
_out << "mapList returned: " << success << '\n';
|
||||
_out << "mapList returned " << q.keys().count() << " entries\n";
|
||||
|
||||
QMap<QString, QByteArray> s;
|
||||
s = wallet->entriesList(&success);
|
||||
_out << "entryList returned: " << success << '\n';
|
||||
_out << "entryList returned " << s.keys().count() << " entries\n";
|
||||
|
||||
_out.flush();
|
||||
|
||||
delete wallet;
|
||||
}
|
||||
|
||||
void WalletReceiver::walletOpened(bool got)
|
||||
{
|
||||
_out << "Got async wallet: " << got << '\n';
|
||||
_out.flush();
|
||||
qApp->exit(1);
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletBothTest)
|
||||
|
||||
#include "moc_kwalletboth.cpp"
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2014 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETBOTH_H
|
||||
#define KWALLETBOTH_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletBothTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void openWallet();
|
||||
};
|
||||
|
||||
#endif // KWALLETBOTH_H
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2015 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "kwalletcbc.h"
|
||||
|
||||
#include <QTest>
|
||||
#include <backend/blowfish.h>
|
||||
#include <backend/cbc.h>
|
||||
|
||||
void KWalletCBCTest::encryptDecryptOneBlock()
|
||||
{
|
||||
BlockCipher *bf;
|
||||
char data[] = "OneBlock";
|
||||
char key[] = "testkey";
|
||||
|
||||
bf = new BlowFish();
|
||||
|
||||
bf->setKey((void *)key, 7 * 8);
|
||||
|
||||
QVERIFY(bf->readyToGo());
|
||||
QVERIFY(8 == bf->encrypt((void *)data, 8));
|
||||
|
||||
delete bf;
|
||||
bf = new BlowFish();
|
||||
bf->setKey((void *)key, 7 * 8);
|
||||
|
||||
QVERIFY(8 == bf->decrypt((void *)data, 8));
|
||||
QVERIFY(strcmp(data, "OneBlock") == 0);
|
||||
delete bf;
|
||||
}
|
||||
|
||||
void KWalletCBCTest::encryptDecryptMultiblock()
|
||||
{
|
||||
BlockCipher *bf;
|
||||
char data[] = "This is a test.";
|
||||
char key[] = "testkey";
|
||||
|
||||
bf = new BlowFish();
|
||||
|
||||
bf->setKey((void *)key, 7 * 8);
|
||||
|
||||
QVERIFY(bf->readyToGo());
|
||||
QVERIFY(16 == bf->encrypt((void *)data, 16));
|
||||
|
||||
delete bf;
|
||||
bf = new BlowFish();
|
||||
bf->setKey((void *)key, 7 * 8);
|
||||
|
||||
QVERIFY(16 == bf->decrypt((void *)data, 16));
|
||||
QVERIFY(strcmp(data, "This is a test.") == 0);
|
||||
delete bf;
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletCBCTest)
|
||||
|
||||
#include "moc_kwalletcbc.cpp"
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2015 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETCBC_H
|
||||
#define KWALLETCBC_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletCBCTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void encryptDecryptOneBlock();
|
||||
void encryptDecryptMultiblock();
|
||||
};
|
||||
|
||||
#endif // KWALLETCBC_H
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
This file is part of the KDE libraries
|
||||
SPDX-FileCopyrightText: 2008 Michael Leupold <lemma@confuego.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "kwalletmany.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QTest>
|
||||
#include <QTextStream>
|
||||
#include <QThread>
|
||||
#include <kwallet.h>
|
||||
|
||||
#define NUMWALLETS 10
|
||||
|
||||
using namespace KWallet;
|
||||
|
||||
static QTextStream _out(stdout, QIODevice::WriteOnly);
|
||||
|
||||
KWalletMany::KWalletMany()
|
||||
: QObject()
|
||||
, _pending(10)
|
||||
{
|
||||
}
|
||||
|
||||
KWalletMany::~KWalletMany()
|
||||
{
|
||||
}
|
||||
|
||||
void KWalletMany::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletMany::walletOpened(bool open)
|
||||
{
|
||||
_out << "Got async wallet: " << (open) << '\n';
|
||||
_out.flush();
|
||||
--_pending;
|
||||
}
|
||||
|
||||
void KWalletMany::openWallet()
|
||||
{
|
||||
// open plenty of wallets in synchronous and asynchronous mode
|
||||
for (int i = 0; i < NUMWALLETS; ++i) {
|
||||
// request asynchronous wallet
|
||||
_out << "About to ask for wallet async" << '\n';
|
||||
Wallet *wallet;
|
||||
wallet = Wallet::openWallet(Wallet::NetworkWallet(), 0, Wallet::Asynchronous);
|
||||
QVERIFY(wallet != nullptr);
|
||||
connect(wallet, &KWallet::Wallet::walletOpened, this, &KWalletMany::walletOpened);
|
||||
_wallets.append(wallet);
|
||||
}
|
||||
_out.flush();
|
||||
|
||||
// wait for 30s to receive the wallet opened replies from kwalletd
|
||||
QTRY_VERIFY_WITH_TIMEOUT(_pending == 0, 30000);
|
||||
|
||||
while (!_wallets.isEmpty()) {
|
||||
delete _wallets.takeFirst();
|
||||
}
|
||||
QApplication::quit();
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletMany)
|
||||
|
||||
#include "moc_kwalletmany.cpp"
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
This file is part of the KDE libraries
|
||||
SPDX-FileCopyrightText: 2008 Michael Leupold <lemma@confuego.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETMANY_H
|
||||
#define KWALLETMANY_H
|
||||
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
namespace KWallet
|
||||
{
|
||||
class Wallet;
|
||||
}
|
||||
|
||||
class KWalletMany : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
KWalletMany();
|
||||
~KWalletMany() override;
|
||||
|
||||
public Q_SLOTS:
|
||||
void walletOpened(bool open);
|
||||
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void openWallet();
|
||||
|
||||
private:
|
||||
QList<KWallet::Wallet *> _wallets;
|
||||
int _pending;
|
||||
};
|
||||
|
||||
#endif // KWALLETMANY_H
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "kwalletpath.h"
|
||||
|
||||
#include <QTest>
|
||||
#include <QTextStream>
|
||||
|
||||
#include <KAboutData>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <kwallet.h>
|
||||
|
||||
static QTextStream _out(stdout, QIODevice::WriteOnly);
|
||||
|
||||
void KWalletPathTest::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletPathTest::openWallet()
|
||||
{
|
||||
_out << "About to ask for wallet /tmp/test.kwl sync\n";
|
||||
|
||||
KWallet::Wallet *wallet = KWallet::Wallet::openWallet(QStringLiteral("/tmp/test.kwl"), 0, KWallet::Wallet::Path);
|
||||
QVERIFY(wallet != nullptr);
|
||||
|
||||
_out << "Got path wallet: " << (wallet != nullptr) << '\n';
|
||||
|
||||
if (wallet) {
|
||||
_out << "Closing wallet\n";
|
||||
delete wallet;
|
||||
}
|
||||
_out.flush();
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletPathTest)
|
||||
|
||||
#include "moc_kwalletpath.cpp"
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2014 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETPATH_H
|
||||
#define KWALLETPATH_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletPathTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void openWallet();
|
||||
};
|
||||
|
||||
#endif // KWALLETPATH_H
|
||||
@@ -0,0 +1,33 @@
|
||||
#include "kwalletsync.h"
|
||||
|
||||
#include <QTest>
|
||||
#include <QTextStream>
|
||||
|
||||
#include <KAboutData>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <kwallet.h>
|
||||
|
||||
static QTextStream _out(stdout, QIODevice::WriteOnly);
|
||||
|
||||
void KWalletSyncTest::init()
|
||||
{
|
||||
if (!qEnvironmentVariableIsSet("DISPLAY")) {
|
||||
QSKIP("$DISPLAY is not set. These tests cannot be done without a graphical system.");
|
||||
}
|
||||
}
|
||||
|
||||
void KWalletSyncTest::openWallet()
|
||||
{
|
||||
_out << "About to ask for wallet sync\n";
|
||||
|
||||
KWallet::Wallet *w = KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), 0, KWallet::Wallet::Synchronous);
|
||||
QVERIFY(w != nullptr);
|
||||
|
||||
_out << "Got sync wallet: " << (w != nullptr) << '\n';
|
||||
_out.flush();
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(KWalletSyncTest)
|
||||
|
||||
#include "moc_kwalletsync.cpp"
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
This file is part of the KDE Libraries
|
||||
SPDX-FileCopyrightText: 2014 Valentin Rusu <kde@rusu.info>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KWALLETSYNC_H
|
||||
#define KWALLETSYNC_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class KWalletSyncTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
private Q_SLOTS:
|
||||
void init();
|
||||
void openWallet();
|
||||
};
|
||||
|
||||
#endif // KWALLETSYNC_H
|
||||
@@ -0,0 +1,3 @@
|
||||
#include "kwallettest.h"
|
||||
|
||||
#include "moc_kwallettest.cpp"
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef KWALLETTEST_H
|
||||
#define KWALLETTEST_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
namespace KWallet
|
||||
{
|
||||
class Wallet;
|
||||
}
|
||||
|
||||
class WalletReceiver : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public Q_SLOTS:
|
||||
void walletOpened(bool);
|
||||
};
|
||||
|
||||
#endif // KWALLETTEST_H
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include <kwalletwizard.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
KWalletWizard wizard;
|
||||
wizard.show();
|
||||
|
||||
int ret = app.exec();
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user