diff options
| author | Linus Jahn <lnj@kaidan.im> | 2019-12-06 23:47:54 +0100 |
|---|---|---|
| committer | LNJ <lnj@kaidan.im> | 2019-12-08 23:08:44 +0100 |
| commit | d40b65c144a8f7042299bdcc387494ae01a60a46 (patch) | |
| tree | 8f261fc1ebd816145c080b130a208f33e3aa2087 /tests | |
| parent | e286527c1974ac334811aee35f0fe33dcace44d5 (diff) | |
| download | qxmpp-d40b65c144a8f7042299bdcc387494ae01a60a46.tar.gz | |
Refactor QXmppPubSubIq and add missing tests
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp | 108 |
1 files changed, 105 insertions, 3 deletions
diff --git a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp index 56c6814a..83f3ae41 100644 --- a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp +++ b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp @@ -37,6 +37,8 @@ private slots: void testSubscribe(); void testSubscription(); void testSubscriptions(); + void testIsPubSubIq_data(); + void testIsPubSubIq(); }; void tst_QXmppPubSubIq::testItems() @@ -62,6 +64,16 @@ void tst_QXmppPubSubIq::testItems() QCOMPARE(iq.queryJid(), QString()); QCOMPARE(iq.queryNode(), QLatin1String("storage:bookmarks")); serializePacket(iq, xml); + + iq = QXmppPubSubIq(); + iq.setId(QLatin1String("items1")); + iq.setTo(QLatin1String("pubsub.shakespeare.lit")); + iq.setFrom(QLatin1String("francisco@denmark.lit/barracks")); + iq.setType(QXmppIq::Get); + iq.setQueryType(QXmppPubSubIq::ItemsQuery); + iq.setQueryJid({}); + iq.setQueryNode(QLatin1String("storage:bookmarks")); + serializePacket(iq, xml); } void tst_QXmppPubSubIq::testItemsResponse() @@ -133,6 +145,41 @@ void tst_QXmppPubSubIq::testPublish() QCOMPARE(iq.queryType(), QXmppPubSubIq::PublishQuery); QCOMPARE(iq.queryJid(), QString()); QCOMPARE(iq.queryNode(), QLatin1String("storage:bookmarks")); + QCOMPARE(iq.items().first().contents().tagName(), QLatin1String("storage")); + serializePacket(iq, xml); + + // serialize using setters + + QXmppElement itemContentNick; + itemContentNick.setTagName(QStringLiteral("nick")); + itemContentNick.setValue(QStringLiteral("JC")); + + QXmppElement itemContentConference; + itemContentConference.setTagName(QStringLiteral("conference")); + itemContentConference.setAttribute(QStringLiteral("autojoin"), QStringLiteral("true")); + itemContentConference.setAttribute(QStringLiteral("jid"), QStringLiteral("theplay@conference.shakespeare.lit")); + itemContentConference.setAttribute(QStringLiteral("name"), QStringLiteral("The Play's the Thing")); + itemContentConference.appendChild(itemContentNick); + + QXmppElement itemContent; + itemContent.setTagName(QStringLiteral("storage")); + itemContent.setAttribute(QStringLiteral("xmlns"), QStringLiteral("storage:bookmarks")); + itemContent.appendChild(itemContentConference); + + QXmppPubSubItem item; + item.setId(QStringLiteral("current")); + item.setContents(itemContent); + + iq = QXmppPubSubIq(); + iq.setId(QLatin1String("items1")); + iq.setTo(QLatin1String("pubsub.shakespeare.lit")); + iq.setFrom(QLatin1String("francisco@denmark.lit/barracks")); + iq.setType(QXmppIq::Result); + iq.setQueryType(QXmppPubSubIq::PublishQuery); + iq.setQueryJid({}); + iq.setQueryNode(QLatin1String("storage:bookmarks")); + iq.setItems(QList<QXmppPubSubItem>() << item); + serializePacket(iq, xml); } @@ -161,7 +208,22 @@ void tst_QXmppPubSubIq::testRetractItem() QCOMPARE(iq.queryJid(), QString()); QCOMPARE(iq.queryNode(), QLatin1String("princely_musings")); QCOMPARE(iq.items().size(), 1); - QCOMPARE(iq.items().at(0).id(), QString("ae890ac52d0df67ed7cfdf51b644e901")); + QCOMPARE(iq.items().first().id(), QStringLiteral("ae890ac52d0df67ed7cfdf51b644e901")); + serializePacket(iq, xml); + + iq = QXmppPubSubIq(); + iq.setId(QLatin1String("retract1")); + iq.setTo(QLatin1String("pubsub.shakespeare.lit")); + iq.setFrom(QLatin1String("hamlet@denmark.lit/elsinore")); + iq.setType(QXmppIq::Set); + iq.setQueryType(QXmppPubSubIq::RetractQuery); + iq.setQueryJid({}); + iq.setQueryNode(QLatin1String("princely_musings")); + + QXmppPubSubItem item; + item.setId(QStringLiteral("ae890ac52d0df67ed7cfdf51b644e901")); + iq.setItems(QList<QXmppPubSubItem>() << item); + serializePacket(iq, xml); } @@ -201,8 +263,7 @@ void tst_QXmppPubSubIq::testSubscription() "<pubsub xmlns=\"http://jabber.org/protocol/pubsub\">" "<subscription jid=\"francisco@denmark.lit\"" " node=\"princely_musings\"" - " subid=\"ba49252aaa4f5d320c24d3766f0bdcade78c78d3\"" - " subscription=\"subscribed\"/>" + " subid=\"ba49252aaa4f5d320c24d3766f0bdcade78c78d3\"/>" "</pubsub>" "</iq>"); @@ -217,6 +278,17 @@ void tst_QXmppPubSubIq::testSubscription() QCOMPARE(iq.queryNode(), QLatin1String("princely_musings")); QCOMPARE(iq.subscriptionId(), QLatin1String("ba49252aaa4f5d320c24d3766f0bdcade78c78d3")); serializePacket(iq, xml); + + iq = QXmppPubSubIq(); + iq.setId(QLatin1String("sub1")); + iq.setTo(QLatin1String("francisco@denmark.lit/barracks")); + iq.setFrom(QLatin1String("pubsub.shakespeare.lit")); + iq.setType(QXmppIq::Result); + iq.setQueryType(QXmppPubSubIq::SubscriptionQuery); + iq.setQueryJid(QLatin1String("francisco@denmark.lit")); + iq.setQueryNode(QLatin1String("princely_musings")); + iq.setSubscriptionId(QLatin1String("ba49252aaa4f5d320c24d3766f0bdcade78c78d3")); + serializePacket(iq, xml); } void tst_QXmppPubSubIq::testSubscriptions() @@ -244,5 +316,35 @@ void tst_QXmppPubSubIq::testSubscriptions() serializePacket(iq, xml); } +void tst_QXmppPubSubIq::testIsPubSubIq_data() +{ + QTest::addColumn<QByteArray>("xml"); + QTest::addColumn<bool>("isValid"); + + QTest::newRow("valid-pubsub-iq") + << QByteArrayLiteral("<iq><pubsub xmlns=\"http://jabber.org/protocol/pubsub\"></pubsub></iq>") + << true; + + QTest::newRow("wrong-element") + << QByteArrayLiteral("<iq><pubsub2 xmlns=\"http://jabber.org/protocol/pubsub\"></pubsub2></iq>") + << false; + + QTest::newRow("wrong-namespace") + << QByteArrayLiteral("<iq><pubsub xmlns=\"urn:xmpp:pubsub2:0\"></pubsub></iq>") + << false; +} + +void tst_QXmppPubSubIq::testIsPubSubIq() +{ + QFETCH(QByteArray, xml); + QFETCH(bool, isValid); + + QDomDocument doc; + QCOMPARE(doc.setContent(xml, true), true); + QDomElement element = doc.documentElement(); + + QCOMPARE(QXmppPubSubIq::isPubSubIq(element), isValid); +} + QTEST_MAIN(tst_QXmppPubSubIq) #include "tst_qxmpppubsubiq.moc" |
