Fix tcp tests
This commit is contained in:
parent
e902f46fd4
commit
4c0f6b6401
@ -226,6 +226,66 @@ QVariant BaseTest::injectWebSocketData(const QByteArray &data)
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariant BaseTest::invokeTcpSocketApiCall(const QString &method, const QVariantMap params, bool remainsConnected)
|
||||||
|
{
|
||||||
|
Q_UNUSED(remainsConnected)
|
||||||
|
|
||||||
|
QVariantMap request;
|
||||||
|
request.insert("id", m_commandCounter);
|
||||||
|
request.insert("method", method);
|
||||||
|
request.insert("params", params);
|
||||||
|
QJsonDocument jsonDoc = QJsonDocument::fromVariant(request);
|
||||||
|
|
||||||
|
QSslSocket *socket = new QSslSocket(this);
|
||||||
|
typedef void (QSslSocket:: *sslErrorsSignal)(const QList<QSslError> &);
|
||||||
|
QObject::connect(socket, static_cast<sslErrorsSignal>(&QSslSocket::sslErrors), this, &BaseTest::sslSocketSslErrors);
|
||||||
|
|
||||||
|
QSignalSpy spyConnection(socket, &QSslSocket::connected);
|
||||||
|
socket->connectToHostEncrypted(Engine::instance()->tcpSocketServer()->serverUrl().host(),
|
||||||
|
static_cast<quint16>(Engine::instance()->tcpSocketServer()->serverUrl().port()));
|
||||||
|
spyConnection.wait();
|
||||||
|
if (spyConnection.count() == 0) {
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
QSignalSpy dataSpy(socket, &QSslSocket::readyRead);
|
||||||
|
socket->write(jsonDoc.toJson(QJsonDocument::Compact) + '\n');
|
||||||
|
// FIXME: check why it waits the full time here
|
||||||
|
dataSpy.wait(500);
|
||||||
|
if (dataSpy.count() != 1) {
|
||||||
|
qWarning() << "No data received";
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray data = socket->readAll();
|
||||||
|
socket->close();
|
||||||
|
socket->deleteLater();
|
||||||
|
|
||||||
|
// Make sure the response ends with '}\n'
|
||||||
|
if (!data.endsWith("}\n")) {
|
||||||
|
qWarning() << "JSON data does not end with \"}\n\"";
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure the response it a valid JSON string
|
||||||
|
QJsonParseError error;
|
||||||
|
jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||||
|
if (error.error != QJsonParseError::NoError) {
|
||||||
|
qWarning() << "JSON parser error" << error.errorString();
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap response = jsonDoc.toVariant().toMap();
|
||||||
|
|
||||||
|
if (response.value("id").toInt() == m_commandCounter) {
|
||||||
|
m_commandCounter++;
|
||||||
|
return jsonDoc.toVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_commandCounter++;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
bool BaseTest::createRemoteConnection(const QString &token, const QString &nonce, QObject *parent)
|
bool BaseTest::createRemoteConnection(const QString &token, const QString &nonce, QObject *parent)
|
||||||
{
|
{
|
||||||
// Configure mock authenticator
|
// Configure mock authenticator
|
||||||
@ -339,65 +399,6 @@ bool BaseTest::createRemoteConnection(const QString &token, const QString &nonce
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseTest::initTestCase()
|
|
||||||
{
|
|
||||||
Q_UNUSED(remainsConnected)
|
|
||||||
|
|
||||||
QVariantMap request;
|
|
||||||
request.insert("id", m_commandCounter);
|
|
||||||
request.insert("method", method);
|
|
||||||
request.insert("params", params);
|
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromVariant(request);
|
|
||||||
|
|
||||||
QSslSocket *socket = new QSslSocket(this);
|
|
||||||
typedef void (QSslSocket:: *sslErrorsSignal)(const QList<QSslError> &);
|
|
||||||
QObject::connect(socket, static_cast<sslErrorsSignal>(&QSslSocket::sslErrors), this, &BaseTest::sslSocketSslErrors);
|
|
||||||
|
|
||||||
QSignalSpy spyConnection(socket, &QSslSocket::connected);
|
|
||||||
socket->connectToHostEncrypted(Engine::instance()->tcpSocketServer()->serverUrl().host(),
|
|
||||||
static_cast<quint16>(Engine::instance()->tcpSocketServer()->serverUrl().port()));
|
|
||||||
spyConnection.wait();
|
|
||||||
if (spyConnection.count() == 0) {
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
QSignalSpy dataSpy(socket, &QSslSocket::readyRead);
|
|
||||||
socket->write(jsonDoc.toJson(QJsonDocument::Compact) + '\n');
|
|
||||||
// FIXME: check why it waits the full time here
|
|
||||||
dataSpy.wait(500);
|
|
||||||
if (dataSpy.count() != 1) {
|
|
||||||
qWarning() << "No data received";
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray data = socket->readAll();
|
|
||||||
socket->close();
|
|
||||||
socket->deleteLater();
|
|
||||||
|
|
||||||
// Make sure the response ends with '}\n'
|
|
||||||
if (!data.endsWith("}\n")) {
|
|
||||||
qWarning() << "JSON data does not end with \"}\n\"";
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure the response it a valid JSON string
|
|
||||||
QJsonParseError error;
|
|
||||||
jsonDoc = QJsonDocument::fromJson(data, &error);
|
|
||||||
if (error.error != QJsonParseError::NoError) {
|
|
||||||
qWarning() << "JSON parser error" << error.errorString();
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap response = jsonDoc.toVariant().toMap();
|
|
||||||
|
|
||||||
if (response.value("id").toInt() == m_commandCounter) {
|
|
||||||
m_commandCounter++;
|
|
||||||
return jsonDoc.toVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_commandCounter++;
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant BaseTest::injectTcpSocketData(const QByteArray &data)
|
QVariant BaseTest::injectTcpSocketData(const QByteArray &data)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -82,6 +82,9 @@ protected:
|
|||||||
QVariant invokeWebSocketApiCall(const QString &method, const QVariantMap params = QVariantMap(), bool remainsConnected = true);
|
QVariant invokeWebSocketApiCall(const QString &method, const QVariantMap params = QVariantMap(), bool remainsConnected = true);
|
||||||
QVariant injectWebSocketData(const QByteArray &data);
|
QVariant injectWebSocketData(const QByteArray &data);
|
||||||
|
|
||||||
|
QVariant invokeTcpSocketApiCall(const QString &method, const QVariantMap params = QVariantMap(), bool remainsConnected = true);
|
||||||
|
QVariant injectTcpSocketData(const QByteArray &data);
|
||||||
|
|
||||||
bool createRemoteConnection(const QString &token, const QString &nonce, QObject *parent);
|
bool createRemoteConnection(const QString &token, const QString &nonce, QObject *parent);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|||||||
Reference in New Issue
Block a user