diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-05-14 10:26:30 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-05-14 10:26:30 +0200 |
| commit | 79e2192b07694be32367feb8fad4d27e75cc87e7 (patch) | |
| tree | 34395ea611cc8647bc3c3b831b5d8bb18d6596ac | |
| parent | 6bf8bddcef99f4ebe9637bf20546562c81f70eb2 (diff) | |
| download | qxmpp-79e2192b07694be32367feb8fad4d27e75cc87e7.tar.gz | |
test QXmppDiscoveryIq
| -rw-r--r-- | src/base/QXmppDiscoveryIq.cpp | 45 | ||||
| -rw-r--r-- | tests/tests.cpp | 20 | ||||
| -rw-r--r-- | tests/tests.h | 1 |
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(); |
