diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-09-02 23:35:11 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-09-03 16:16:14 +0200 |
| commit | 11db6293ced5c4665630ad3d728aba5751a3f658 (patch) | |
| tree | 93e8536de8daa881d8ee84b28b7bc5e0a3571572 /tests | |
| parent | 2ccc8d2d7033bb7180638ec8f980b904cfe3d686 (diff) | |
| download | qxmpp-11db6293ced5c4665630ad3d728aba5751a3f658.tar.gz | |
Add QXmppOmemoDeviceBundle
Co-authored-by: Germán Márquez Mejía <mancho@olomono.de>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmppomemodata/tst_qxmppomemodata.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/qxmppomemodata/tst_qxmppomemodata.cpp b/tests/qxmppomemodata/tst_qxmppomemodata.cpp index 23f65023..46bc2b44 100644 --- a/tests/qxmppomemodata/tst_qxmppomemodata.cpp +++ b/tests/qxmppomemodata/tst_qxmppomemodata.cpp @@ -22,6 +22,7 @@ * */ +#include "QXmppOmemoDeviceBundle.h" #include "QXmppOmemoDeviceElement.h" #include "QXmppOmemoDeviceList.h" @@ -40,6 +41,9 @@ private slots: void testIsOmemoDeviceList_data(); void testIsOmemoDeviceList(); void testOmemoDeviceList(); + void testIsOmemoDeviceBundle_data(); + void testIsOmemoDeviceBundle(); + void testOmemoDeviceBundle(); }; void tst_QXmppOmemoData::testIsOmemoDeviceElement_data() @@ -163,5 +167,73 @@ void tst_QXmppOmemoData::testOmemoDeviceList() serializePacket(deviceList2, xml); } +void tst_QXmppOmemoData::testIsOmemoDeviceBundle_data() +{ + QTest::addColumn<QByteArray>("xml"); + QTest::addColumn<bool>("isValid"); + + QTest::newRow("valid") + << QByteArrayLiteral("<bundle xmlns=\"urn:xmpp:omemo:1\"/>") + << true; + QTest::newRow("invalidTag") + << QByteArrayLiteral("<invalid xmlns=\"urn:xmpp:omemo:1\"/>") + << false; + QTest::newRow("invalidNamespace") + << QByteArrayLiteral("<bundle xmlns=\"invalid\"/>") + << false; +} + +void tst_QXmppOmemoData::testIsOmemoDeviceBundle() +{ + QFETCH(QByteArray, xml); + QFETCH(bool, isValid); + + QDomDocument doc; + QCOMPARE(doc.setContent(xml, true), true); + const QDomElement element = doc.documentElement(); + QCOMPARE(QXmppOmemoDeviceBundle::isOmemoDeviceBundle(element), isValid); +} + +void tst_QXmppOmemoData::testOmemoDeviceBundle() +{ + const QByteArray xml(QByteArrayLiteral( + "<bundle xmlns=\"urn:xmpp:omemo:1\">" + "<ik>a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK</ik>" + "<spk id=\"1\">Oy5TSG9vVVV4Wz9wUkUvI1lUXiVLIU5bbGIsUV0wRngK</spk>" + "<spks>PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K</spks>" + "<prekeys>" + "<pk id=\"1\">eDM2cnBiTmo4MmRGQ1RYTkZ0YnVwajJtNWdPdzkxZ0gK</pk>" + "<pk id=\"2\">aDRHdkcxNDNYUmJSNWVObnNWd0RCSzE1QlVKVGQ1RVEK</pk>" + "</prekeys>" + "</bundle>")); + + const QMap<uint32_t, QByteArray> expectedPublicPreKeys = { + { 1, QByteArray::fromBase64(QByteArrayLiteral("eDM2cnBiTmo4MmRGQ1RYTkZ0YnVwajJtNWdPdzkxZ0gK")) }, + { 2, QByteArray::fromBase64(QByteArrayLiteral("aDRHdkcxNDNYUmJSNWVObnNWd0RCSzE1QlVKVGQ1RVEK")) } + }; + + QXmppOmemoDeviceBundle deviceBundle1; + parsePacket(deviceBundle1, xml); + QCOMPARE(deviceBundle1.publicIdentityKey().toBase64(), QByteArrayLiteral("a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK")); + QCOMPARE(deviceBundle1.signedPublicPreKeyId(), uint32_t(1)); + QCOMPARE(deviceBundle1.signedPublicPreKey().toBase64(), QByteArrayLiteral("Oy5TSG9vVVV4Wz9wUkUvI1lUXiVLIU5bbGIsUV0wRngK")); + QCOMPARE(deviceBundle1.signedPublicPreKeySignature().toBase64(), QByteArrayLiteral("PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K")); + QCOMPARE(deviceBundle1.publicPreKeys(), expectedPublicPreKeys); + serializePacket(deviceBundle1, xml); + + QXmppOmemoDeviceBundle deviceBundle2; + deviceBundle2.setPublicIdentityKey(QByteArray::fromBase64(QByteArrayLiteral("a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK"))); + deviceBundle2.setSignedPublicPreKeyId(1); + deviceBundle2.setSignedPublicPreKey(QByteArray::fromBase64(QByteArrayLiteral("Oy5TSG9vVVV4Wz9wUkUvI1lUXiVLIU5bbGIsUV0wRngK"))); + deviceBundle2.setSignedPublicPreKeySignature(QByteArray::fromBase64(QByteArrayLiteral("PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K"))); + deviceBundle2.setPublicPreKeys(expectedPublicPreKeys); + QCOMPARE(deviceBundle2.publicIdentityKey().toBase64(), QByteArrayLiteral("a012U0R9WixWKUYhYipucnZOWG06akFOR3Q1NGNOOmUK")); + QCOMPARE(deviceBundle2.signedPublicPreKeyId(), uint32_t(1)); + QCOMPARE(deviceBundle2.signedPublicPreKey().toBase64(), QByteArrayLiteral("Oy5TSG9vVVV4Wz9wUkUvI1lUXiVLIU5bbGIsUV0wRngK")); + QCOMPARE(deviceBundle2.signedPublicPreKeySignature().toBase64(), QByteArrayLiteral("PTEoSk91VnRZSXBzcFlPXy4jZ3NKcGVZZ2d3YVJbVj8K")); + QCOMPARE(deviceBundle2.publicPreKeys(), expectedPublicPreKeys); + serializePacket(deviceBundle2, xml); +} + QTEST_MAIN(tst_QXmppOmemoData) #include "tst_qxmppomemodata.moc" |
