aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-04-07 18:10:42 +0200
committerLinus Jahn <lnj@kaidan.im>2022-04-09 22:27:12 +0200
commita42c11570b9bba3465fb79dc936de6cb3c7c48cb (patch)
tree0d5a417e9fa1972fd89797c074bbbef3113fd51f /tests
parentd306ed08aa9d681a0b51ebbf2ec2a00b70b61018 (diff)
downloadqxmpp-a42c11570b9bba3465fb79dc936de6cb3c7c48cb.tar.gz
PubSubManager: Add requestFeatures()
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
index 602e9c39..11c41dd2 100644
--- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
+++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp
@@ -26,6 +26,9 @@ using PSManager = QXmppPubSubManager;
using Affiliation = QXmppPubSubAffiliation;
using AffiliationType = QXmppPubSubAffiliation::Affiliation;
+const char *ns_pubsub = "http://jabber.org/protocol/pubsub";
+const char *ns_pubsub_auto_create = "http://jabber.org/protocol/pubsub#auto-create";
+
class TestEventManager : public QXmppPubSubEventManager
{
public:
@@ -67,6 +70,7 @@ class tst_QXmppPubSubManager : public QObject
private:
Q_SLOT void testDiscoFeatures();
+ Q_SLOT void testRequestFeatures();
Q_SLOT void testFetchNodes();
Q_SLOT void testFetchPepNodes();
Q_SLOT void testCreateNodes_data();
@@ -115,6 +119,105 @@ void tst_QXmppPubSubManager::testDiscoFeatures()
QCOMPARE(manager.discoveryFeatures(), QStringList { "http://jabber.org/protocol/pubsub#rsm" });
}
+void tst_QXmppPubSubManager::testRequestFeatures()
+{
+ auto [test, psManager] = Client();
+
+ auto future = psManager->requestFeatures("pubsub.shakespeare.lit");
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='pubsub.shakespeare.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='pubsub.shakespeare.lit' to='francisco@denmark.lit/barracks' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ expectFutureVariant<QXmppPubSubManager::InvalidServiceType>(future);
+
+ future = psManager->requestFeatures("pubsub.shakespeare.lit");
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='pubsub.shakespeare.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='pubsub.shakespeare.lit' to='francisco@denmark.lit/barracks' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='service'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ auto features = expectFutureVariant<QVector<QString>>(future);
+ QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create }));
+
+ future = psManager->requestFeatures("juliet@capulet.lit");
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='juliet@capulet.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='juliet@capulet.lit' to='juliet@capulet.lit/balcony' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='pep'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ features = expectFutureVariant<QVector<QString>>(future);
+ QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create }));
+
+ future = psManager->requestFeatures("juliet@capulet.lit", QXmppPubSubManager::PubSub);
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='juliet@capulet.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='juliet@capulet.lit' to='juliet@capulet.lit/balcony' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='pep'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ expectFutureVariant<QXmppPubSubManager::InvalidServiceType>(future);
+
+ future = psManager->requestFeatures("pubsub.shakespeare.lit", QXmppPubSubManager::PubSub);
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='pubsub.shakespeare.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='pubsub.shakespeare.lit' to='francisco@denmark.lit/barracks' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='service'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ features = expectFutureVariant<QVector<QString>>(future);
+ QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create }));
+
+ future = psManager->requestFeatures("pubsub.shakespeare.lit", QXmppPubSubManager::Pep);
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='pubsub.shakespeare.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='pubsub.shakespeare.lit' to='francisco@denmark.lit/barracks' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='service'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ expectFutureVariant<QXmppPubSubManager::InvalidServiceType>(future);
+
+ future = psManager->requestFeatures("juliet@capulet.lit", QXmppPubSubManager::Pep);
+ test.expect(QStringLiteral("<iq id='qxmpp1' to='juliet@capulet.lit' type='get'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'/>"
+ "</iq>"));
+ test.inject(QStringLiteral("<iq id='qxmpp1' from='juliet@capulet.lit' to='juliet@capulet.lit/balcony' type='result'>"
+ "<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='pubsub' type='pep'/>"
+ "<feature var='http://jabber.org/protocol/pubsub'/>"
+ "<feature var='http://jabber.org/protocol/pubsub#auto-create'/>"
+ "</query></iq>"));
+
+ features = expectFutureVariant<QVector<QString>>(future);
+ QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create }));
+}
+
void tst_QXmppPubSubManager::testFetchNodes()
{
auto [test, psManager] = Client();