diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qhttpserverresponder/index.html | 2 | ||||
-rw-r--r-- | tests/auto/qhttpserverresponder/qhttpserverresponder.pro | 2 | ||||
-rw-r--r-- | tests/auto/qhttpserverresponder/tst_qhttpserverresponder.cpp | 52 |
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) |