summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp')
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 74bdcfc5f0..12588c5e29 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -237,6 +237,7 @@ private slots:
void ephemeralServerKey();
void allowedProtocolNegotiation();
void pskServer();
+ void forwardReadChannelFinished();
#endif
void setEmptyDefaultConfiguration(); // this test should be last
@@ -3838,6 +3839,28 @@ void tst_QSslSocket::pskServer()
QCOMPARE(disconnectedSpy.count(), 1);
}
+void tst_QSslSocket::forwardReadChannelFinished()
+{
+ if (!QSslSocket::supportsSsl())
+ QSKIP("Needs SSL");
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ QSKIP("This test doesn't work via a proxy");
+
+ QSslSocket socket;
+ QSignalSpy readChannelFinishedSpy(&socket, &QAbstractSocket::readChannelFinished);
+ connect(&socket, &QSslSocket::encrypted, [&socket]() {
+ const auto data = QString("GET /ip HTTP/1.0\r\nHost: %1\r\n\r\nAccept: */*\r\n\r\n")
+ .arg(QtNetworkSettings::serverLocalName()).toUtf8();
+ socket.write(data);
+ });
+ connect(&socket, &QSslSocket::readChannelFinished,
+ &QTestEventLoop::instance(), &QTestEventLoop::exitLoop);
+ socket.connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443);
+ enterLoop(10);
+ QVERIFY(readChannelFinishedSpy.count());
+}
+
#endif // QT_NO_OPENSSL
#endif // QT_NO_SSL