tests/auto/qnetworkreply/tst_qnetworkreply.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 22 79de32ba3296
equal deleted inserted replaced
18:2f34d5167611 19:fcece45ef507
   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();
   269     void ignoreSslErrorsList_data();
   273     void ignoreSslErrorsList_data();
   270     void ignoreSslErrorsList();
   274     void ignoreSslErrorsList();
   271     void ignoreSslErrorsListWithSlot_data();
   275     void ignoreSslErrorsListWithSlot_data();
   272     void ignoreSslErrorsListWithSlot();
   276     void ignoreSslErrorsListWithSlot();
   273 #endif
   277 #endif
       
   278 
       
   279     // NOTE: This test must be last!
       
   280     void parentingRepliesToTheApp();
   274 };
   281 };
   275 
   282 
   276 QT_BEGIN_NAMESPACE
   283 QT_BEGIN_NAMESPACE
   277 
   284 
   278 namespace QTest {
   285 namespace QTest {
  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"