197 void ioGetFromHttpsWithIgnoreSslErrors(); |
197 void ioGetFromHttpsWithIgnoreSslErrors(); |
198 void ioGetFromHttpsWithSslHandshakeError(); |
198 void ioGetFromHttpsWithSslHandshakeError(); |
199 #endif |
199 #endif |
200 void ioGetFromHttpBrokenServer_data(); |
200 void ioGetFromHttpBrokenServer_data(); |
201 void ioGetFromHttpBrokenServer(); |
201 void ioGetFromHttpBrokenServer(); |
|
202 void ioGetFromHttpStatus100_data(); |
|
203 void ioGetFromHttpStatus100(); |
|
204 void ioGetFromHttpNoHeaders_data(); |
|
205 void ioGetFromHttpNoHeaders(); |
202 void ioGetFromHttpWithCache_data(); |
206 void ioGetFromHttpWithCache_data(); |
203 void ioGetFromHttpWithCache(); |
207 void ioGetFromHttpWithCache(); |
204 |
208 |
205 void ioGetWithManyProxies_data(); |
209 void ioGetWithManyProxies_data(); |
206 void ioGetWithManyProxies(); |
210 void ioGetWithManyProxies(); |
2072 |
2079 |
2073 QCOMPARE(reply->url(), request.url()); |
2080 QCOMPARE(reply->url(), request.url()); |
2074 QVERIFY(reply->error() != QNetworkReply::NoError); |
2081 QVERIFY(reply->error() != QNetworkReply::NoError); |
2075 } |
2082 } |
2076 |
2083 |
|
2084 void tst_QNetworkReply::ioGetFromHttpStatus100_data() |
|
2085 { |
|
2086 QTest::addColumn<QByteArray>("dataToSend"); |
|
2087 QTest::newRow("normal") << QByteArray("HTTP/1.1 100 Continue\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"); |
|
2088 QTest::newRow("minimal") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"); |
|
2089 QTest::newRow("minimal2") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\r\n\r\n"); |
|
2090 QTest::newRow("minimal3") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\n\n"); |
|
2091 QTest::newRow("with_headers") << QByteArray("HTTP/1.1 100 Continue\r\nBla: x\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"); |
|
2092 QTest::newRow("with_headers2") << QByteArray("HTTP/1.1 100 Continue\nBla: x\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"); |
|
2093 } |
|
2094 |
|
2095 void tst_QNetworkReply::ioGetFromHttpStatus100() |
|
2096 { |
|
2097 QFETCH(QByteArray, dataToSend); |
|
2098 MiniHttpServer server(dataToSend); |
|
2099 server.doClose = true; |
|
2100 |
|
2101 QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); |
|
2102 QNetworkReplyPtr reply = manager.get(request); |
|
2103 |
|
2104 connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); |
|
2105 QTestEventLoop::instance().enterLoop(10); |
|
2106 QVERIFY(!QTestEventLoop::instance().timeout()); |
|
2107 |
|
2108 QCOMPARE(reply->url(), request.url()); |
|
2109 QCOMPARE(reply->error(), QNetworkReply::NoError); |
|
2110 QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); |
|
2111 QVERIFY(reply->rawHeader("bla").isNull()); |
|
2112 } |
|
2113 |
|
2114 void tst_QNetworkReply::ioGetFromHttpNoHeaders_data() |
|
2115 { |
|
2116 QTest::addColumn<QByteArray>("dataToSend"); |
|
2117 QTest::newRow("justStatus+noheaders+disconnect") << QByteArray("HTTP/1.0 200 OK\r\n\r\n"); |
|
2118 } |
|
2119 |
|
2120 void tst_QNetworkReply::ioGetFromHttpNoHeaders() |
|
2121 { |
|
2122 QFETCH(QByteArray, dataToSend); |
|
2123 MiniHttpServer server(dataToSend); |
|
2124 server.doClose = true; |
|
2125 |
|
2126 QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); |
|
2127 QNetworkReplyPtr reply = manager.get(request); |
|
2128 |
|
2129 connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); |
|
2130 QTestEventLoop::instance().enterLoop(10); |
|
2131 QVERIFY(!QTestEventLoop::instance().timeout()); |
|
2132 |
|
2133 QCOMPARE(reply->url(), request.url()); |
|
2134 QCOMPARE(reply->error(), QNetworkReply::NoError); |
|
2135 QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); |
|
2136 } |
|
2137 |
2077 void tst_QNetworkReply::ioGetFromHttpWithCache_data() |
2138 void tst_QNetworkReply::ioGetFromHttpWithCache_data() |
2078 { |
2139 { |
2079 qRegisterMetaType<MyMemoryCache::CachedContent>(); |
2140 qRegisterMetaType<MyMemoryCache::CachedContent>(); |
2080 QTest::addColumn<QByteArray>("dataToSend"); |
2141 QTest::addColumn<QByteArray>("dataToSend"); |
2081 QTest::addColumn<QString>("body"); |
2142 QTest::addColumn<QString>("body"); |
3771 QCoreApplication::instance()->processEvents(); |
3832 QCoreApplication::instance()->processEvents(); |
3772 |
3833 |
3773 for (int i = 0; i < 10; i++) { |
3834 for (int i = 0; i < 10; i++) { |
3774 QNetworkRequest request (QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/" + QString::number(i))); |
3835 QNetworkRequest request (QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/" + QString::number(i))); |
3775 QNetworkReply* reply = manager.get(request); |
3836 QNetworkReply* reply = manager.get(request); |
3776 reply->setParent(this); |
3837 reply->setParent(&server); |
3777 } |
3838 } |
3778 |
3839 |
3779 int pendingConnectionCount = 0; |
3840 int pendingConnectionCount = 0; |
3780 QTime time; |
3841 QTime time; |
3781 time.start(); |
3842 time.start(); |
4045 QCOMPARE(reply->error(), expectedNetworkError); |
4106 QCOMPARE(reply->error(), expectedNetworkError); |
4046 } |
4107 } |
4047 |
4108 |
4048 #endif // QT_NO_OPENSSL |
4109 #endif // QT_NO_OPENSSL |
4049 |
4110 |
|
4111 // NOTE: This test must be last testcase in tst_qnetworkreply! |
|
4112 void tst_QNetworkReply::parentingRepliesToTheApp() |
|
4113 { |
|
4114 QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName())); |
|
4115 manager.get(request)->setParent(this); // parent to this object |
|
4116 manager.get(request)->setParent(qApp); // parent to the app |
|
4117 } |
|
4118 |
4050 QTEST_MAIN(tst_QNetworkReply) |
4119 QTEST_MAIN(tst_QNetworkReply) |
4051 #include "tst_qnetworkreply.moc" |
4120 #include "tst_qnetworkreply.moc" |