From 7bdf1406410686a46bbfe95a2f7855a4a6beffdc Mon Sep 17 00:00:00 2001 From: Zam-mbpr Date: Fri, 15 May 2015 13:55:23 +0800 Subject: use XEP-0203 instead of XEP-0091, if there have XEP-0203. --- src/base/QXmppMessage.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/base') diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index 43675d9b..600fe47c 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -501,15 +501,6 @@ void QXmppMessage::parse(const QDomElement &element) } d->receiptRequested = element.firstChildElement("request").namespaceURI() == ns_message_receipts; - // XEP-0203: Delayed Delivery - QDomElement delayElement = element.firstChildElement("delay"); - if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery) - { - const QString str = delayElement.attribute("stamp"); - d->stamp = QXmppUtils::datetimeFromString(str); - d->stampType = DelayedDelivery; - } - // XEP-0224: Attention d->attentionRequested = element.firstChildElement("attention").namespaceURI() == ns_attention; @@ -575,6 +566,15 @@ void QXmppMessage::parse(const QDomElement &element) xElement = xElement.nextSiblingElement(); } setExtensions(extensions); + + // XEP-0203: Delayed Delivery + QDomElement delayElement = element.firstChildElement("delay"); + if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery) + { + const QString str = delayElement.attribute("stamp"); + d->stamp = QXmppUtils::datetimeFromString(str); + d->stampType = DelayedDelivery; + } } void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const -- cgit v1.2.3 From 4a350838696d32fcacfba05c5bf4e0e54ed02694 Mon Sep 17 00:00:00 2001 From: Zam-mbpr Date: Fri, 15 May 2015 17:18:15 +0800 Subject: [add] unit test [add] comment [update] code order to if else statement --- src/base/QXmppMessage.cpp | 32 ++++++++++++++++++-------------- tests/qxmppmessage/tst_qxmppmessage.cpp | 21 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 14 deletions(-) (limited to 'src/base') diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index 600fe47c..0ee4be20 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -501,6 +501,15 @@ void QXmppMessage::parse(const QDomElement &element) } d->receiptRequested = element.firstChildElement("request").namespaceURI() == ns_message_receipts; + // XEP-0203: Delayed Delivery + QDomElement delayElement = element.firstChildElement("delay"); + if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery) + { + const QString str = delayElement.attribute("stamp"); + d->stamp = QXmppUtils::datetimeFromString(str); + d->stampType = DelayedDelivery; + } + // XEP-0224: Attention d->attentionRequested = element.firstChildElement("attention").namespaceURI() == ns_attention; @@ -544,11 +553,15 @@ void QXmppMessage::parse(const QDomElement &element) { if (xElement.namespaceURI() == ns_legacy_delayed_delivery) { - // XEP-0091: Legacy Delayed Delivery - const QString str = xElement.attribute("stamp"); - d->stamp = QDateTime::fromString(str, "yyyyMMddThh:mm:ss"); - d->stamp.setTimeSpec(Qt::UTC); - d->stampType = LegacyDelayedDelivery; + // if XEP-0203 exists, XEP-0091 has no need to parse because XEP-0091 is no more standard protocol) + if (d->stamp.isNull()) + { + // XEP-0091: Legacy Delayed Delivery + const QString str = xElement.attribute("stamp"); + d->stamp = QDateTime::fromString(str, "yyyyMMddThh:mm:ss"); + d->stamp.setTimeSpec(Qt::UTC); + d->stampType = LegacyDelayedDelivery; + } } else if (xElement.namespaceURI() == ns_conference) { // XEP-0249: Direct MUC Invitations d->mucInvitationJid = xElement.attribute("jid"); @@ -566,15 +579,6 @@ void QXmppMessage::parse(const QDomElement &element) xElement = xElement.nextSiblingElement(); } setExtensions(extensions); - - // XEP-0203: Delayed Delivery - QDomElement delayElement = element.firstChildElement("delay"); - if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery) - { - const QString str = delayElement.attribute("stamp"); - d->stamp = QXmppUtils::datetimeFromString(str); - d->stampType = DelayedDelivery; - } } void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp index 1ec4f18b..6be13140 100644 --- a/tests/qxmppmessage/tst_qxmppmessage.cpp +++ b/tests/qxmppmessage/tst_qxmppmessage.cpp @@ -37,6 +37,7 @@ private slots: void testMessageReceipt(); void testDelay_data(); void testDelay(); + void testDelayWithMultipleStamp(); void testExtendedAddresses(); void testMucInvitation(); void testState_data(); @@ -216,6 +217,26 @@ void tst_QXmppMessage::testDelay() serializePacket(message, xml); } +void tst_QXmppMessage::testDelayWithMultipleStamp() +{ + // the XEP-0203 should override XEP-0091's value since XEP-0091 was no more standard protocol + QByteArray xml( + "" + "" + "" + ""); + QByteArray resultXml( + "" + "" + ""); + + QXmppMessage message; + parsePacket(message, xml); + qDebug() << message.stamp(); + QCOMPARE(message.stamp(), QDateTime(QDate(2010, 06, 29), QTime(8, 23, 6, 123), Qt::UTC)); + serializePacket(message, resultXml); +} + void tst_QXmppMessage::testExtendedAddresses() { QByteArray xml( -- cgit v1.2.3 From f2f506807bdd41795acaddc80430025fb9a62a7b Mon Sep 17 00:00:00 2001 From: Zam-mbpr Date: Thu, 4 Jun 2015 01:38:57 +0800 Subject: fix pubsub retract query fix issue #56 --- src/base/QXmppPubSubIq.cpp | 2 ++ tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'src/base') diff --git a/src/base/QXmppPubSubIq.cpp b/src/base/QXmppPubSubIq.cpp index 5560a1b3..3f311e9c 100644 --- a/src/base/QXmppPubSubIq.cpp +++ b/src/base/QXmppPubSubIq.cpp @@ -208,6 +208,7 @@ void QXmppPubSubIq::parseElementFromChild(const QDomElement &element) { case QXmppPubSubIq::ItemsQuery: case QXmppPubSubIq::PublishQuery: + case QXmppPubSubIq::RetractQuery: childElement = queryElement.firstChildElement("item"); while (!childElement.isNull()) { @@ -241,6 +242,7 @@ void QXmppPubSubIq::toXmlElementFromChild(QXmlStreamWriter *writer) const { case QXmppPubSubIq::ItemsQuery: case QXmppPubSubIq::PublishQuery: + case QXmppPubSubIq::RetractQuery: foreach (const QXmppPubSubItem &item, m_items) item.toXml(writer); break; diff --git a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp index 999efc59..d3065f2a 100644 --- a/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp +++ b/tests/qxmpppubsubiq/tst_qxmpppubsubiq.cpp @@ -33,6 +33,7 @@ private slots: void testItems(); void testItemsResponse(); void testPublish(); + void testRetractItem(); void testSubscribe(); void testSubscription(); void testSubscriptions(); @@ -135,6 +136,35 @@ void tst_QXmppPubSubIq::testPublish() serializePacket(iq, xml); } +void tst_QXmppPubSubIq::testRetractItem() +{ + const QByteArray xml( + "" + "" + "" + "" + "" + "" + ""); + + QXmppPubSubIq iq; + parsePacket(iq, xml); + QCOMPARE(iq.id(), QString("retract1")); + QCOMPARE(iq.to(), QLatin1String("pubsub.shakespeare.lit")); + QCOMPARE(iq.from(), QLatin1String("hamlet@denmark.lit/elsinore")); + QCOMPARE(iq.type(), QXmppIq::Set); + QCOMPARE(iq.queryType(), QXmppPubSubIq::RetractQuery); + QCOMPARE(iq.queryJid(), QString()); + QCOMPARE(iq.queryNode(), QLatin1String("princely_musings")); + QCOMPARE(iq.items().size(), 1); + QCOMPARE(iq.items().at(0).id(), QString("ae890ac52d0df67ed7cfdf51b644e901")); + serializePacket(iq, xml); +} + void tst_QXmppPubSubIq::testSubscribe() { const QByteArray xml( -- cgit v1.2.3