summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp')
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 76c9dd8361..30b41da515 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -393,6 +393,7 @@ private Q_SLOTS:
void ignoreSslErrorsListWithSlot_data();
void ignoreSslErrorsListWithSlot();
void encrypted();
+ void abortOnEncrypted();
void sslConfiguration_data();
void sslConfiguration();
#ifdef QT_BUILD_INTERNAL
@@ -6365,6 +6366,37 @@ void tst_QNetworkReply::encrypted()
reply->deleteLater();
}
+void tst_QNetworkReply::abortOnEncrypted()
+{
+ SslServer server;
+ server.listen();
+ if (!server.isListening())
+ QSKIP("Server fails to listen. Skipping since QTcpServer is covered in another test.");
+
+ server.connect(&server, &SslServer::newEncryptedConnection, [&server]() {
+ connect(server.socket, &QTcpSocket::readyRead, server.socket, []() {
+ // This slot must not be invoked!
+ QVERIFY(false);
+ });
+ });
+
+ QNetworkAccessManager nm;
+ QNetworkReply *reply = nm.get(QNetworkRequest(QUrl(QString("https://localhost:%1").arg(server.serverPort()))));
+ reply->ignoreSslErrors();
+
+ connect(reply, &QNetworkReply::encrypted, [reply, &nm]() {
+ reply->abort();
+ nm.clearConnectionCache();
+ });
+
+ QSignalSpy spyEncrypted(reply, &QNetworkReply::encrypted);
+ QTRY_COMPARE(spyEncrypted.count(), 1);
+
+ // Wait for the socket to be closed again in order to be sure QTcpSocket::readyRead would have been emitted.
+ QTRY_VERIFY(server.socket != nullptr);
+ QTRY_COMPARE(server.socket->state(), QAbstractSocket::UnconnectedState);
+}
+
void tst_QNetworkReply::sslConfiguration()
{
QNetworkRequest request(QUrl("https://" + QtNetworkSettings::httpServerName() + "/index.html"));