/* * Copyright (C) 2019 Aetf * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 or (at your option) * version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef KEEPASSXC_TESTGUIFDOSECRETS_H #define KEEPASSXC_TESTGUIFDOSECRETS_H #include #include #include #include "fdosecrets/dbus/DBusTypes.h" class MainWindow; class Database; class DatabaseTabWidget; class DatabaseWidget; class TemporaryFile; class FdoSecretsPlugin; namespace FdoSecrets { class Service; class Session; class Collection; class Item; class Prompt; class DhIetf1024Sha256Aes128CbcPkcs7; class DBusClient; } // namespace FdoSecrets class ServiceProxy; class CollectionProxy; class ItemProxy; class SessionProxy; class PromptProxy; class QAbstractItemView; class TestGuiFdoSecrets : public QObject { Q_OBJECT public: ~TestGuiFdoSecrets() override; private slots: void initTestCase(); void init(); void cleanup(); void cleanupTestCase(); void testServiceEnable(); void testServiceEnableNoExposedDatabase(); void testServiceSearch(); void testServiceUnlock(); void testServiceUnlockItems(); void testServiceLock(); void testSessionOpen(); void testSessionClose(); void testCollectionCreate(); void testCollectionDelete(); void testCollectionChange(); void testItemCreate(); void testItemChange(); void testItemReplace(); void testItemReplaceExistingLocked(); void testItemSecret(); void testItemDelete(); void testItemLockState(); void testAlias(); void testDefaultAliasAlwaysPresent(); void testExposeSubgroup(); void testModifyingExposedGroup(); void testHiddenFilename(); void testDuplicateName(); protected slots: void driveNewDatabaseWizard(); bool driveAccessControlDialog(bool remember = true); private: void lockDatabaseInBackend(); void unlockDatabaseInBackend(); QSharedPointer enableService(); QSharedPointer openSession(const QSharedPointer& service, const QString& algo); QSharedPointer getDefaultCollection(const QSharedPointer& service); QSharedPointer getFirstItem(const QSharedPointer& coll); QSharedPointer createItem(const QSharedPointer& sess, const QSharedPointer& coll, const QString& label, const QString& pass, const FdoSecrets::wire::StringStringMap& attr, bool replace, bool expectPrompt = false); template QSharedPointer getProxy(const QDBusObjectPath& path) const { auto ret = QSharedPointer{ new Proxy(QStringLiteral("org.freedesktop.secrets"), path.path(), QDBusConnection::sessionBus())}; if (!ret->isValid()) { return {}; } return ret; } template T getSignalVariantArgument(const QVariant& arg) { const auto& in = arg.value().variant(); return qdbus_cast(in); } private: QScopedPointer m_mainWindow; QPointer m_tabWidget; QPointer m_dbWidget; QSharedPointer m_db; QPointer m_plugin; QSharedPointer m_client; QScopedPointer m_clientCipher; QByteArray m_dbData; QScopedPointer m_dbFile; }; #endif // KEEPASSXC_TESTGUIFDOSECRETS_H