summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/access
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-10-17 17:24:01 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2017-10-17 18:29:37 +0000
commit7e4571b7e71736cb87cdcaa7eee1c38b18b6f5ae (patch)
tree01291174cba7d1c73b65142626f5da758941f5de /tests/auto/network/access
parent66119a07e840daae61629762ad3763abd0c16754 (diff)
parent01afc8c810201b93a12fe7030344e03566d99001 (diff)
Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into refs/staging/5.10
Diffstat (limited to 'tests/auto/network/access')
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 542246ff2d..16f06b2d15 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -488,6 +488,8 @@ private Q_SLOTS:
void ioHttpUserVerifiedRedirect_data();
void ioHttpUserVerifiedRedirect();
void ioHttpCookiesDuringRedirect();
+ void ioHttpRedirect_data();
+ void ioHttpRedirect();
#ifndef QT_NO_SSL
void putWithServerClosingConnectionImmediately();
#endif
@@ -8438,6 +8440,44 @@ void tst_QNetworkReply::ioHttpCookiesDuringRedirect()
QVERIFY(target.receivedData.contains("\r\nCookie: hello=world\r\n"));
}
+void tst_QNetworkReply::ioHttpRedirect_data()
+{
+ QTest::addColumn<QString>("status");
+
+ QTest::addRow("301") << "301 Moved Permanently";
+ QTest::addRow("302") << "302 Found";
+ QTest::addRow("303") << "303 See Other";
+ QTest::addRow("305") << "305 Use Proxy";
+ QTest::addRow("307") << "307 Temporary Redirect";
+ QTest::addRow("308") << "308 Permanent Redirect";
+}
+
+void tst_QNetworkReply::ioHttpRedirect()
+{
+ QFETCH(QString, status);
+
+ MiniHttpServer target(httpEmpty200Response, false);
+ QUrl targetUrl("http://localhost/");
+ targetUrl.setPort(target.serverPort());
+
+ QString redirectReply = QStringLiteral("HTTP/1.1 %1\r\n"
+ "Content-Type: text/plain\r\n"
+ "location: %2\r\n"
+ "\r\n").arg(status, targetUrl.toString());
+ MiniHttpServer redirectServer(redirectReply.toLatin1(), false);
+ QUrl url("http://localhost/");
+ url.setPort(redirectServer.serverPort());
+ QNetworkRequest request(url);
+ auto oldRedirectPolicy = manager.redirectPolicy();
+ manager.setRedirectPolicy(QNetworkRequest::RedirectPolicy::NoLessSafeRedirectPolicy);
+ QNetworkReplyPtr reply(manager.get(request));
+ // Set policy back to what it was
+ manager.setRedirectPolicy(oldRedirectPolicy);
+
+ QCOMPARE(waitForFinish(reply), int(Success));
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+}
+
#ifndef QT_NO_SSL
class PutWithServerClosingConnectionImmediatelyHandler: public QObject