summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qhttpserverresponder/index.html2
-rw-r--r--tests/auto/qhttpserverresponder/qhttpserverresponder.pro2
-rw-r--r--tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp52
3 files changed, 56 insertions, 0 deletions
diff --git a/tests/auto/qhttpserverresponder/index.html b/tests/auto/qhttpserverresponder/index.html
new file mode 100644
index 0000000..90531a4
--- /dev/null
+++ b/tests/auto/qhttpserverresponder/index.html
@@ -0,0 +1,2 @@
+<html>
+</html>
diff --git a/tests/auto/qhttpserverresponder/qhttpserverresponder.pro b/tests/auto/qhttpserverresponder/qhttpserverresponder.pro
index 0459f40..76ca847 100644
--- a/tests/auto/qhttpserverresponder/qhttpserverresponder.pro
+++ b/tests/auto/qhttpserverresponder/qhttpserverresponder.pro
@@ -3,3 +3,5 @@ TARGET = tst_qhttpserverresponder
SOURCES += tst_qhttpserverresponder.cpp
QT = httpserver testlib
+
+TESTDATA += *.html
diff --git a/tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp b/tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp
index 7a22b88..299b074 100644
--- a/tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp
+++ b/tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp
@@ -39,6 +39,8 @@
#include <QtHttpServer/qabstracthttpserver.h>
#include <QtCore/qjsondocument.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtemporaryfile.h>
#include <QtTest/qsignalspy.h>
#include <QtTest/qtest.h>
#include <QtNetwork/qnetworkaccessmanager.h>
@@ -63,6 +65,8 @@ private slots:
void writeStatusCode_data();
void writeStatusCode();
void writeJson();
+ void writeFile_data();
+ void writeFile();
};
#define qWaitForFinished(REPLY) QVERIFY(QSignalSpy(REPLY, &QNetworkReply::finished).wait())
@@ -152,6 +156,54 @@ void tst_QHttpServerResponder::writeJson()
QCOMPARE(QJsonDocument::fromJson(reply->readAll()), json);
}
+void tst_QHttpServerResponder::writeFile_data()
+{
+ QTest::addColumn<QIODevice *>("iodevice");
+ QTest::addColumn<int>("code");
+ QTest::addColumn<QString>("type");
+ QTest::addColumn<QString>("data");
+
+ QTest::addRow("index.html")
+ << qobject_cast<QIODevice *>(new QFile(QFINDTESTDATA("index.html"), this))
+ << 200
+ << "text/html"
+ << "<html>\n</html>\n";
+
+ QTest::addRow("index1.html - not found")
+ << qobject_cast<QIODevice *>(new QFile("./index1.html", this))
+ << 500
+ << "application/x-empty"
+ << "";
+
+ QTest::addRow("temporary file")
+ << qobject_cast<QIODevice *>(new QTemporaryFile(this))
+ << 200
+ << "text/html"
+ << "";
+}
+
+void tst_QHttpServerResponder::writeFile()
+{
+ QFETCH(QIODevice *, iodevice);
+ QFETCH(int, code);
+ QFETCH(QString, type);
+ QFETCH(QString, data);
+
+ QSignalSpy spyDestroyIoDevice(iodevice, &QObject::destroyed);
+
+ HttpServer server([&iodevice](QHttpServerResponder responder) {
+ responder.write(iodevice, "text/html");
+ });
+ auto reply = networkAccessManager->get(QNetworkRequest(server.url));
+ QTRY_VERIFY(reply->isFinished());
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader), type);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), code);
+ QCOMPARE(reply->readAll(), data);
+
+ QCOMPARE(spyDestroyIoDevice.count(), 1);
+}
+
QT_END_NAMESPACE
QTEST_MAIN(tst_QHttpServerResponder)