aboutsummaryrefslogtreecommitdiff
path: root/autotests
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2021-01-22 23:38:32 +0100
committerTobias Fella <fella@posteo.de>2021-12-01 21:34:52 +0100
commitd9286b1ad5516082bc9b40adaceb9485acf4a553 (patch)
treedd046ae5a9dc148b9a9422590eec160fbd1ddfc7 /autotests
parent3849a2466208a741165385f20150bddad59d2b8c (diff)
downloadlibquotient-d9286b1ad5516082bc9b40adaceb9485acf4a553.tar.gz
libquotient-d9286b1ad5516082bc9b40adaceb9485acf4a553.zip
Add tests
Diffstat (limited to 'autotests')
-rw-r--r--autotests/CMakeLists.txt1
-rw-r--r--autotests/testolmaccount.cpp65
-rw-r--r--autotests/testolmaccount.h19
3 files changed, 85 insertions, 0 deletions
diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
index 282ab036..07c22ad6 100644
--- a/autotests/CMakeLists.txt
+++ b/autotests/CMakeLists.txt
@@ -12,3 +12,4 @@ function(QUOTIENT_ADD_TEST)
endfunction()
quotient_add_test(NAME callcandidateseventtest)
+quotient_add_test(NAME testolmaccount)
diff --git a/autotests/testolmaccount.cpp b/autotests/testolmaccount.cpp
new file mode 100644
index 00000000..549f07ea
--- /dev/null
+++ b/autotests/testolmaccount.cpp
@@ -0,0 +1,65 @@
+// SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifdef Quotient_E2EE_ENABLED
+#include "testolmaccount.h"
+#include "olm/qolmaccount.h"
+
+void TestOlmAccount::pickleUnpickedTest()
+{
+ auto olmAccount = QOlmAccount::create().value();
+ auto identityKeys = std::get<IdentityKeys>(olmAccount.identityKeys());
+ auto pickled = std::get<QByteArray>(olmAccount.pickle(Unencrypted{}));
+ auto olmAccount2 = std::get<QOlmAccount>(QOlmAccount::unpickle(pickled, Unencrypted{}));
+ auto identityKeys2 = std::get<IdentityKeys>(olmAccount2.identityKeys());
+ QCOMPARE(identityKeys.curve25519, identityKeys2.curve25519);
+ QCOMPARE(identityKeys.ed25519, identityKeys2.ed25519);
+}
+
+void TestOlmAccount::identityKeysValid()
+{
+ auto olmAccount = QOlmAccount::create().value();
+ const auto identityKeys = std::get<IdentityKeys>(olmAccount.identityKeys());
+ const auto curve25519 = identityKeys.curve25519;
+ const auto ed25519 = identityKeys.ed25519;
+ // verify encoded keys length
+ QCOMPARE(curve25519.size(), 43);
+ QCOMPARE(ed25519.size(), 43);
+
+ // encoded as valid base64?
+ QVERIFY(QByteArray::fromBase64Encoding(curve25519).decodingStatus == QByteArray::Base64DecodingStatus::Ok);
+ QVERIFY(QByteArray::fromBase64Encoding(ed25519).decodingStatus == QByteArray::Base64DecodingStatus::Ok);
+}
+
+void TestOlmAccount::signatureValid()
+{
+ const auto olmAccount = QOlmAccount::create().value();
+ const auto message = "Hello world!";
+ const auto signature = std::get<QString>(olmAccount.sign(message));
+ QVERIFY(QByteArray::fromBase64Encoding(signature.toUtf8()).decodingStatus == QByteArray::Base64DecodingStatus::Ok);
+
+ //let utility = OlmUtility::new();
+ //let identity_keys = olm_account.parsed_identity_keys();
+ //let ed25519_key = identity_keys.ed25519();
+ //assert!(utility
+ // .ed25519_verify(&ed25519_key, message, &signature)
+ // .unwrap());
+}
+
+void TestOlmAccount::oneTimeKeysValid()
+{
+ const auto olmAccount = QOlmAccount::create().value();
+ const auto maxNumberOfOneTimeKeys = olmAccount.maxNumberOfOneTimeKeys();
+ QCOMPARE(100, maxNumberOfOneTimeKeys);
+
+ const auto oneTimeKeysEmpty = std::get<OneTimeKeys>(olmAccount.oneTimeKeys());
+ QVERIFY(oneTimeKeysEmpty.curve25519().isEmpty());
+
+ olmAccount.generateOneTimeKeys(20);
+ const auto oneTimeKeysFilled = std::get<OneTimeKeys>(olmAccount.oneTimeKeys());
+ QCOMPARE(20, oneTimeKeysFilled.curve25519().count());
+}
+
+QTEST_MAIN(TestOlmAccount)
+#endif
diff --git a/autotests/testolmaccount.h b/autotests/testolmaccount.h
new file mode 100644
index 00000000..c3297b5f
--- /dev/null
+++ b/autotests/testolmaccount.h
@@ -0,0 +1,19 @@
+// SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#ifdef Quotient_E2EE_ENABLED
+#include <QtTest/QtTest>
+
+class TestOlmAccount : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void pickleUnpickedTest();
+ void identityKeysValid();
+ void signatureValid();
+ void oneTimeKeysValid();
+ //void removeOneTimeKeys();
+};
+#endif