aboutsummaryrefslogtreecommitdiff
path: root/tests/qxmppmixinvitation
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/qxmppmixinvitation
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/qxmppmixinvitation')
-rw-r--r--tests/qxmppmixinvitation/tst_qxmppmixinvitation.cpp110
1 files changed, 110 insertions, 0 deletions
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"