mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-12-04 15:39:34 +01:00
FdoSecrets: Major Refactor and Code Consolidation (#5747)
* Fixes #3837 * Change objects to use DBusMgr rather than separate adaptors - Update all DBus invokable methods to new parameter order - Change all usage of DBusReturn to simpler DBusResult - Use DBusMgr to handle path and service registration - Remove adaptor/* - Set path in DBusObject - Unregister service when service is destroyed - Restore handling of invalid QVariant in prompt complete signal - Clean up meta type registration - Move dbus related file together - Convert to QSharedPointer as much as possible - Fix mapping of the Delete method - Handle dbus property get all * Add per-client states - Move cipher negotiation to DBusClient - Show list of clients instead of sessions in the settings page - Add settings for confirmation of accessing items - Fix infinite recursion when client disconnected - Use optional explicit DBusClient parameter instead. This makes accessing the client info in an async context explicit, and thus prevent accidental assertions in prompts. * Improve User Interface - Add per-item access confirmation (if enabled) - Remove the "disable for site" button for the access control dialog - Improve the text on the settings page to be more consistent - Fix disconnect buttons in settings page not working - Make the unlock prompt method nonblocking * Fix and cleanup unit tests - Use QTRY_COMPARE when checking signal spies, as dbus signals are threaded - Fixes in meta type registration and type conversion - Remove QStringLiteral in COMPARE macros, making diff output readable - Add testing for remembering auth decision
This commit is contained in:
@@ -20,13 +20,13 @@
|
||||
#include "TestGlobal.h"
|
||||
|
||||
#include "core/EntrySearcher.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "fdosecrets/GcryptMPI.h"
|
||||
#include "fdosecrets/dbus/DBusMgr.h"
|
||||
#include "fdosecrets/objects/Collection.h"
|
||||
#include "fdosecrets/objects/Item.h"
|
||||
#include "fdosecrets/objects/SessionCipher.h"
|
||||
|
||||
#include "crypto/Crypto.h"
|
||||
|
||||
QTEST_GUILESS_MAIN(TestFdoSecrets)
|
||||
|
||||
void TestFdoSecrets::initTestCase()
|
||||
@@ -144,3 +144,39 @@ void TestFdoSecrets::testSpecialCharsInAttributeValue()
|
||||
QCOMPARE(res[0]->title(), QStringLiteral("titleB"));
|
||||
}
|
||||
}
|
||||
|
||||
void TestFdoSecrets::testDBusPathParse()
|
||||
{
|
||||
using FdoSecrets::DBusMgr;
|
||||
using PathType = FdoSecrets::DBusMgr::PathType;
|
||||
|
||||
auto parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets"));
|
||||
QCOMPARE(parsed.type, PathType::Service);
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets/collection/xxx"));
|
||||
QCOMPARE(parsed.type, PathType::Collection);
|
||||
QCOMPARE(parsed.id, QStringLiteral("xxx"));
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets/collection/xxx/yyy"));
|
||||
QCOMPARE(parsed.type, PathType::Item);
|
||||
QCOMPARE(parsed.id, QStringLiteral("yyy"));
|
||||
QCOMPARE(parsed.parentId, QStringLiteral("xxx"));
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets/aliases/xxx"));
|
||||
QCOMPARE(parsed.type, PathType::Aliases);
|
||||
QCOMPARE(parsed.id, QStringLiteral("xxx"));
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets/session/xxx"));
|
||||
QCOMPARE(parsed.type, PathType::Session);
|
||||
QCOMPARE(parsed.id, QStringLiteral("xxx"));
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/secrets/prompt/xxx"));
|
||||
QCOMPARE(parsed.type, PathType::Prompt);
|
||||
QCOMPARE(parsed.id, QStringLiteral("xxx"));
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org/freedesktop/other/prompt/xxx"));
|
||||
QCOMPARE(parsed.type, PathType::Unknown);
|
||||
|
||||
parsed = DBusMgr::parsePath(QStringLiteral("/org"));
|
||||
QCOMPARE(parsed.type, PathType::Unknown);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user