From eddfc401b0282d53ba7289bb5c3ffa41e0287dda Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Mon, 25 Nov 2019 12:58:15 +0100 Subject: [PATCH] request manager: outputting error --- src/serversdk/request.cpp | 7 +++++++ src/serversdk/request.h | 1 + src/serversdk/requestmanager.cpp | 12 ++++++++++++ src/serversdk/requestmanager.h | 2 +- test/auto/request/tst_requestmanager.cpp | 22 +++++++++++++++++++++- 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/serversdk/request.cpp b/src/serversdk/request.cpp index 5548a5d..a41313a 100644 --- a/src/serversdk/request.cpp +++ b/src/serversdk/request.cpp @@ -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(); +} diff --git a/src/serversdk/request.h b/src/serversdk/request.h index 06f081a..f423c75 100644 --- a/src/serversdk/request.h +++ b/src/serversdk/request.h @@ -79,3 +79,4 @@ private: } // core +QDebug operator<<(QDebug dbg, serversdk::Request *request); diff --git a/src/serversdk/requestmanager.cpp b/src/serversdk/requestmanager.cpp index a08b359..85b39d4 100644 --- a/src/serversdk/requestmanager.cpp +++ b/src/serversdk/requestmanager.cpp @@ -56,6 +56,8 @@ void RequestManager::processRequest(const std::shared_ptr& request) // Add to map to get correct request when reply is used in signal mRequestMap.insert(reply, request); + connect(reply, QOverload::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(sender()); + Q_ASSERT(mRequestMap.contains(reply)); + std::shared_ptr request = mRequestMap.value(reply); + + + qCWarning(sdknetwork) << request.get() << "reply error: " << code; +} + bool RequestManager::ignoreSsl() const { return mIgnoreSsl; diff --git a/src/serversdk/requestmanager.h b/src/serversdk/requestmanager.h index 3540af1..1997b25 100644 --- a/src/serversdk/requestmanager.h +++ b/src/serversdk/requestmanager.h @@ -28,7 +28,7 @@ public: private: Q_SLOT void sslErrors(QNetworkReply *reply, const QList &sslErrors); Q_SLOT void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); - + Q_SLOT void replyError(QNetworkReply::NetworkError code); signals: void downloadFinished(std::shared_ptr request); diff --git a/test/auto/request/tst_requestmanager.cpp b/test/auto/request/tst_requestmanager.cpp index 8ddc4bb..54c1d0f 100644 --- a/test/auto/request/tst_requestmanager.cpp +++ b/test/auto/request/tst_requestmanager.cpp @@ -30,6 +30,8 @@ private: Q_SLOT void colnodAuthorization_test(); Q_SLOT void colnodGetUpdatedTokens_test(); + Q_SLOT void notConncetion_test(); + std::shared_ptr 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("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(); }