Adding test for colnod -> TokenManager -> getTokenUpdated

This commit is contained in:
Filip Bucek 2019-11-13 10:56:31 +01:00
parent 6940cad69e
commit f1d78192f7
4 changed files with 66 additions and 18 deletions

View File

@ -22,7 +22,7 @@ QNetworkRequest Request::networkRequest() const
QNetworkRequest request(QUrl(this->mUrl)); QNetworkRequest request(QUrl(this->mUrl));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8"); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
if ( !userName().isEmpty() && !password().isEmpty() ) { if ( !userName().isEmpty() ) {
request.setRawHeader("Authorization", this->basicAuthorization().toUtf8()); 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; mResponseData += array;
} }

View File

@ -49,7 +49,7 @@ public:
private: private:
// Data handling // Data handling
void appendData(const QByteArray &array); void appendResponseData(const QByteArray &array);
signals: signals:

View File

@ -20,7 +20,6 @@ RequestManager::RequestManager(QObject *parent)
qCWarning(sdknetwork) << "server need authentication"; qCWarning(sdknetwork) << "server need authentication";
}); });
connect(&mNetworkAccessManager, &QNetworkAccessManager::sslErrors, this, &RequestManager::sslErrors); connect(&mNetworkAccessManager, &QNetworkAccessManager::sslErrors, this, &RequestManager::sslErrors);
} }
/** /**
@ -34,10 +33,13 @@ void RequestManager::processRequest(const std::shared_ptr<Request>& request)
request->logStartTime(); request->logStartTime();
if (request->type() == "POST") { if (request->type() == "POST") {
if ( request->requestData().isEmpty()) {
qCWarning(sdknetwork) << "Request data is empty -> nothing to send";
}
reply = mNetworkAccessManager.post(request->networkRequest(), request->requestData()); reply = mNetworkAccessManager.post(request->networkRequest(), request->requestData());
} else if (request->type() == "GET") { } else if (request->type() == "GET") {
if ( ! request->responseData().isEmpty()) { if ( ! request->requestData().isEmpty()) {
qCWarning(sdknetwork) << "Response data is not empty, and you are trying to use get ( not sending any data)"; qCWarning(sdknetwork) << "Request data is not empty, and you are trying to use get ( not sending any data)";
} }
reply = mNetworkAccessManager.get(request->networkRequest()); reply = mNetworkAccessManager.get(request->networkRequest());
} else if (request->type() == "PUT") { } else if (request->type() == "PUT") {
@ -102,7 +104,6 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
encoding = pair.second; encoding = pair.second;
} }
} }
QByteArray data = reply->readAll(); QByteArray data = reply->readAll();
// Decompress gzip data // Decompress gzip data
@ -113,7 +114,7 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
#endif #endif
// Append data to request // Append data to request
request->appendData(data); request->appendResponseData(data);
emit progresss(bytesReceived, bytesTotal); emit progresss(bytesReceived, bytesTotal);
} }

View File

@ -14,6 +14,10 @@ class LoginTable : public serversdk::DatabaseTable {
class Token : public serversdk::DatabaseTable { class Token : public serversdk::DatabaseTable {
Q_OBJECT Q_OBJECT
TABLE_PROPERTY(QUuid, id, set_id, ""); 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 Q_OBJECT
private: private:
Q_SLOT void colnodAuthorization_test(); Q_SLOT void colnodAuthorization_test();
Q_SLOT void colnodGetUpdatedTokens_test();
std::shared_ptr<Request> colnodLoginRequest();
}; };
void RequestManagerTest::colnodAuthorization_test() std::shared_ptr<Request> RequestManagerTest::colnodLoginRequest()
{ {
// Colnod // Colnod
auto login = std::make_unique<LoginTable>(); auto login = std::make_unique<LoginTable>();
login->set_username("spaceti"); login->set_username("spaceti");
login->set_password("E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0"); login->set_password("E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0");
serversdk::RequestManager reqMan;
reqMan.setIgnoreSsl(true);
auto loginRequest = std::make_shared<serversdk::Request>("POST", "https://192.168.1.3:8443/AaaManager/authSession", login->jsonData()); auto loginRequest = std::make_shared<serversdk::Request>("POST", "https://192.168.1.3:8443/AaaManager/authSession", login->jsonData());
loginRequest->setUserName(login->username()); loginRequest->setUserName(login->username());
loginRequest->setPassword(login->password()); 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==")); QCOMPARE(loginRequest->basicAuthorization(), QStringLiteral("Basic c3BhY2V0aTpFN0ZFQTA3REJDODJGQjlCQTM0QjJFNDUzRTJFRkU4OUYwNTgzRTcxODc1NDM1MDdFRjExRTg0NzI2MDcxRkU0Mjg0NDUzNzJGMkU0NkI0NTVFQjBDNzk3NDdDNTFFMzYyRjQwM0NFMzk0NzNBMkE4QzJERkEwQ0U1Qzk4MjZDMA=="));
QSignalSpy spyFinished(loginRequest.get(), &serversdk::Request::finished); QSignalSpy loginFinished(loginRequest.get(), &serversdk::Request::finished);
reqMan.processRequest(loginRequest); reqMan.processRequest(loginRequest);
QVERIFY(spyFinished.wait()); QVERIFY(loginFinished.wait());
QCOMPARE(spyFinished.count(), 1 ); QCOMPARE(loginFinished.count(), 1 );
auto data = loginRequest->responseData(); auto data = loginRequest->responseData();
@ -57,9 +68,45 @@ void RequestManagerTest::colnodAuthorization_test()
QVERIFY(token.id().isNull()); // must be null QVERIFY(token.id().isNull()); // must be null
token.fromJson(data); token.fromJson(data);
QVERIFY(!token.id().isNull()); // mut not be null ( authentication token ) 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<serversdk::Request>("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) QTEST_GUILESS_MAIN(serversdk::RequestManagerTest)