diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-05-11 11:00:27 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-05-11 11:00:27 +0200 |
commit | b25dc4141782776ff321400c204a27ab3adbcea6 (patch) | |
tree | f6523278592e03c8900f09ddda95f594d7d622b2 /tests | |
parent | ba3b71327577f3ea348e9511c1475cf48f821880 (diff) | |
parent | 0a9cbcf2894f4f9e621e0f5fb644d2b5e15ab2c7 (diff) | |
download | qtwebsockets-b25dc4141782776ff321400c204a27ab3adbcea6.tar.gz |
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
src/websockets/qwebsocket_p.cpp
Change-Id: Ia6434b282b4a0ee92e2b2a8664389f325bd0fcb0
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qwebsocket/tst_qwebsocket.cpp | 15 | ||||
-rw-r--r-- | tests/auto/qwebsocketserver/tst_qwebsocketserver.cpp | 34 | ||||
-rw-r--r-- | tests/manual/compliance/tst_compliance.cpp | 4 |
3 files changed, 50 insertions, 3 deletions
diff --git a/tests/auto/qwebsocket/tst_qwebsocket.cpp b/tests/auto/qwebsocket/tst_qwebsocket.cpp index ed400ef..2422012 100644 --- a/tests/auto/qwebsocket/tst_qwebsocket.cpp +++ b/tests/auto/qwebsocket/tst_qwebsocket.cpp @@ -50,6 +50,9 @@ public: QHostAddress hostAddress() const { return m_pWebSocketServer->serverAddress(); } quint16 port() const { return m_pWebSocketServer->serverPort(); } +Q_SIGNALS: + void newConnection(QUrl requestUrl); + private Q_SLOTS: void onNewConnection(); void processTextMessage(QString message); @@ -83,6 +86,8 @@ void EchoServer::onNewConnection() { QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection(); + Q_EMIT newConnection(pSocket->requestUrl()); + connect(pSocket, SIGNAL(textMessageReceived(QString)), this, SLOT(processTextMessage(QString))); connect(pSocket, SIGNAL(binaryMessageReceived(QByteArray)), this, SLOT(processBinaryMessage(QByteArray))); connect(pSocket, SIGNAL(disconnected()), this, SLOT(socketDisconnected())); @@ -407,20 +412,28 @@ void tst_QWebSocket::tst_sendTextMessage() QCOMPARE(socket.sendTextMessage(QStringLiteral("1234")), 0); QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected())); + QSignalSpy serverConnectedSpy(&echoServer, SIGNAL(newConnection(QUrl))); QSignalSpy textMessageReceived(&socket, SIGNAL(textMessageReceived(QString))); QSignalSpy textFrameReceived(&socket, SIGNAL(textFrameReceived(QString,bool))); QSignalSpy binaryMessageReceived(&socket, SIGNAL(binaryMessageReceived(QByteArray))); QSignalSpy binaryFrameReceived(&socket, SIGNAL(binaryFrameReceived(QByteArray,bool))); + QSignalSpy socketError(&socket, SIGNAL(error(QAbstractSocket::SocketError))); QUrl url = QUrl(QStringLiteral("ws://") + echoServer.hostAddress().toString() + QStringLiteral(":") + QString::number(echoServer.port())); + url.setPath("/segment/with spaces"); url.addQueryItem("queryitem", "with encoded characters"); socket.open(url); if (socketConnectedSpy.count() == 0) QVERIFY(socketConnectedSpy.wait(500)); + QCOMPARE(socketError.count(), 0); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); + QCOMPARE(serverConnectedSpy.count(), 1); + QList<QVariant> arguments = serverConnectedSpy.takeFirst(); + QUrl urlConnected = arguments.at(0).toUrl(); + QCOMPARE(urlConnected, url); socket.sendTextMessage(QStringLiteral("Hello world!")); @@ -428,7 +441,7 @@ void tst_QWebSocket::tst_sendTextMessage() QCOMPARE(textMessageReceived.count(), 1); QCOMPARE(binaryMessageReceived.count(), 0); QCOMPARE(binaryFrameReceived.count(), 0); - QList<QVariant> arguments = textMessageReceived.takeFirst(); + arguments = textMessageReceived.takeFirst(); QString messageReceived = arguments.at(0).toString(); QCOMPARE(messageReceived, QStringLiteral("Hello world!")); 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) diff --git a/tests/manual/compliance/tst_compliance.cpp b/tests/manual/compliance/tst_compliance.cpp index f929b16..6e8de62 100644 --- a/tests/manual/compliance/tst_compliance.cpp +++ b/tests/manual/compliance/tst_compliance.cpp @@ -105,7 +105,7 @@ void tst_ComplianceTest::runTestCase(int nbr, int total) qDebug() << "Executing test" << (nbr + 1) << "/" << total; QUrl url = m_url; - url.setPath(QStringLiteral("/runCase?")); + url.setPath(QStringLiteral("/runCase")); QUrlQuery query; query.addQueryItem(QStringLiteral("case"), QString::number(nbr + 1)); query.addQueryItem(QStringLiteral("agent"), QStringLiteral("QtWebSockets/1.0")); @@ -142,7 +142,7 @@ void tst_ComplianceTest::autobahnTest() QObject::disconnect(pWebSocket, &QWebSocket::textMessageReceived, 0, 0); runTestCases(0, numberOfTestCases); - url.setPath(QStringLiteral("/updateReports?")); + url.setPath(QStringLiteral("/updateReports")); QUrlQuery query; query.addQueryItem(QStringLiteral("agent"), QStringLiteral("QtWebSockets")); url.setQuery(query); |