aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-09-02 23:37:24 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-03 16:16:14 +0200
commit12c63eddded9f02369bd4e569f62acfdd95cc723 (patch)
treede008ca97accd962c5d2ca54ba9302c2f952a0ea /tests
parent11db6293ced5c4665630ad3d728aba5751a3f658 (diff)
downloadqxmpp-12c63eddded9f02369bd4e569f62acfdd95cc723.tar.gz
Add QXmppOmemoEnvelope
Co-authored-by: Germán Márquez Mejía <mancho@olomono.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmppomemodata/tst_qxmppomemodata.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/qxmppomemodata/tst_qxmppomemodata.cpp b/tests/qxmppomemodata/tst_qxmppomemodata.cpp
index 46bc2b44..8a583622 100644
--- a/tests/qxmppomemodata/tst_qxmppomemodata.cpp
+++ b/tests/qxmppomemodata/tst_qxmppomemodata.cpp
@@ -25,6 +25,7 @@
#include "QXmppOmemoDeviceBundle.h"
#include "QXmppOmemoDeviceElement.h"
#include "QXmppOmemoDeviceList.h"
+#include "QXmppOmemoEnvelope.h"
#include "util.h"
#include <QObject>
@@ -44,6 +45,10 @@ private slots:
void testIsOmemoDeviceBundle_data();
void testIsOmemoDeviceBundle();
void testOmemoDeviceBundle();
+ void testIsOmemoEnvelope_data();
+ void testIsOmemoEnvelope();
+ void testOmemoEnvelope_data();
+ void testOmemoEnvelope();
};
void tst_QXmppOmemoData::testIsOmemoDeviceElement_data()
@@ -235,5 +240,75 @@ void tst_QXmppOmemoData::testOmemoDeviceBundle()
serializePacket(deviceBundle2, xml);
}
+void tst_QXmppOmemoData::testIsOmemoEnvelope_data()
+{
+ QTest::addColumn<QByteArray>("xml");
+ QTest::addColumn<bool>("isValid");
+
+ QTest::newRow("valid")
+ << QByteArrayLiteral("<key xmlns=\"urn:xmpp:omemo:1\"/>")
+ << true;
+ QTest::newRow("invalidTag")
+ << QByteArrayLiteral("<invalid xmlns=\"urn:xmpp:omemo:1\"/>")
+ << false;
+ QTest::newRow("invalidNamespace")
+ << QByteArrayLiteral("<key xmlns=\"invalid\"/>")
+ << false;
+}
+
+void tst_QXmppOmemoData::testIsOmemoEnvelope()
+{
+ QFETCH(QByteArray, xml);
+ QFETCH(bool, isValid);
+
+ QDomDocument doc;
+ QCOMPARE(doc.setContent(xml, true), true);
+ const QDomElement element = doc.documentElement();
+ QCOMPARE(QXmppOmemoEnvelope::isOmemoEnvelope(element), isValid);
+}
+
+void tst_QXmppOmemoData::testOmemoEnvelope_data()
+{
+ QTest::addColumn<QByteArray>("xml");
+ QTest::addColumn<uint32_t>("recipientDeviceId");
+ QTest::addColumn<bool>("isUsedForKeyExchange");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("keyAndHmac")
+ << QByteArrayLiteral("<key rid=\"1337\">PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K</key>")
+ << uint32_t(1337)
+ << false
+ << QByteArrayLiteral("PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K");
+ QTest::newRow("keyExchange")
+ << QByteArrayLiteral("<key rid=\"12321\" kex=\"true\">a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK</key>")
+ << uint32_t(12321)
+ << true
+ << QByteArrayLiteral("a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK");
+}
+
+void tst_QXmppOmemoData::testOmemoEnvelope()
+{
+ QFETCH(QByteArray, xml);
+ QFETCH(uint32_t, recipientDeviceId);
+ QFETCH(bool, isUsedForKeyExchange);
+ QFETCH(QByteArray, data);
+
+ QXmppOmemoEnvelope omemoEnvelope1;
+ parsePacket(omemoEnvelope1, xml);
+ QCOMPARE(omemoEnvelope1.recipientDeviceId(), recipientDeviceId);
+ QCOMPARE(omemoEnvelope1.isUsedForKeyExchange(), isUsedForKeyExchange);
+ QCOMPARE(omemoEnvelope1.data().toBase64(), data);
+ serializePacket(omemoEnvelope1, xml);
+
+ QXmppOmemoEnvelope omemoEnvelope2;
+ omemoEnvelope2.setRecipientDeviceId(recipientDeviceId);
+ omemoEnvelope2.setIsUsedForKeyExchange(isUsedForKeyExchange);
+ omemoEnvelope2.setData(QByteArray::fromBase64(data));
+ QCOMPARE(omemoEnvelope2.recipientDeviceId(), recipientDeviceId);
+ QCOMPARE(omemoEnvelope2.isUsedForKeyExchange(), isUsedForKeyExchange);
+ QCOMPARE(omemoEnvelope2.data().toBase64(), data);
+ serializePacket(omemoEnvelope2, xml);
+}
+
QTEST_MAIN(tst_QXmppOmemoData)
#include "tst_qxmppomemodata.moc"