aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-05-14 10:26:30 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-05-14 10:26:30 +0200
commit79e2192b07694be32367feb8fad4d27e75cc87e7 (patch)
tree34395ea611cc8647bc3c3b831b5d8bb18d6596ac
parent6bf8bddcef99f4ebe9637bf20546562c81f70eb2 (diff)
downloadqxmpp-79e2192b07694be32367feb8fad4d27e75cc87e7.tar.gz
test QXmppDiscoveryIq
-rw-r--r--src/base/QXmppDiscoveryIq.cpp45
-rw-r--r--tests/tests.cpp20
-rw-r--r--tests/tests.h1
3 files changed, 43 insertions, 23 deletions
diff --git a/src/base/QXmppDiscoveryIq.cpp b/src/base/QXmppDiscoveryIq.cpp
index 6e0d33d5..05e407b3 100644
--- a/src/base/QXmppDiscoveryIq.cpp
+++ b/src/base/QXmppDiscoveryIq.cpp
@@ -267,30 +267,29 @@ void QXmppDiscoveryIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
m_queryType == InfoQuery ? ns_disco_info : ns_disco_items);
helperToXmlAddAttribute(writer, "node", m_queryNode);
- foreach (const QString &feature, m_features)
- {
- writer->writeStartElement("feature");
- helperToXmlAddAttribute(writer, "var", feature);
- writer->writeEndElement();
- }
-
- foreach (const QXmppDiscoveryIq::Identity& identity, m_identities)
- {
- writer->writeStartElement("identity");
- helperToXmlAddAttribute(writer, "xml:lang", identity.language());
- helperToXmlAddAttribute(writer, "category", identity.category());
- helperToXmlAddAttribute(writer, "name", identity.name());
- helperToXmlAddAttribute(writer, "type", identity.type());
- writer->writeEndElement();
- }
+ if (m_queryType == InfoQuery) {
+ foreach (const QXmppDiscoveryIq::Identity& identity, m_identities) {
+ writer->writeStartElement("identity");
+ helperToXmlAddAttribute(writer, "xml:lang", identity.language());
+ helperToXmlAddAttribute(writer, "category", identity.category());
+ helperToXmlAddAttribute(writer, "name", identity.name());
+ helperToXmlAddAttribute(writer, "type", identity.type());
+ writer->writeEndElement();
+ }
- foreach (const QXmppDiscoveryIq::Item& item, m_items)
- {
- writer->writeStartElement("item");
- helperToXmlAddAttribute(writer, "jid", item.jid());
- helperToXmlAddAttribute(writer, "name", item.name());
- helperToXmlAddAttribute(writer, "node", item.node());
- writer->writeEndElement();
+ foreach (const QString &feature, m_features) {
+ writer->writeStartElement("feature");
+ helperToXmlAddAttribute(writer, "var", feature);
+ writer->writeEndElement();
+ }
+ } else {
+ foreach (const QXmppDiscoveryIq::Item& item, m_items) {
+ writer->writeStartElement("item");
+ helperToXmlAddAttribute(writer, "jid", item.jid());
+ helperToXmlAddAttribute(writer, "name", item.name());
+ helperToXmlAddAttribute(writer, "node", item.node());
+ writer->writeEndElement();
+ }
}
m_form.toXml(writer);
diff --git a/tests/tests.cpp b/tests/tests.cpp
index c4e22cf8..5aea4132 100644
--- a/tests/tests.cpp
+++ b/tests/tests.cpp
@@ -34,6 +34,7 @@
#include "QXmppBindIq.h"
#include "QXmppClient.h"
#include "QXmppCodec.h"
+#include "QXmppDiscoveryIq.h"
#include "QXmppJingleIq.h"
#include "QXmppMessage.h"
#include "QXmppNonSASLAuth.h"
@@ -333,6 +334,25 @@ void TestPackets::testBindResult()
serializePacket(bind, xml);
}
+void TestPackets::testDiscoveryIq()
+{
+ const QByteArray xml(
+ "<iq id=\"disco1\" from=\"benvolio@capulet.lit/230193\" type=\"result\">"
+ "<query xmlns=\"http://jabber.org/protocol/disco#info\">"
+ "<identity category=\"client\" name=\"Exodus 0.9.1\" type=\"pc\"/>"
+ "<feature var=\"http://jabber.org/protocol/caps\"/>"
+ "<feature var=\"http://jabber.org/protocol/disco#info\"/>"
+ "<feature var=\"http://jabber.org/protocol/disco#items\"/>"
+ "<feature var=\"http://jabber.org/protocol/muc\"/>"
+ "</query>"
+ "</iq>");
+
+ QXmppDiscoveryIq disco;
+ parsePacket(disco, xml);
+ QCOMPARE(disco.verificationString(), QByteArray::fromBase64("QgayPKawpkPSDYmwT/WM94uAlu0="));
+ serializePacket(disco, xml);
+}
+
void TestPackets::testMessage()
{
const QByteArray xml(
diff --git a/tests/tests.h b/tests/tests.h
index f54e9294..0b91a11e 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -50,6 +50,7 @@ private slots:
void testBindNoResource();
void testBindResource();
void testBindResult();
+ void testDiscoveryIq();
void testMessage();
void testMessageFull();
void testMessageAttention();