aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-05-05 14:55:21 +0200
committerLNJ <lnj@kaidan.im>2019-10-20 17:01:35 +0200
commita4ac49e2e3c69ba2d42558fbfb52eaa931ca8e28 (patch)
tree06f7e0525816ffe61722f4bca248903d1b0a21ca /tests
parentc17e68b620c8f721d771aed5f2096597bc2cb0d1 (diff)
downloadqxmpp-a4ac49e2e3c69ba2d42558fbfb52eaa931ca8e28.tar.gz
Implement XEP-0363: HTTP File Upload: Error cases
This extends the QXmppStanza::Error by the error cases defined in XEP-0363: HTTP File Upload in version 0.9.0.
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmppstanza/tst_qxmppstanza.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/qxmppstanza/tst_qxmppstanza.cpp b/tests/qxmppstanza/tst_qxmppstanza.cpp
index 3b6c564e..22878557 100644
--- a/tests/qxmppstanza/tst_qxmppstanza.cpp
+++ b/tests/qxmppstanza/tst_qxmppstanza.cpp
@@ -32,6 +32,9 @@ class tst_QXmppStanza : public QObject
private slots:
void testExtendedAddress_data();
void testExtendedAddress();
+
+ void testErrorFileTooLarge();
+ void testErrorRetry();
};
void tst_QXmppStanza::testExtendedAddress_data()
@@ -74,5 +77,71 @@ void tst_QXmppStanza::testExtendedAddress()
serializePacket(address, xml);
}
+void tst_QXmppStanza::testErrorFileTooLarge()
+{
+ const QByteArray xml(
+ "<error type=\"modify\">"
+ "<not-acceptable xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>"
+ "<text xml:lang=\"en\" "
+ "xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">"
+ "File too large. The maximum file size is 20000 bytes"
+ "</text>"
+ "<file-too-large xmlns=\"urn:xmpp:http:upload:0\">"
+ "<max-file-size>20000</max-file-size>"
+ "</file-too-large>"
+ "</error>"
+ );
+
+ QXmppStanza::Error error;
+ parsePacket(error, xml);
+ QCOMPARE(error.type(), QXmppStanza::Error::Modify);
+ QCOMPARE(error.text(), QString("File too large. The maximum file size is "
+ "20000 bytes"));
+ QCOMPARE(error.condition(), QXmppStanza::Error::NotAcceptable);
+ QVERIFY(error.fileTooLarge());
+ QCOMPARE(error.maxFileSize(), 20000);
+ serializePacket(error, xml);
+
+ // test setters
+ error.setMaxFileSize(60000);
+ QCOMPARE(error.maxFileSize(), 60000);
+ error.setFileTooLarge(false);
+ QVERIFY(!error.fileTooLarge());
+
+ QXmppStanza::Error e2;
+ e2.setMaxFileSize(123000);
+ QVERIFY(e2.fileTooLarge());
+}
+
+void tst_QXmppStanza::testErrorRetry()
+{
+ const QByteArray xml(
+ "<error type=\"wait\">"
+ "<resource-constraint "
+ "xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>"
+ "<text xml:lang=\"en\" "
+ "xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">"
+ "Quota reached. You can only upload 5 files in 5 minutes"
+ "</text>"
+ "<retry xmlns=\"urn:xmpp:http:upload:0\" "
+ "stamp=\"2017-12-03T23:42:05Z\"/>"
+ "</error>"
+ );
+
+ QXmppStanza::Error error;
+ parsePacket(error, xml);
+ QCOMPARE(error.type(), QXmppStanza::Error::Wait);
+ QCOMPARE(error.text(), QString("Quota reached. You can only upload 5 "
+ "files in 5 minutes"));
+ QCOMPARE(error.condition(), QXmppStanza::Error::ResourceConstraint);
+ QCOMPARE(error.retryDate(), QDateTime(QDate(2017, 12, 03),
+ QTime(23, 42, 05), Qt::UTC));
+ serializePacket(error, xml);
+
+ // test setter
+ error.setRetryDate(QDateTime(QDate(1985, 10, 26), QTime(1, 35)));
+ QCOMPARE(error.retryDate(), QDateTime(QDate(1985, 10, 26), QTime(1, 35)));
+}
+
QTEST_MAIN(tst_QXmppStanza)
#include "tst_qxmppstanza.moc"