diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-15 09:10:47 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-15 09:10:47 +0200 |
commit | 0a9cbcf2894f4f9e621e0f5fb644d2b5e15ab2c7 (patch) | |
tree | 3281831d594bf04d87667b08c525bb4cc31921f2 /tests/auto/qwebsocketserver | |
parent | 0fcfc33963a48dee74eb971decbf89f35c3240f0 (diff) | |
parent | 5b469aa3c4d6b9c68feb9cf92d03614077518894 (diff) | |
download | qtwebsockets-0a9cbcf2894f4f9e621e0f5fb644d2b5e15ab2c7.tar.gz |
Merge remote-tracking branch 'origin/5.4' into 5.5v5.5.0-beta1
Change-Id: I29f5a2acb7ba0313d9e2ac2c005a988d208b617e
Diffstat (limited to 'tests/auto/qwebsocketserver')
-rw-r--r-- | tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp b/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp index 985b91c..c2ba842 100644 --- a/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp +++ b/tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp @@ -64,6 +64,7 @@ private Q_SLOTS: void tst_listening(); void tst_connectivity(); void tst_maxPendingConnections(); + void tst_serverDestroyedWhileSocketConnected(); }; tst_QWebSocketServer::tst_QWebSocketServer() @@ -350,6 +351,39 @@ void tst_QWebSocketServer::tst_maxPendingConnections() QCOMPARE(serverAcceptErrorSpy.count(), 0); } +void tst_QWebSocketServer::tst_serverDestroyedWhileSocketConnected() +{ + QWebSocketServer * server = new QWebSocketServer(QString(), QWebSocketServer::NonSecureMode); + QSignalSpy serverConnectionSpy(server, SIGNAL(newConnection())); + QSignalSpy corsAuthenticationSpy(server, + SIGNAL(originAuthenticationRequired(QWebSocketCorsAuthenticator*))); + QSignalSpy serverClosedSpy(server, SIGNAL(closed())); + + QWebSocket socket; + QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected())); + QSignalSpy socketDisconnectedSpy(&socket, SIGNAL(disconnected())); + + QVERIFY(server->listen()); + QCOMPARE(server->serverAddress(), QHostAddress(QHostAddress::Any)); + QCOMPARE(server->serverUrl(), QUrl(QStringLiteral("ws://") + QHostAddress(QHostAddress::LocalHost).toString() + + QStringLiteral(":").append(QString::number(server->serverPort())))); + + socket.open(server->serverUrl().toString()); + + if (socketConnectedSpy.count() == 0) + QVERIFY(socketConnectedSpy.wait()); + QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); + QCOMPARE(serverConnectionSpy.count(), 1); + QCOMPARE(corsAuthenticationSpy.count(), 1); + + QCOMPARE(serverClosedSpy.count(), 0); + + delete server; + + if (socketDisconnectedSpy.count() == 0) + QVERIFY(socketDisconnectedSpy.wait()); + QCOMPARE(socketDisconnectedSpy.count(), 1); +} QTEST_MAIN(tst_QWebSocketServer) |