request manager: outputting error

This commit is contained in:
Filip Bucek 2019-11-25 12:58:15 +01:00
parent 9fc60947eb
commit eddfc401b0
5 changed files with 42 additions and 2 deletions

View File

@ -144,3 +144,10 @@ QString Request::bearerAuthorization() const
}
} // core
QDebug operator <<(QDebug dbg, serversdk::Request *request)
{
dbg.noquote() << request->type() << request->url() << "data:" << request->requestData() << "header:" << request->networkReply()->rawHeaderList();
return dbg.maybeSpace();
}

View File

@ -79,3 +79,4 @@ private:
} // core
QDebug operator<<(QDebug dbg, serversdk::Request *request);

View File

@ -56,6 +56,8 @@ void RequestManager::processRequest(const std::shared_ptr<Request>& request)
// Add to map to get correct request when reply is used in signal
mRequestMap.insert(reply, request);
connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
this, &RequestManager::replyError);
connect(reply, &QNetworkReply::downloadProgress, this, &RequestManager::downloadProgress);
connect(reply, &QNetworkReply::finished, this, [=]() {
@ -119,6 +121,16 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
emit progresss(bytesReceived, bytesTotal);
}
void RequestManager::replyError(QNetworkReply::NetworkError code)
{
auto *reply = qobject_cast<QNetworkReply*>(sender());
Q_ASSERT(mRequestMap.contains(reply));
std::shared_ptr<Request> request = mRequestMap.value(reply);
qCWarning(sdknetwork) << request.get() << "reply error: " << code;
}
bool RequestManager::ignoreSsl() const
{
return mIgnoreSsl;

View File

@ -28,7 +28,7 @@ public:
private:
Q_SLOT void sslErrors(QNetworkReply *reply, const QList<QSslError> &sslErrors);
Q_SLOT void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
Q_SLOT void replyError(QNetworkReply::NetworkError code);
signals:
void downloadFinished(std::shared_ptr<Request> request);

View File

@ -30,6 +30,8 @@ private:
Q_SLOT void colnodAuthorization_test();
Q_SLOT void colnodGetUpdatedTokens_test();
Q_SLOT void notConncetion_test();
std::shared_ptr<Request> colnodLoginRequest();
};
@ -102,7 +104,25 @@ void RequestManagerTest::colnodGetUpdatedTokens_test()
QCOMPARE(tokensFinished.count(), 1 );
QVERIFY(tokensRequest->status() == 200);
qDebug() << tokensRequest->responseData();
//qDebug() << tokensRequest->responseData();
}
void RequestManagerTest::notConncetion_test()
{
serversdk::RequestManager reqMan;
reqMan.setIgnoreSsl(true);
auto tokensRequest = std::make_shared<serversdk::Request>("POST", "https://localhost:9999/TokenManager/getTokensUpdated", QByteArray("{}"));
//QTest::ignoreMessage(QtWarningMsg, QRegularExpression("POST.*error.*"));
reqMan.processRequest(tokensRequest);
QVERIFY(tokensRequest->networkReply());
QSignalSpy tokensFinished(tokensRequest.get(), &serversdk::Request::finished);
QVERIFY(tokensFinished.wait());
QCOMPARE(tokensFinished.count(), 1 );
QCOMPARE(tokensRequest->status(), 0);
//qDebug() << tokensRequest->responseData();
}