diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp index 7f2bfa4..82e2013 100644 --- a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp +++ b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp @@ -28,6 +28,7 @@ #include <QString> #include <QtTest> #include <QNetworkProxy> +#include <QTcpServer> #ifndef QT_NO_OPENSSL #include <QtNetwork/qsslpresharedkeyauthenticator.h> #include <QtNetwork/qsslcipher.h> @@ -110,6 +111,7 @@ private Q_SLOTS: void tst_maxPendingConnections(); void tst_serverDestroyedWhileSocketConnected(); void tst_scheme(); // qtbug-55927 + void tst_handleConnection(); }; tst_QWebSocketServer::tst_QWebSocketServer() @@ -563,6 +565,38 @@ void tst_QWebSocketServer::tst_scheme() #endif } +void tst_QWebSocketServer::tst_handleConnection() +{ + QWebSocketServer wsServer(QString(), QWebSocketServer::NonSecureMode); + QSignalSpy wsServerConnectionSpy(&wsServer, &QWebSocketServer::newConnection); + + QTcpServer tcpServer; + connect(&tcpServer, &QTcpServer::newConnection, + [&tcpServer, &wsServer]() { + wsServer.handleConnection(tcpServer.nextPendingConnection()); + }); + QVERIFY(tcpServer.listen()); + + QWebSocket webSocket; + QSignalSpy wsConnectedSpy(&webSocket, &QWebSocket::connected); + webSocket.open(QStringLiteral("ws://localhost:%1").arg(tcpServer.serverPort())); + QVERIFY(wsConnectedSpy.wait()); + + if (wsServerConnectionSpy.isEmpty()) + QVERIFY(wsServerConnectionSpy.wait()); + + QScopedPointer<QWebSocket> webServerSocket(wsServer.nextPendingConnection()); + QVERIFY(!webServerSocket.isNull()); + + QSignalSpy wsMessageReceivedSpy(webServerSocket.data(), &QWebSocket::textMessageReceived); + webSocket.sendTextMessage("dummy"); + wsMessageReceivedSpy.wait(); + + QCOMPARE(wsMessageReceivedSpy.count(), 1); + QList<QVariant> arguments = wsMessageReceivedSpy.takeFirst(); + QCOMPARE(arguments.first().toString(), QString("dummy")); +} + QTEST_MAIN(tst_QWebSocketServer) #include "tst_qwebsocketserver.moc" |