diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-10-16 19:59:49 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-16 19:59:49 +0200 |
| commit | 66e5f060abe831fa08a758b9de44b29bfec8b3ba (patch) | |
| tree | 0fab0a2b20d6563c3522172129f0c5520c6028b7 /tests | |
| parent | ecce762e109bc9d88f3f6b7925e8b33ffcc0f57d (diff) | |
| download | qxmpp-66e5f060abe831fa08a758b9de44b29bfec8b3ba.tar.gz | |
Implement XEP-0444: Message Reactions (#492)
https://xmpp.org/extensions/xep-0444.html
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | tests/qxmppmessage/tst_qxmppmessage.cpp | 26 | ||||
| -rw-r--r-- | tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp | 110 |
3 files changed, 137 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e43b50c6..3e55e4d9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -43,6 +43,7 @@ add_simple_test(qxmppmammanager) add_simple_test(qxmppmixinvitation) add_simple_test(qxmppmixitems) add_simple_test(qxmppmessage) +add_simple_test(qxmppmessagereaction) add_simple_test(qxmppmessagereceiptmanager) add_simple_test(qxmppmixiq) add_simple_test(qxmppnonsaslauthiq) diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp index 1aa2c673..ee964a4c 100644 --- a/tests/qxmppmessage/tst_qxmppmessage.cpp +++ b/tests/qxmppmessage/tst_qxmppmessage.cpp @@ -8,6 +8,7 @@ #include "QXmppBitsOfBinaryDataList.h" #include "QXmppEncryptedFileSource.h" #include "QXmppMessage.h" +#include "QXmppMessageReaction.h" #include "QXmppMixInvitation.h" #include "QXmppOutOfBandUrl.h" #include "QXmppTrustMessageElement.h" @@ -53,6 +54,7 @@ private slots: void testSlashMe(); void testMixInvitation(); void testTrustMessageElement(); + void testReaction(); void testE2eeFallbackBody(); void testFileSharing(); void testEncryptedFileSource(); @@ -1129,6 +1131,30 @@ void tst_QXmppMessage::testTrustMessageElement() QVERIFY(message2.trustMessageElement()); } +void tst_QXmppMessage::testReaction() +{ + const QByteArray xml( + "<message id=\"96d73204-a57a-11e9-88b8-4889e7820c76\" to=\"romeo@capulet.net/orchard\" type=\"chat\">" + "<store xmlns=\"urn:xmpp:hints\"/>" + "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\">" + "<reaction>🐢</reaction>" + "<reaction>👋</reaction>" + "</reactions>" + "</message>"); + + QXmppMessage message1; + QVERIFY(!message1.reaction()); + + parsePacket(message1, xml); + QVERIFY(message1.reaction()); + serializePacket(message1, xml); + + QXmppMessage message2; + message2.addHint(QXmppMessage::Store); + message2.setReaction(QXmppMessageReaction()); + QVERIFY(message2.reaction()); +} + void tst_QXmppMessage::testE2eeFallbackBody() { const QByteArray xml( diff --git a/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp b/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp new file mode 100644 index 00000000..8acbe6c9 --- /dev/null +++ b/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp @@ -0,0 +1,110 @@ +// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "QXmppMessageReaction.h" + +#include "util.h" +#include <QObject> + +class tst_QXmppMessageReaction : public QObject +{ + Q_OBJECT + +private slots: + void testIsMessageReaction_data(); + void testIsMessageReaction(); + void testMessageReaction(); + void testMessageReactionWithDuplicateEmojis(); + void testMessageReactionRemoval(); +}; + +void tst_QXmppMessageReaction::testIsMessageReaction_data() +{ + QTest::addColumn<QByteArray>("xml"); + QTest::addColumn<bool>("isValid"); + + QTest::newRow("valid") + << QByteArrayLiteral("<reactions xmlns=\"urn:xmpp:reactions:0\"/>") + << true; + QTest::newRow("invalidTag") + << QByteArrayLiteral("<invalid xmlns=\"urn:xmpp:reactions:0\"/>") + << false; + QTest::newRow("invalidNamespace") + << QByteArrayLiteral("<reactions xmlns=\"invalid\"/>") + << false; +} + +void tst_QXmppMessageReaction::testIsMessageReaction() +{ + QFETCH(QByteArray, xml); + QFETCH(bool, isValid); + + QCOMPARE(QXmppMessageReaction::isMessageReaction(xmlToDom(xml)), isValid); +} + +void tst_QXmppMessageReaction::testMessageReaction() +{ + const QByteArray xml( + "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\">" + "<reaction>🐢</reaction>" + "<reaction>👋</reaction>" + "</reactions>"); + + QXmppMessageReaction reaction1; + QVERIFY(reaction1.messageId().isEmpty()); + QVERIFY(reaction1.emojis().isEmpty()); + + parsePacket(reaction1, xml); + QCOMPARE(reaction1.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76")); + QCOMPARE(reaction1.emojis().at(0), QStringLiteral("🐢")); + QCOMPARE(reaction1.emojis().at(1), QStringLiteral("👋")); + + serializePacket(reaction1, xml); + + QXmppMessageReaction reaction2; + reaction2.setMessageId(QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76")); + reaction2.setEmojis({ QStringLiteral("🐢"), QStringLiteral("👋") }); + + QCOMPARE(reaction1.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76")); + QCOMPARE(reaction1.emojis().at(0), QStringLiteral("🐢")); + QCOMPARE(reaction1.emojis().at(1), QStringLiteral("👋")); + + serializePacket(reaction2, xml); +} + +void tst_QXmppMessageReaction::testMessageReactionWithDuplicateEmojis() +{ + const QByteArray xml( + "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\">" + "<reaction>🐢</reaction>" + "<reaction>👋</reaction>" + "<reaction>🐢</reaction>" + "<reaction>👋</reaction>" + "</reactions>"); + + QXmppMessageReaction reaction; + + parsePacket(reaction, xml); + QCOMPARE(reaction.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76")); + QCOMPARE(reaction.emojis().size(), 2); + QCOMPARE(reaction.emojis().at(0), QStringLiteral("🐢")); + QCOMPARE(reaction.emojis().at(1), QStringLiteral("👋")); +} + +void tst_QXmppMessageReaction::testMessageReactionRemoval() +{ + const QByteArray xml( + "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\"/>"); + + QXmppMessageReaction reaction; + + parsePacket(reaction, xml); + QCOMPARE(reaction.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76")); + QCOMPARE(reaction.emojis().size(), 0); + + serializePacket(reaction, xml); +} + +QTEST_MAIN(tst_QXmppMessageReaction) +#include "tst_qxmppmessagereaction.moc" |
