diff options
Diffstat (limited to 'tests/auto/websockets')
3 files changed, 51 insertions, 29 deletions
diff --git a/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp b/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp index 660d8eb..c1dd9a1 100644 --- a/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp +++ b/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp @@ -329,7 +329,7 @@ void tst_DataProcessor::goodTextFrame_data() //error C2308: concatenating mismatched strings QTest::newRow((QStringLiteral("Text frame containing Hello-") + QStringLiteral("\xC2\xB5\x40\xC3\x9F\xC3\xB6\xC3\xA4\xC3\xBC\xC3\xA0") + - QStringLiteral("\xC3\xA1-UTF-8!!")).toLatin1().constData()) + QStringLiteral("\xC3\xA1-UTF-8!!")).toUtf8().constData()) << QByteArray::fromHex("48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121") << 22; } diff --git a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp index 80bf19a..3ac47c4 100644 --- a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp +++ b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp @@ -52,6 +52,7 @@ public: Q_SIGNALS: void newConnection(QUrl requestUrl); + void newConnection(QNetworkRequest request); private Q_SLOTS: void onNewConnection(); @@ -87,6 +88,7 @@ void EchoServer::onNewConnection() QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection(); Q_EMIT newConnection(pSocket->requestUrl()); + Q_EMIT newConnection(pSocket->request()); connect(pSocket, SIGNAL(textMessageReceived(QString)), this, SLOT(processTextMessage(QString))); connect(pSocket, SIGNAL(binaryMessageReceived(QByteArray)), this, SLOT(processBinaryMessage(QByteArray))); @@ -140,6 +142,7 @@ private Q_SLOTS: void tst_sendTextMessage(); void tst_sendBinaryMessage(); void tst_errorString(); + void tst_openRequest(); void tst_moveToThread(); void tst_moveToThreadNoWarning(); #ifndef QT_NO_NETWORKPROXY @@ -427,11 +430,9 @@ void tst_QWebSocket::tst_sendTextMessage() socket.open(url); - if (socketConnectedSpy.count() == 0) - QVERIFY(socketConnectedSpy.wait(500)); + QTRY_COMPARE(socketConnectedSpy.count(), 1); 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); @@ -463,8 +464,7 @@ void tst_QWebSocket::tst_sendTextMessage() socket.open(QUrl(QStringLiteral("ws://") + echoServer.hostAddress().toString() + QStringLiteral(":") + QString::number(echoServer.port()))); - if (socketConnectedSpy.count() == 0) - QVERIFY(socketConnectedSpy.wait(500)); + QTRY_COMPARE(socketConnectedSpy.count(), 1); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); socket.sendTextMessage(QStringLiteral("Hello world!")); @@ -508,8 +508,7 @@ void tst_QWebSocket::tst_sendBinaryMessage() socket.open(QUrl(QStringLiteral("ws://") + echoServer.hostAddress().toString() + QStringLiteral(":") + QString::number(echoServer.port()))); - if (socketConnectedSpy.count() == 0) - QVERIFY(socketConnectedSpy.wait(500)); + QTRY_COMPARE(socketConnectedSpy.count(), 1); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); socket.sendBinaryMessage(QByteArrayLiteral("Hello world!")); @@ -539,8 +538,7 @@ void tst_QWebSocket::tst_sendBinaryMessage() socket.open(QUrl(QStringLiteral("ws://") + echoServer.hostAddress().toString() + QStringLiteral(":") + QString::number(echoServer.port()))); - if (socketConnectedSpy.count() == 0) - QVERIFY(socketConnectedSpy.wait(500)); + QTRY_COMPARE(socketConnectedSpy.count(), 1); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); socket.sendBinaryMessage(QByteArrayLiteral("Hello world!")); @@ -573,9 +571,7 @@ void tst_QWebSocket::tst_errorString() socket.open(QUrl(QStringLiteral("ws://someserver.on.mars:9999"))); - if (errorSpy.count() == 0) - errorSpy.wait(500); - QCOMPARE(errorSpy.count(), 1); + QTRY_COMPARE(errorSpy.count(), 1); QList<QVariant> arguments = errorSpy.takeFirst(); QAbstractSocket::SocketError socketError = qvariant_cast<QAbstractSocket::SocketError>(arguments.at(0)); @@ -583,6 +579,32 @@ void tst_QWebSocket::tst_errorString() QCOMPARE(socket.errorString(), QStringLiteral("Host not found")); } +void tst_QWebSocket::tst_openRequest() +{ + EchoServer echoServer; + + QWebSocket socket; + + QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected())); + QSignalSpy serverRequestSpy(&echoServer, SIGNAL(newConnection(QNetworkRequest))); + + QUrl url = QUrl(QStringLiteral("ws://") + echoServer.hostAddress().toString() + + QLatin1Char(':') + QString::number(echoServer.port())); + url.addQueryItem("queryitem", "with encoded characters"); + QNetworkRequest req(url); + req.setRawHeader("X-Custom-Header", "A custom header"); + socket.open(req); + + QTRY_COMPARE(socketConnectedSpy.count(), 1); + QTRY_COMPARE(serverRequestSpy.count(), 1); + QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); + QList<QVariant> arguments = serverRequestSpy.takeFirst(); + QNetworkRequest requestConnected = arguments.at(0).value<QNetworkRequest>(); + QCOMPARE(requestConnected.url(), req.url()); + QCOMPARE(requestConnected.rawHeader("X-Custom-Header"), req.rawHeader("X-Custom-Header")); + socket.close(); +} + class WebSocket : public QWebSocket { Q_OBJECT diff --git a/tests/auto/websockets/websocketframe/tst_websocketframe.cpp b/tests/auto/websockets/websocketframe/tst_websocketframe.cpp index 5db82d5..ecfcf3b 100644 --- a/tests/auto/websockets/websocketframe/tst_websocketframe.cpp +++ b/tests/auto/websockets/websocketframe/tst_websocketframe.cpp @@ -244,9 +244,9 @@ void tst_WebSocketFrame::tst_copyConstructorAndAssignment() void tst_WebSocketFrame::tst_goodFrames_data() { - QTest::addColumn<int>("rsv1"); - QTest::addColumn<int>("rsv2"); - QTest::addColumn<int>("rsv3"); + QTest::addColumn<bool>("rsv1"); + QTest::addColumn<bool>("rsv2"); + QTest::addColumn<bool>("rsv3"); QTest::addColumn<quint32>("mask"); QTest::addColumn<QWebSocketProtocol::OpCode>("opCode"); QTest::addColumn<bool>("isFinal"); @@ -256,54 +256,54 @@ void tst_WebSocketFrame::tst_goodFrames_data() QTest::addColumn<bool>("isContinuationFrame"); QTest::newRow("Non masked final text frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() << false << true << false; QTest::newRow("Non masked final binary frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeBinary << true << QByteArrayLiteral("\x00\x01\x02\x03\x04") << false << true << false; QTest::newRow("Non masked final text frame with no payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeText << true << QByteArray() << false << true << false; QTest::newRow("Non masked final binary frame with no payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeBinary << true << QByteArray() << false << true << false; QTest::newRow("Non masked final close frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeClose << true << QStringLiteral("Hello world!").toUtf8() << true << false << false; QTest::newRow("Non masked final close frame with no payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeClose << true << QByteArray() << true << false << false; QTest::newRow("Non masked final ping frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodePing << true << QStringLiteral("Hello world!").toUtf8() << true << false << false; QTest::newRow("Non masked final pong frame with no payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodePong << true << QByteArray() << true << false << false; QTest::newRow("Non masked final continuation frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeContinue << true << QStringLiteral("Hello world!").toUtf8() << false << true << true; QTest::newRow("Non masked non-final continuation frame with small payload") - << 0 << 0 << 0 + << false << false << false << 0U << QWebSocketProtocol::OpCodeContinue << false << QStringLiteral("Hello world!").toUtf8() << false << true << true; @@ -311,9 +311,9 @@ void tst_WebSocketFrame::tst_goodFrames_data() void tst_WebSocketFrame::tst_goodFrames() { - QFETCH(int, rsv1); - QFETCH(int, rsv2); - QFETCH(int, rsv3); + QFETCH(bool, rsv1); + QFETCH(bool, rsv2); + QFETCH(bool, rsv3); QFETCH(quint32, mask); QFETCH(QWebSocketProtocol::OpCode, opCode); QFETCH(bool, isFinal); |