diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-04-07 18:54:54 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-04-09 22:27:12 +0200 |
| commit | 94f4a045d5f7994fbe000f41a3fd2f6bf4431511 (patch) | |
| tree | fe42800301a56f4109a11f1775fb7a37022b76b5 | |
| parent | a42c11570b9bba3465fb79dc936de6cb3c7c48cb (diff) | |
| download | qxmpp-94f4a045d5f7994fbe000f41a3fd2f6bf4431511.tar.gz | |
PubSubManager: Add requestPepFeatures()
| -rw-r--r-- | src/client/QXmppPubSubManager.cpp | 11 | ||||
| -rw-r--r-- | src/client/QXmppPubSubManager.h | 1 | ||||
| -rw-r--r-- | tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp | 20 |
3 files changed, 32 insertions, 0 deletions
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp index 00d537db..c27b5fcb 100644 --- a/src/client/QXmppPubSubManager.cpp +++ b/src/client/QXmppPubSubManager.cpp @@ -744,6 +744,17 @@ QFuture<QXmppPubSubManager::Result> QXmppPubSubManager::unsubscribeFromNode(cons } /// +/// \fn QXmppPubSubManager::requestPepFeatures() +/// +/// Requests all features of the own PEP service via service discovery. +/// +/// This is a convenience method equivalent to calling +/// QXmppPubSubManager::requestFeatures on the current account's bare JID. +/// +/// \warning THIS API IS NOT FINALIZED YET! +/// + +/// /// /// \fn QXmppPubSubManager::fetchPepNodes() /// diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h index 8c7a014b..9a4e192e 100644 --- a/src/client/QXmppPubSubManager.h +++ b/src/client/QXmppPubSubManager.h @@ -118,6 +118,7 @@ public: QFuture<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid); // PEP-specific (the PubSub service is the current account) + inline QFuture<FeaturesResult> requestPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); }; inline QFuture<NodesResult> fetchPepNodes() { return fetchNodes(client()->configuration().jidBare()); }; inline QFuture<Result> createPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); } inline QFuture<Result> createPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); } diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp index 11c41dd2..8eadc895 100644 --- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp +++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp @@ -71,6 +71,7 @@ class tst_QXmppPubSubManager : public QObject private: Q_SLOT void testDiscoFeatures(); Q_SLOT void testRequestFeatures(); + Q_SLOT void testRequestPepFeatures(); Q_SLOT void testFetchNodes(); Q_SLOT void testFetchPepNodes(); Q_SLOT void testCreateNodes_data(); @@ -218,6 +219,25 @@ void tst_QXmppPubSubManager::testRequestFeatures() QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create })); } +void tst_QXmppPubSubManager::testRequestPepFeatures() +{ + auto [test, psManager] = Client(); + + auto future = psManager->requestPepFeatures(); + test.expect(QStringLiteral("<iq id='qxmpp1' type='get'>" + "<query xmlns='http://jabber.org/protocol/disco#info'/>" + "</iq>")); + test.inject(QStringLiteral("<iq type='result' from='juliet@capulet.lit' to='juliet@capulet.lit/balcony' id='qxmpp1'>" + "<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>")); + + auto features = expectFutureVariant<QVector<QString>>(future); + QCOMPARE(features, (QVector<QString> { ns_pubsub, ns_pubsub_auto_create })); +} + void tst_QXmppPubSubManager::testFetchNodes() { auto [test, psManager] = Client(); |
