diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-04-07 18:10:42 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-04-09 22:27:12 +0200 |
| commit | a42c11570b9bba3465fb79dc936de6cb3c7c48cb (patch) | |
| tree | 0d5a417e9fa1972fd89797c074bbbef3113fd51f /tests | |
| parent | d306ed08aa9d681a0b51ebbf2ec2a00b70b61018 (diff) | |
| download | qxmpp-a42c11570b9bba3465fb79dc936de6cb3c7c48cb.tar.gz | |
PubSubManager: Add requestFeatures()
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp | 103 |
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(); |
