// SPDX-FileCopyrightText: 2021 Melvin Keskin // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppTrustMessageElement.h" #include "QXmppTrustMessageKeyOwner.h" #include "util.h" #include class tst_QXmppTrustMessages : public QObject { Q_OBJECT private: Q_SLOT void testIsTrustMessageKeyOwner_data(); Q_SLOT void testIsTrustMessageKeyOwner(); Q_SLOT void testTrustMessageKeyOwner_data(); Q_SLOT void testTrustMessageKeyOwner(); Q_SLOT void testIsTrustMessageElement_data(); Q_SLOT void testIsTrustMessageElement(); Q_SLOT void testTrustMessageElement(); }; void tst_QXmppTrustMessages::testIsTrustMessageKeyOwner_data() { QTest::addColumn("xml"); QTest::addColumn("isValid"); QTest::newRow("valid") << QByteArrayLiteral("") << true; QTest::newRow("invalidTag") << QByteArrayLiteral("") << false; QTest::newRow("invalidNamespace") << QByteArrayLiteral("") << false; } void tst_QXmppTrustMessages::testIsTrustMessageKeyOwner() { QFETCH(QByteArray, xml); QFETCH(bool, isValid); QCOMPARE(QXmppTrustMessageKeyOwner::isTrustMessageKeyOwner(xmlToDom(xml)), isValid); } void tst_QXmppTrustMessages::testTrustMessageKeyOwner_data() { QTest::addColumn("xml"); QTest::addColumn("keyOwnerJid"); QTest::addColumn>("trustedKeys"); QTest::addColumn>("distrustedKeys"); QTest::newRow("trustedKeys") << QByteArrayLiteral( "" "aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=" "IhpPjiKLchgrAG5cpSfTvdzPjZ5v6vTOluHEUehkgCA=" "") << QStringLiteral("alice@example.org") << QList({ QByteArray::fromBase64(QByteArrayLiteral("aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=")), QByteArray::fromBase64(QByteArrayLiteral("IhpPjiKLchgrAG5cpSfTvdzPjZ5v6vTOluHEUehkgCA=")) }) << QList(); QTest::newRow("distrustedKeys") << QByteArrayLiteral( "" "tCP1CI3pqSTVGzFYFyPYUMfMZ9Ck/msmfD0wH/VtJBM=" "2fhJtrgoMJxfLI3084/YkYh9paqiSiLFDVL2m0qAgX4=" "") << QStringLiteral("bob@example.com") << QList() << QList({ QByteArray::fromBase64(QByteArrayLiteral("tCP1CI3pqSTVGzFYFyPYUMfMZ9Ck/msmfD0wH/VtJBM=")), QByteArray::fromBase64(QByteArrayLiteral("2fhJtrgoMJxfLI3084/YkYh9paqiSiLFDVL2m0qAgX4=")) }); QTest::newRow("trustedAndDistrustedKeys") << QByteArrayLiteral( "" "YjVI04NcbTPvXLaA95RO84HPcSvyOgEZ2r5cTyUs0C8=" "tCP1CI3pqSTVGzFYFyPYUMfMZ9Ck/msmfD0wH/VtJBM=" "2fhJtrgoMJxfLI3084/YkYh9paqiSiLFDVL2m0qAgX4=" "") << QStringLiteral("bob@example.com") << QList({ QByteArray::fromBase64(QByteArrayLiteral("YjVI04NcbTPvXLaA95RO84HPcSvyOgEZ2r5cTyUs0C8=")) }) << QList({ QByteArray::fromBase64(QByteArrayLiteral("tCP1CI3pqSTVGzFYFyPYUMfMZ9Ck/msmfD0wH/VtJBM=")), QByteArray::fromBase64(QByteArrayLiteral("2fhJtrgoMJxfLI3084/YkYh9paqiSiLFDVL2m0qAgX4=")) }); } void tst_QXmppTrustMessages::testTrustMessageKeyOwner() { QFETCH(QByteArray, xml); QFETCH(QString, keyOwnerJid); QFETCH(QList, trustedKeys); QFETCH(QList, distrustedKeys); QXmppTrustMessageKeyOwner keyOwner1; parsePacket(keyOwner1, xml); QCOMPARE(keyOwner1.jid(), keyOwnerJid); QCOMPARE(keyOwner1.trustedKeys(), trustedKeys); QCOMPARE(keyOwner1.distrustedKeys(), distrustedKeys); serializePacket(keyOwner1, xml); QXmppTrustMessageKeyOwner keyOwner2; keyOwner2.setJid(keyOwnerJid); keyOwner2.setTrustedKeys(trustedKeys); keyOwner2.setDistrustedKeys(distrustedKeys); QCOMPARE(keyOwner2.jid(), keyOwnerJid); QCOMPARE(keyOwner2.trustedKeys(), trustedKeys); QCOMPARE(keyOwner2.distrustedKeys(), distrustedKeys); serializePacket(keyOwner2, xml); } void tst_QXmppTrustMessages::testIsTrustMessageElement_data() { QTest::addColumn("xml"); QTest::addColumn("isValid"); QTest::newRow("valid") << QByteArrayLiteral("") << true; QTest::newRow("invalidTag") << QByteArrayLiteral("") << false; QTest::newRow("invalidNamespace") << QByteArrayLiteral("") << false; } void tst_QXmppTrustMessages::testIsTrustMessageElement() { QFETCH(QByteArray, xml); QFETCH(bool, isValid); QCOMPARE(QXmppTrustMessageElement::isTrustMessageElement(xmlToDom(xml)), isValid); } void tst_QXmppTrustMessages::testTrustMessageElement() { const QByteArray xml(QByteArrayLiteral( "" "" "" "")); QXmppTrustMessageElement trustMessageElement1; parsePacket(trustMessageElement1, xml); QCOMPARE(trustMessageElement1.usage(), QStringLiteral("urn:xmpp:atm:1")); QCOMPARE(trustMessageElement1.encryption(), QStringLiteral("urn:xmpp:omemo:2")); QCOMPARE(trustMessageElement1.keyOwners().at(0).jid(), QStringLiteral("alice@example.org")); QCOMPARE(trustMessageElement1.keyOwners().at(1).jid(), QStringLiteral("bob@example.com")); serializePacket(trustMessageElement1, xml); QXmppTrustMessageKeyOwner keyOwner1; keyOwner1.setJid(QStringLiteral("alice@example.org")); QXmppTrustMessageKeyOwner keyOwner2; keyOwner2.setJid(QStringLiteral("bob@example.com")); QXmppTrustMessageElement trustMessageElement2; trustMessageElement2.setUsage(QStringLiteral("urn:xmpp:atm:1")); trustMessageElement2.setEncryption(QStringLiteral("urn:xmpp:omemo:2")); trustMessageElement2.setKeyOwners({ keyOwner1, keyOwner2 }); QCOMPARE(trustMessageElement2.usage(), QStringLiteral("urn:xmpp:atm:1")); QCOMPARE(trustMessageElement2.encryption(), QStringLiteral("urn:xmpp:omemo:2")); QCOMPARE(trustMessageElement2.keyOwners().at(0).jid(), QStringLiteral("alice@example.org")); QCOMPARE(trustMessageElement2.keyOwners().at(1).jid(), QStringLiteral("bob@example.com")); serializePacket(trustMessageElement2, xml); QXmppTrustMessageElement trustMessageElement3; trustMessageElement3.setUsage(QStringLiteral("urn:xmpp:atm:1")); trustMessageElement3.setEncryption(QStringLiteral("urn:xmpp:omemo:2")); trustMessageElement3.addKeyOwner(keyOwner1); trustMessageElement3.addKeyOwner(keyOwner2); QCOMPARE(trustMessageElement3.usage(), QStringLiteral("urn:xmpp:atm:1")); QCOMPARE(trustMessageElement3.encryption(), QStringLiteral("urn:xmpp:omemo:2")); QCOMPARE(trustMessageElement3.keyOwners().at(0).jid(), QStringLiteral("alice@example.org")); QCOMPARE(trustMessageElement3.keyOwners().at(1).jid(), QStringLiteral("bob@example.com")); serializePacket(trustMessageElement3, xml); } QTEST_MAIN(tst_QXmppTrustMessages) #include "tst_qxmpptrustmessages.moc"