diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-03-08 20:11:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-08 20:11:22 +0100 |
| commit | 8efc8ea6aef64455bca04b11c3c4b0e20b532484 (patch) | |
| tree | 8eced49da7e56f833cfb8534f4ead5261493e67f /tests | |
| parent | 9a1134a415cd550dcb6efd35bd1cf98b8faa236e (diff) | |
| download | qxmpp-8efc8ea6aef64455bca04b11c3c4b0e20b532484.tar.gz | |
Implement MIX-MISC XEP-0407: Invitation message extension (#329)
This implements the message extension for MIX invitations from
XEP-0407: Mediated Information eXchange (MIX): Miscellaneous
Capabilities in version 0.1.2.
https://xmpp.org/extensions/xep-0407.html#usecase-user-invite
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | tests/qxmppmessage/tst_qxmppmessage.cpp | 25 | ||||
| -rw-r--r-- | tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp | 110 |
3 files changed, 136 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 313d16bc..a7d50ce0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,6 +29,7 @@ add_simple_test(qxmppiceconnection) add_simple_test(qxmppiq) add_simple_test(qxmppjingleiq) add_simple_test(qxmppmammanager) +add_simple_test(qxmppmixinvitation) add_simple_test(qxmppmixitem) add_simple_test(qxmppmessage) add_simple_test(qxmppmessagereceiptmanager) diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp index b1558dc9..5e75a116 100644 --- a/tests/qxmppmessage/tst_qxmppmessage.cpp +++ b/tests/qxmppmessage/tst_qxmppmessage.cpp @@ -25,6 +25,9 @@ #include "QXmppBitsOfBinaryContentId.h" #include "QXmppBitsOfBinaryDataList.h" #include "QXmppMessage.h" +#include "QXmppMixInvitation.h" + +#include <optional> #include "util.h" #include <QObject> @@ -63,6 +66,7 @@ private slots: void testStanzaIds(); void testSlashMe_data(); void testSlashMe(); + void testMixInvitation(); }; void tst_QXmppMessage::testBasic_data() @@ -1076,5 +1080,26 @@ void tst_QXmppMessage::testSlashMe() QCOMPARE(msg.slashMeCommandText(), actionText); } +void tst_QXmppMessage::testMixInvitation() +{ + const QByteArray xml( + "<message id=\"f5pp2toz\" to=\"cat@shakespeare.example\" from=\"hag66@shakespeare.example/UUID-h5z/0253\" type=\"normal\">" + "<body>Would you like to join the coven?</body>" + "<invitation xmlns=\"urn:xmpp:mix:misc:0\">" + "<inviter>hag66@shakespeare.example</inviter>" + "<invitee>cat@shakespeare.example</invitee>" + "<channel>coven@mix.shakespeare.example</channel>" + "<token>ABCDEF</token>" + "</invitation>" + "</message>"); + + QXmppMessage message; + parsePacket(message, xml); + + QVERIFY(message.mixInvitation()); + + serializePacket(message, xml); +} + QTEST_MAIN(tst_QXmppMessage) #include "tst_qxmppmessage.moc" diff --git a/tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp b/tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp new file mode 100644 index 00000000..f7ca98b4 --- /dev/null +++ b/tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2008-2021 The QXmpp developers + * + * Author: + * Melvin Keskin + * + * Source: + * https://github.com/qxmpp-project/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#include "QXmppMixInvitation.h" + +#include "util.h" +#include <QDomDocument> +#include <QObject> + +class tst_QXmppMixInvitation : public QObject +{ + Q_OBJECT + +private slots: + void testInvitation(); + void testIsInvitation(); +}; + +void tst_QXmppMixInvitation::testInvitation() +{ + const QByteArray xml( + "<invitation xmlns=\"urn:xmpp:mix:misc:0\">" + "<inviter>hag66@shakespeare.example</inviter>" + "<invitee>cat@shakespeare.example</invitee>" + "<channel>coven@mix.shakespeare.example</channel>" + "<token>ABCDEF</token>" + "</invitation>"); + + QXmppMixInvitation invitation; + parsePacket(invitation, xml); + + QCOMPARE(invitation.inviterJid(), QStringLiteral("hag66@shakespeare.example")); + QCOMPARE(invitation.inviteeJid(), QStringLiteral("cat@shakespeare.example")); + QCOMPARE(invitation.channelJid(), QStringLiteral("coven@mix.shakespeare.example")); + QCOMPARE(invitation.token(), QStringLiteral("ABCDEF")); + + serializePacket(invitation, xml); + + invitation.setInviterJid("hag66@shakespeare.example"); + invitation.setInviteeJid("cat@shakespeare.example"); + invitation.setChannelJid("coven@mix.shakespeare.example"); + invitation.setToken("ABCDEF"); + + QCOMPARE(invitation.inviterJid(), QStringLiteral("hag66@shakespeare.example")); + QCOMPARE(invitation.inviteeJid(), QStringLiteral("cat@shakespeare.example")); + QCOMPARE(invitation.channelJid(), QStringLiteral("coven@mix.shakespeare.example")); + QCOMPARE(invitation.token(), QStringLiteral("ABCDEF")); +} + +void tst_QXmppMixInvitation::testIsInvitation() +{ + QDomDocument doc; + QDomElement element; + + const QByteArray correctInvitationWithNamespace( + "<invitation xmlns=\"urn:xmpp:mix:misc:0\">" + "<inviter>hag66@shakespeare.example</inviter>" + "<invitee>cat@shakespeare.example</invitee>" + "<channel>coven@mix.shakespeare.example</channel>" + "<token>ABCDEF</token>" + "</invitation>"); + QCOMPARE(doc.setContent(correctInvitationWithNamespace, true), true); + element = doc.documentElement(); + QVERIFY(QXmppMixInvitation::isMixInvitation(element)); + + const QByteArray invitationWithoutNamespace( + "<invitation>" + "<inviter>hag66@shakespeare.example</inviter>" + "<invitee>cat@shakespeare.example</invitee>" + "<channel>coven@mix.shakespeare.example</channel>" + "<token>ABCDEF</token>" + "</invitation>"); + QCOMPARE(doc.setContent(invitationWithoutNamespace, true), true); + element = doc.documentElement(); + QVERIFY(!QXmppMixInvitation::isMixInvitation(element)); + + const QByteArray invitationWithIncorrectNamespace( + "<invitation xmlns=\"urn:xmpp:example\">" + "<inviter>hag66@shakespeare.example</inviter>" + "<invitee>cat@shakespeare.example</invitee>" + "<channel>coven@mix.shakespeare.example</channel>" + "<token>ABCDEF</token>" + "</invitation>"); + QCOMPARE(doc.setContent(invitationWithIncorrectNamespace, true), true); + element = doc.documentElement(); + QVERIFY(!QXmppMixInvitation::isMixInvitation(element)); +} + +QTEST_MAIN(tst_QXmppMixInvitation) +#include "tst_qxmppmixinvitation.moc" |
