aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-03-08 20:11:22 +0100
committerGitHub <noreply@github.com>2021-03-08 20:11:22 +0100
commit8efc8ea6aef64455bca04b11c3c4b0e20b532484 (patch)
tree8eced49da7e56f833cfb8534f4ead5261493e67f /tests
parent9a1134a415cd550dcb6efd35bd1cf98b8faa236e (diff)
downloadqxmpp-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.txt1
-rw-r--r--tests/qxmppmessage/tst_qxmppmessage.cpp25
-rw-r--r--tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp110
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"