aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-12-06 23:47:54 +0100
committerLNJ <lnj@kaidan.im>2019-12-08 23:08:44 +0100
commitd40b65c144a8f7042299bdcc387494ae01a60a46 (patch)
tree8f261fc1ebd816145c080b130a208f33e3aa2087 /tests
parente286527c1974ac334811aee35f0fe33dcace44d5 (diff)
downloadqxmpp-d40b65c144a8f7042299bdcc387494ae01a60a46.tar.gz
Refactor QXmppPubSubIq and add missing tests
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp108
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"