[network/ruqola] src/core/localdatabase/autotests: Prepare e2eroomsdatabasetest
Laurent Montel <[email protected]> Wed, 5 Aug 2026 05:29:20 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 6e88907b840cd7e9818de0e58c0af9489fb33722 by Laurent Montel.
Committed on 05/08/2026 at 05:12.
Pushed by mlaurent into branch 'master'.
Prepare e2eroomsdatabasetest
M +1 -0 src/core/localdatabase/autotests/CMakeLists.txt
A +94 -0 src/core/localdatabase/autotests/e2eroomsdatabasetest.cpp [License: LGPL(v2.0+)]
A +19 -0 src/core/localdatabase/autotests/e2eroomsdatabasetest.h [License: LGPL(v2.0+)]
https://invent.kde.org/network/ruqola/-/commit/6e88907b840cd7e9818de0e58c0af9489fb33722
diff --git a/src/core/localdatabase/autotests/CMakeLists.txt b/src/core/localdatabase/autotests/CMakeLists.txt
index 37f9f72ffc..d82041777c 100644
--- a/src/core/localdatabase/autotests/CMakeLists.txt
+++ b/src/core/localdatabase/autotests/CMakeLists.txt
@@ -35,6 +35,7 @@ add_ruqola_localdatabase_test(localroomsdatabasetest.cpp)
add_ruqola_localdatabase_test(localdatabasebasetest.cpp)
if(USE_E2E_SUPPORT)
add_ruqola_localdatabase_test(e2edatabasetest.cpp)
+ add_ruqola_localdatabase_test(e2eroomsdatabasetest.cpp)
endif()
add_ruqola_localdatabase_test(localroompendingtypedinfodatabasetest.cpp)
add_ruqola_localdatabase_test(localroomsubscriptionsdatabasetest.cpp)
diff --git a/src/core/localdatabase/autotests/e2eroomsdatabasetest.cpp b/src/core/localdatabase/autotests/e2eroomsdatabasetest.cpp
new file mode 100644
index 0000000000..38cc7794f6
--- /dev/null
+++ b/src/core/localdatabase/autotests/e2eroomsdatabasetest.cpp
@@ -0,0 +1,94 @@
+/*
+ SPDX-FileCopyrightText: 2025 Andro Ranogajec <[email protected]>
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "e2eroomsdatabasetest.h"
+#include "encryption/encryptionutils.h"
+#include "localdatabase/e2eroomsdatabase.h"
+#include <QTest>
+
+QTEST_GUILESS_MAIN(E2ERoomsDataBaseTest)
+using namespace Qt::Literals::StringLiterals;
+const auto testUser = QStringLiteral("testuser");
+const auto otherUser = QStringLiteral("otheruser");
+static QString accountName()
+{
+ return u"myAccount"_s;
+}
+using namespace Qt::Literals::StringLiterals;
+void E2ERoomsDataBaseTest::initTestCase()
+{
+ E2ERoomsDataBase store;
+ QVERIFY(store.deleteKey(accountName(), testUser));
+ QVERIFY(store.deleteKey(accountName(), otherUser));
+}
+
+void E2ERoomsDataBaseTest::shouldDefaultValues()
+{
+ E2ERoomsDataBase E2ERoomsDataBase;
+ QCOMPARE(E2ERoomsDataBase.schemaDatabaseStr(), u"CREATE TABLE E2EKEYS (userId TEXT PRIMARY KEY NOT NULL, encryptedPrivateKey BLOB, publicKey BLOB)"_s);
+}
+
+void E2ERoomsDataBaseTest::testSaveLoadDelete()
+{
+ E2ERoomsDataBase store;
+ const auto userId = testUser;
+ const auto rsaKeyPair = EncryptionUtils::generateRSAKey();
+ const auto priv = rsaKeyPair.publicKey;
+ const auto pub = rsaKeyPair.privateKey;
+
+ QVERIFY(store.saveKey(accountName(), userId, priv, pub));
+ QVERIFY(store.hasKey(accountName(), userId));
+
+ QByteArray loadedPriv;
+ QByteArray loadedPub;
+ QVERIFY(store.loadKey(accountName(), userId, loadedPriv, loadedPub));
+ QCOMPARE(loadedPriv, priv);
+ QCOMPARE(loadedPub, pub);
+
+ QVERIFY(store.deleteKey(accountName(), userId));
+ QVERIFY(!store.hasKey(accountName(), userId));
+}
+
+void E2ERoomsDataBaseTest::testOverwrite()
+{
+ E2ERoomsDataBase store;
+ const auto userId = testUser;
+ const auto rsaKeyPair1 = EncryptionUtils::generateRSAKey();
+ const auto rsaKeyPair2 = EncryptionUtils::generateRSAKey();
+
+ const auto priv1 = rsaKeyPair1.privateKey;
+ const auto pub1 = rsaKeyPair1.publicKey;
+ const auto priv2 = rsaKeyPair2.privateKey;
+ const auto pub2 = rsaKeyPair2.publicKey;
+
+ QVERIFY(store.saveKey(accountName(), userId, priv1, pub1));
+ {
+ QByteArray loadedPriv, loadedPub;
+ QVERIFY(store.loadKey(accountName(), userId, loadedPriv, loadedPub));
+ QCOMPARE(loadedPriv, priv1);
+ QCOMPARE(loadedPub, pub1);
+ }
+
+ QVERIFY(store.saveKey(accountName(), userId, priv2, pub2));
+ {
+ QByteArray loadedPriv, loadedPub;
+ QVERIFY(store.loadKey(accountName(), userId, loadedPriv, loadedPub));
+ QCOMPARE(loadedPriv, priv2);
+ QCOMPARE(loadedPub, pub2);
+ }
+ QVERIFY(store.deleteKey(accountName(), userId));
+}
+
+void E2ERoomsDataBaseTest::testNonExistentKey()
+{
+ E2ERoomsDataBase store;
+ const auto userId = otherUser;
+ QByteArray priv, pub;
+ QVERIFY(!store.hasKey(accountName(), userId));
+ QVERIFY(!store.loadKey(accountName(), userId, priv, pub));
+ QVERIFY(store.deleteKey(accountName(), userId));
+}
+
+#include "moc_e2eroomsdatabasetest.cpp"
diff --git a/src/core/localdatabase/autotests/e2eroomsdatabasetest.h b/src/core/localdatabase/autotests/e2eroomsdatabasetest.h
new file mode 100644
index 0000000000..62905894b4
--- /dev/null
+++ b/src/core/localdatabase/autotests/e2eroomsdatabasetest.h
@@ -0,0 +1,19 @@
+/*
+ SPDX-FileCopyrightText: 2025 Andro Ranogajec <[email protected]>
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QObject>
+
+class E2ERoomsDataBaseTest : public QObject
+{
+ Q_OBJECT
+private Q_SLOTS:
+ void initTestCase();
+ void testSaveLoadDelete();
+ void testOverwrite();
+ void testNonExistentKey();
+ void shouldDefaultValues();
+};