diff --git a/src/serversdk/request.cpp b/src/serversdk/request.cpp index 43e9f50..5548a5d 100644 --- a/src/serversdk/request.cpp +++ b/src/serversdk/request.cpp @@ -22,7 +22,7 @@ QNetworkRequest Request::networkRequest() const QNetworkRequest request(QUrl(this->mUrl)); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8"); - if ( !userName().isEmpty() && !password().isEmpty() ) { + if ( !userName().isEmpty() ) { request.setRawHeader("Authorization", this->basicAuthorization().toUtf8()); } @@ -47,7 +47,7 @@ int Request::status() const } -void Request::appendData(const QByteArray &array) +void Request::appendResponseData(const QByteArray &array) { mResponseData += array; } diff --git a/src/serversdk/request.h b/src/serversdk/request.h index 52584eb..06f081a 100644 --- a/src/serversdk/request.h +++ b/src/serversdk/request.h @@ -49,7 +49,7 @@ public: private: // Data handling - void appendData(const QByteArray &array); + void appendResponseData(const QByteArray &array); signals: diff --git a/src/serversdk/requestmanager.cpp b/src/serversdk/requestmanager.cpp index 3a16445..a08b359 100644 --- a/src/serversdk/requestmanager.cpp +++ b/src/serversdk/requestmanager.cpp @@ -20,7 +20,6 @@ RequestManager::RequestManager(QObject *parent) qCWarning(sdknetwork) << "server need authentication"; }); connect(&mNetworkAccessManager, &QNetworkAccessManager::sslErrors, this, &RequestManager::sslErrors); - } /** @@ -34,10 +33,13 @@ void RequestManager::processRequest(const std::shared_ptr& request) request->logStartTime(); if (request->type() == "POST") { + if ( request->requestData().isEmpty()) { + qCWarning(sdknetwork) << "Request data is empty -> nothing to send"; + } reply = mNetworkAccessManager.post(request->networkRequest(), request->requestData()); } else if (request->type() == "GET") { - if ( ! request->responseData().isEmpty()) { - qCWarning(sdknetwork) << "Response data is not empty, and you are trying to use get ( not sending any data)"; + if ( ! request->requestData().isEmpty()) { + qCWarning(sdknetwork) << "Request data is not empty, and you are trying to use get ( not sending any data)"; } reply = mNetworkAccessManager.get(request->networkRequest()); } else if (request->type() == "PUT") { @@ -102,7 +104,6 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) encoding = pair.second; } } - QByteArray data = reply->readAll(); // Decompress gzip data @@ -113,7 +114,7 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) #endif // Append data to request - request->appendData(data); + request->appendResponseData(data); emit progresss(bytesReceived, bytesTotal); } diff --git a/test/auto/request/tst_requestmanager.cpp b/test/auto/request/tst_requestmanager.cpp index 2d18716..8ddc4bb 100644 --- a/test/auto/request/tst_requestmanager.cpp +++ b/test/auto/request/tst_requestmanager.cpp @@ -14,6 +14,10 @@ class LoginTable : public serversdk::DatabaseTable { class Token : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QUuid, id, set_id, ""); +public: + QString idWithoutCurlyBraces() { + return a_id.toString().mid(1, 36); + } }; @@ -24,30 +28,37 @@ class RequestManagerTest : public QObject Q_OBJECT private: Q_SLOT void colnodAuthorization_test(); + Q_SLOT void colnodGetUpdatedTokens_test(); + + std::shared_ptr colnodLoginRequest(); }; -void RequestManagerTest::colnodAuthorization_test() +std::shared_ptr RequestManagerTest::colnodLoginRequest() { // Colnod auto login = std::make_unique(); login->set_username("spaceti"); login->set_password("E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0"); - - - serversdk::RequestManager reqMan; - reqMan.setIgnoreSsl(true); - auto loginRequest = std::make_shared("POST", "https://192.168.1.3:8443/AaaManager/authSession", login->jsonData()); loginRequest->setUserName(login->username()); loginRequest->setPassword(login->password()); + return loginRequest; +} + +void RequestManagerTest::colnodAuthorization_test() +{ + serversdk::RequestManager reqMan; + reqMan.setIgnoreSsl(true); + + auto loginRequest = colnodLoginRequest(); QCOMPARE(loginRequest->basicAuthorization(), QStringLiteral("Basic c3BhY2V0aTpFN0ZFQTA3REJDODJGQjlCQTM0QjJFNDUzRTJFRkU4OUYwNTgzRTcxODc1NDM1MDdFRjExRTg0NzI2MDcxRkU0Mjg0NDUzNzJGMkU0NkI0NTVFQjBDNzk3NDdDNTFFMzYyRjQwM0NFMzk0NzNBMkE4QzJERkEwQ0U1Qzk4MjZDMA==")); - QSignalSpy spyFinished(loginRequest.get(), &serversdk::Request::finished); + QSignalSpy loginFinished(loginRequest.get(), &serversdk::Request::finished); reqMan.processRequest(loginRequest); - QVERIFY(spyFinished.wait()); - QCOMPARE(spyFinished.count(), 1 ); + QVERIFY(loginFinished.wait()); + QCOMPARE(loginFinished.count(), 1 ); auto data = loginRequest->responseData(); @@ -57,9 +68,45 @@ void RequestManagerTest::colnodAuthorization_test() QVERIFY(token.id().isNull()); // must be null token.fromJson(data); QVERIFY(!token.id().isNull()); // mut not be null ( authentication token ) - } +void RequestManagerTest::colnodGetUpdatedTokens_test() +{ + serversdk::RequestManager reqMan; + reqMan.setIgnoreSsl(true); + + auto loginRequest = colnodLoginRequest(); + QCOMPARE(loginRequest->basicAuthorization(), QStringLiteral("Basic c3BhY2V0aTpFN0ZFQTA3REJDODJGQjlCQTM0QjJFNDUzRTJFRkU4OUYwNTgzRTcxODc1NDM1MDdFRjExRTg0NzI2MDcxRkU0Mjg0NDUzNzJGMkU0NkI0NTVFQjBDNzk3NDdDNTFFMzYyRjQwM0NFMzk0NzNBMkE4QzJERkEwQ0U1Qzk4MjZDMA==")); + + QSignalSpy spyFinished(loginRequest.get(), &serversdk::Request::finished); + reqMan.processRequest(loginRequest); + + QVERIFY(spyFinished.wait()); + QCOMPARE(spyFinished.count(), 1 ); + + auto data = loginRequest->responseData(); + + Token token; + QVERIFY(token.id().isNull()); // must be null + token.fromJson(data); + QVERIFY(!token.id().isNull()); // mut not be null ( authentication token ) + + QByteArray array = R"({"timestamp": 1570109859681})"; + + auto tokensRequest = std::make_shared("POST", "https://192.168.1.3:8443/TokenManager/getTokensUpdated", array); + tokensRequest->setUserName(token.idWithoutCurlyBraces()); + QSignalSpy tokensFinished(tokensRequest.get(), &serversdk::Request::finished); + reqMan.processRequest(tokensRequest); + QVERIFY(tokensRequest->networkReply()); + QVERIFY(tokensFinished.wait()); + QCOMPARE(tokensFinished.count(), 1 ); + + QVERIFY(tokensRequest->status() == 200); + qDebug() << tokensRequest->responseData(); +} + + + } QTEST_GUILESS_MAIN(serversdk::RequestManagerTest)