forked from ondra/colnod-connector
Add complex test, upgrade code mostly in reqeustManager
This commit is contained in:
parent
3de57f1c35
commit
f4cc641b79
@ -12,14 +12,14 @@ void ColnodAPI::downloadData()
|
||||
{
|
||||
Response* resp0 = reqMan->getSubjects();
|
||||
connect(resp0, &Response::ready, [=](){
|
||||
dataMan->localSaveSubjects(resp0->reply->readAll());
|
||||
dataMan->localSaveSubjects(resp0->getJson());
|
||||
areDataReady();
|
||||
resp0->deleteLater();
|
||||
});
|
||||
|
||||
Response* resp1 = reqMan->getTokens();
|
||||
connect(resp1, &Response::ready, [=](){
|
||||
dataMan->localSaveTokens(resp1->reply->readAll());
|
||||
dataMan->localSaveTokens(resp1->getJson());
|
||||
areDataReady();
|
||||
resp1->deleteLater();
|
||||
});
|
||||
|
||||
@ -16,8 +16,9 @@ RequestManager::RequestManager()
|
||||
QObject::connect(manager, &QNetworkAccessManager::sslErrors, this, &RequestManager::onSSLError);
|
||||
}
|
||||
|
||||
void RequestManager::login(QString host, QString username, QString password)
|
||||
Response* RequestManager::login()
|
||||
{
|
||||
loginResponse = new Response;
|
||||
QNetworkRequest request;
|
||||
QString hash = encryptedPassword(this->password);
|
||||
authHeader = getLoginHeader(this->user, hash);
|
||||
@ -25,9 +26,6 @@ void RequestManager::login(QString host, QString username, QString password)
|
||||
{"password", hash},
|
||||
{"username", this->user}
|
||||
};
|
||||
//this->host = host;
|
||||
|
||||
|
||||
request.setUrl(this->host + "/AaaManager/authSession");
|
||||
request.setRawHeader("Authorization", authHeader.toLocal8Bit());
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
|
||||
@ -35,6 +33,7 @@ void RequestManager::login(QString host, QString username, QString password)
|
||||
QJsonDocument jsonDocument;
|
||||
jsonDocument.setObject(reqBody);
|
||||
QNetworkReply* reply = manager->post(request, jsonDocument.toJson());
|
||||
loginResponse->setReply(reply);
|
||||
QObject::connect(reply, &QNetworkReply::finished, [=]() {
|
||||
if (reply->error())
|
||||
{
|
||||
@ -43,36 +42,14 @@ void RequestManager::login(QString host, QString username, QString password)
|
||||
reply->deleteLater();
|
||||
return;
|
||||
}
|
||||
jsonResponse = reply->readAll();
|
||||
prepareAuthHeader();
|
||||
if (loginStatus)
|
||||
return;
|
||||
qDebug() << "Logged in successfully.";
|
||||
loginStatus = true;
|
||||
emit successLogin();
|
||||
reply->deleteLater();
|
||||
});
|
||||
}
|
||||
|
||||
QNetworkReply* RequestManager::getRequest(QString endpoint)
|
||||
{
|
||||
QNetworkRequest request;
|
||||
request.setUrl(host + endpoint);
|
||||
request.setRawHeader("Authorization", authHeader.toLocal8Bit());
|
||||
QNetworkReply* reply = manager->post(request, QByteArray());
|
||||
QObject::connect(reply, &QNetworkReply::finished, [=]() {
|
||||
if (reply->error())
|
||||
{
|
||||
qDebug() << reply->errorString();
|
||||
loginStatus = false;
|
||||
reply->deleteLater();
|
||||
return;
|
||||
}
|
||||
qDebug() << "Authorized successfully, response ready.";
|
||||
emit responseReady();
|
||||
reply->deleteLater();
|
||||
});
|
||||
return reply;
|
||||
connect(this, &RequestManager::successLogin, loginResponse, &Response::ready);
|
||||
connect(this, &RequestManager::successLogin, this, &RequestManager::prepareAuthHeader);
|
||||
return loginResponse;
|
||||
}
|
||||
|
||||
QNetworkReply* RequestManager::postRequest(QString endpoint, QByteArray json)
|
||||
@ -97,41 +74,36 @@ QNetworkReply* RequestManager::postRequest(QString endpoint, QByteArray json)
|
||||
return reply;
|
||||
}
|
||||
|
||||
Response* RequestManager::getRequestReturnLogic(QString endpoint)
|
||||
{
|
||||
Response* response = new Response;
|
||||
if (!loginStatus){
|
||||
login(host, user, password);
|
||||
connect(this, &RequestManager::successLogin, [=](){
|
||||
response->reply = getRequest(endpoint);
|
||||
connect(response->reply, &QNetworkReply::finished, response, &Response::ready);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
response->reply = getRequest(endpoint);
|
||||
connect(response->reply, &QNetworkReply::finished, response, &Response::ready);
|
||||
}
|
||||
|
||||
return response;
|
||||
Response* RequestManager::getLoginResponse() {
|
||||
if (!loginResponse){
|
||||
loginResponse = login();
|
||||
|
||||
|
||||
}
|
||||
return loginResponse;
|
||||
}
|
||||
|
||||
Response* RequestManager::postRequestReturnLogic(QString endpoint, QByteArray data)
|
||||
{
|
||||
auto loginResponse = getLoginResponse();
|
||||
// This will ensure login is called only once
|
||||
|
||||
Q_ASSERT(loginResponse);
|
||||
Response* response = new Response;
|
||||
|
||||
if (!loginStatus){
|
||||
login(host, user, password);
|
||||
|
||||
connect(this, &RequestManager::successLogin, [=](){
|
||||
response->reply = postRequest(endpoint, data);
|
||||
connect(response->reply, &QNetworkReply::finished, response, &Response::ready);
|
||||
response->setReply(postRequest(endpoint, data));
|
||||
connect(response->getReply(), &QNetworkReply::finished, response, &Response::ready);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
response->reply = postRequest(endpoint, data);
|
||||
connect(response->reply, &QNetworkReply::finished, response, &Response::ready);
|
||||
response->setReply(postRequest(endpoint, data));
|
||||
connect(response->getReply(), &QNetworkReply::finished, response, &Response::ready);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@ -159,6 +131,7 @@ QString RequestManager::getLoginHeader(QString username, QString hash)
|
||||
|
||||
void RequestManager::prepareAuthHeader()
|
||||
{
|
||||
jsonResponse = loginResponse->getJson();
|
||||
token = getFromJson(jsonResponse, "id");
|
||||
QString authValue = token + ":";
|
||||
authHeader = "Basic " + authValue.toLocal8Bit().toBase64();
|
||||
@ -166,12 +139,12 @@ void RequestManager::prepareAuthHeader()
|
||||
|
||||
void RequestManager::onSSLError(QNetworkReply *reply, const QList<QSslError> &errors)
|
||||
{
|
||||
qDebug() << "Network SSL errors";
|
||||
//qDebug() << "Network SSL errors";
|
||||
for (const auto &error : errors)
|
||||
{
|
||||
if (error.error() == QSslError::SelfSignedCertificate)
|
||||
reply->ignoreSslErrors(errors);
|
||||
qDebug() << error.errorString();
|
||||
//qDebug() << error.errorString();
|
||||
}
|
||||
|
||||
}
|
||||
@ -229,17 +202,17 @@ QByteArray RequestManager::makeIdsJson(QList<QString> ids)
|
||||
|
||||
Response* RequestManager::getSubjects()
|
||||
{
|
||||
return getRequestReturnLogic("/SubjectManager/getSubjects");
|
||||
return postRequestReturnLogic("/SubjectManager/getSubjects");
|
||||
}
|
||||
|
||||
Response* RequestManager::getTokens()
|
||||
{
|
||||
return getRequestReturnLogic("/TokenManager/getTokens");
|
||||
return postRequestReturnLogic("/TokenManager/getTokens");
|
||||
}
|
||||
|
||||
Response* RequestManager::getTokenSubject()
|
||||
{
|
||||
return getRequestReturnLogic("/OpenManager/getTokenSubject");
|
||||
return postRequestReturnLogic("/OpenManager/getTokenSubject");
|
||||
}
|
||||
|
||||
Response* RequestManager::getSubjectsUpdated(uint64_t time)
|
||||
@ -264,7 +237,7 @@ Response* RequestManager::getTokensDeleted(uint64_t time)
|
||||
|
||||
Response* RequestManager::getAccessGroups()
|
||||
{
|
||||
return getRequestReturnLogic("/AccessManager/getAccessGroups");
|
||||
return postRequestReturnLogic("/AccessManager/getAccessGroups");
|
||||
}
|
||||
|
||||
Response* RequestManager::getAccessGroupsUpdated(uint64_t time)
|
||||
@ -279,7 +252,7 @@ Response* RequestManager::getAccessGroupsDeleted(uint64_t time)
|
||||
|
||||
Response* RequestManager::getAccessGroupMembership()
|
||||
{
|
||||
return getRequestReturnLogic("/AccessManager/getAccessGroupMembership");
|
||||
return postRequestReturnLogic("/AccessManager/getAccessGroupMembership");
|
||||
}
|
||||
|
||||
Response* RequestManager::getAccessGroupMembershipUpdated(uint64_t time)
|
||||
@ -301,15 +274,3 @@ Response* RequestManager::deleteTokens(QList<QString> ids)
|
||||
{
|
||||
return postRequestReturnLogic("/TokenManager/deleteTokens", makeIdsJson(ids));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -52,27 +52,26 @@ public:
|
||||
Response* setTokens(QList<QPointer<Token>> tokens);
|
||||
Response* deleteTokens(QList<QString> ids);
|
||||
|
||||
void login(QString endpoint, QString username, QString password); //I want it private, but unittest???
|
||||
Response* login(); //I want it private, but unittest???
|
||||
|
||||
const QJsonDocument &getConfig() const {return config;}
|
||||
const QString &getResponse() const {return jsonResponse;}
|
||||
|
||||
private:
|
||||
QNetworkReply* getRequest(QString endpoint);
|
||||
QNetworkReply* postRequest(QString endpoints, QByteArray json);
|
||||
Response* getRequestReturnLogic(QString endpoint);
|
||||
Response* postRequestReturnLogic(QString endpoint, QByteArray data);
|
||||
QNetworkReply* postRequest(QString endpoint, QByteArray json = QByteArray());
|
||||
Response* postRequestReturnLogic(QString endpoint, QByteArray data = QByteArray());
|
||||
QString getFromJson(QString json, const QString &member);
|
||||
QString encryptedPassword(QString password);
|
||||
QString getLoginHeader(QString username, QString hash);
|
||||
void prepareAuthHeader();
|
||||
|
||||
QByteArray makeTimeStampJson(uint64_t time);
|
||||
QByteArray makeTokensJson(QList<QPointer<Token>> tokens);
|
||||
QByteArray makeIdsJson(QList<QString> ids);
|
||||
Response* getLoginResponse();
|
||||
|
||||
private slots:
|
||||
void onSSLError(QNetworkReply *reply, const QList<QSslError> &errors);
|
||||
|
||||
void prepareAuthHeader();
|
||||
|
||||
signals:
|
||||
void successLogin();
|
||||
@ -81,6 +80,7 @@ signals:
|
||||
|
||||
private:
|
||||
QNetworkAccessManager* manager = nullptr;
|
||||
Response* loginResponse = nullptr;
|
||||
QJsonDocument config;
|
||||
QString authHeader;
|
||||
QString host = "https://192.168.1.3:8443";
|
||||
|
||||
@ -2,5 +2,10 @@
|
||||
|
||||
Response::Response()
|
||||
{
|
||||
|
||||
connect(this, &Response::ready, this, &Response::setJson);
|
||||
}
|
||||
|
||||
int Response::getStatusCode()
|
||||
{
|
||||
return reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
}
|
||||
|
||||
@ -8,18 +8,28 @@ class Response : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
Response();
|
||||
|
||||
int getStatusCode();
|
||||
QString getJson() {return json;}
|
||||
void setReply(QNetworkReply* rpl) {reply = rpl;}
|
||||
QNetworkReply* getReply() {return reply;}
|
||||
public:
|
||||
QNetworkReply *reply = nullptr;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
void ready();
|
||||
|
||||
public slots:
|
||||
|
||||
private slots:
|
||||
void setJson() {json = reply->readAll();}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
QString json;
|
||||
QNetworkReply *reply = nullptr;
|
||||
};
|
||||
|
||||
#endif // RESPONSE_H
|
||||
|
||||
@ -1,13 +1,19 @@
|
||||
#include "unittest.h"
|
||||
|
||||
void UnitTest::initTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void UnitTest::loginSuccessfully()
|
||||
{
|
||||
RequestManager* testAccess = new RequestManager();
|
||||
QJsonDocument config = testAccess->getConfig();
|
||||
QSignalSpy spy(testAccess, SIGNAL(successLogin()));
|
||||
testAccess->login(host, email, password);
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
testAccess->login();
|
||||
spy.wait(15000);
|
||||
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = testAccess->getResponse();
|
||||
qDebug() << json;
|
||||
@ -20,11 +26,15 @@ void UnitTest::getSubjects()
|
||||
{
|
||||
RequestManager* testAccess = new RequestManager();
|
||||
QSignalSpy spy(testAccess, SIGNAL(responseReady()));
|
||||
Response* response = testAccess->getSubjects();
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
Response* response = testAccess->getSubjects();
|
||||
QSignalSpy spy1(response, &Response::ready);
|
||||
|
||||
spy.wait(15000);
|
||||
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QCOMPARE(spy1.count(), 1);
|
||||
QString json = response->getJson();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
||||
QVERIFY(doc.isObject());
|
||||
QVERIFY2(doc.object().value("items").isArray(), "No parameter 'id' in response");
|
||||
@ -42,7 +52,7 @@ void UnitTest::getTokens()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
||||
QVERIFY(doc.isObject());
|
||||
QVERIFY2(doc.object().value("items").isArray(), "No parameter 'id' in response");
|
||||
@ -59,7 +69,7 @@ void UnitTest::getTokenSubject()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -72,7 +82,7 @@ void UnitTest::getSubjectsUpdated()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -85,7 +95,7 @@ void UnitTest::getSubjectsDeleted()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -98,7 +108,7 @@ void UnitTest::getTokensUpdated()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -111,7 +121,7 @@ void UnitTest::getTokensDeleted()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -124,7 +134,7 @@ void UnitTest::getAccessGroups()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -137,7 +147,7 @@ void UnitTest::getAccessGroupsUpdated()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -150,7 +160,7 @@ void UnitTest::getAccessGroupsDeleted()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -163,7 +173,7 @@ void UnitTest::getAccessGroupMembership()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -176,7 +186,7 @@ void UnitTest::getAccessGroupMembershipUpdated()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -189,7 +199,7 @@ void UnitTest::getAccessGroupMembershipDeleted()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -197,12 +207,7 @@ void UnitTest::setTokens()
|
||||
{
|
||||
QFile jsonData(QDir::current().filePath("tokens.json"));
|
||||
|
||||
if (!jsonData.open(QIODevice::ReadOnly)) {
|
||||
qCritical() << "Couldn't open config file config.json" << QDir::current().filePath("tokens.json");
|
||||
QCoreApplication::exit(-1);
|
||||
return;
|
||||
}
|
||||
|
||||
QVERIFY2(jsonData.open(QIODevice::ReadOnly), "Couldn't open config file tokens.json");
|
||||
QJsonDocument doc = QJsonDocument::fromJson(jsonData.readAll());
|
||||
QJsonObject obj = doc.object();
|
||||
QJsonArray arr = obj["items"].toArray();
|
||||
@ -222,7 +227,7 @@ void UnitTest::setTokens()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -238,7 +243,7 @@ void UnitTest::deleteTokens()
|
||||
spy.wait(15000);
|
||||
QVERIFY(spy.isValid());
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QVERIFY(!json.isEmpty());
|
||||
}
|
||||
|
||||
@ -261,7 +266,7 @@ void UnitTest::subjectJSONParser()
|
||||
QSignalSpy spy(testAccess, SIGNAL(responseReady()));
|
||||
Response* response = testAccess->getSubjects();
|
||||
spy.wait(15000);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
||||
QJsonArray arr = doc.object()["items"].toArray();
|
||||
auto testSubject = new Subject();
|
||||
@ -276,7 +281,7 @@ void UnitTest::tokenJSONParser()
|
||||
QSignalSpy spy(testAccess, SIGNAL(responseReady()));
|
||||
Response* response = testAccess->getTokens();
|
||||
spy.wait(15000);
|
||||
QString json = response->reply->readAll();
|
||||
QString json = response->getJson();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
||||
QJsonArray arr = doc.object()["items"].toArray();
|
||||
auto testToken = new Token();
|
||||
@ -351,4 +356,5 @@ void UnitTest::getUuid()
|
||||
}
|
||||
|
||||
|
||||
QTEST_MAIN(UnitTest)
|
||||
|
||||
//QTEST_MAIN(UnitTest)
|
||||
|
||||
137
test/unitTests/complextest.cpp
Normal file
137
test/unitTests/complextest.cpp
Normal file
@ -0,0 +1,137 @@
|
||||
#include "complextest.h"
|
||||
|
||||
void ComplexTest::initTestCase()
|
||||
{
|
||||
reqMan = new RequestManager;
|
||||
start = QDateTime::currentMSecsSinceEpoch()-1000;
|
||||
qDebug() << start;
|
||||
}
|
||||
|
||||
void ComplexTest::complexTest()
|
||||
{
|
||||
// LOGIN_BEGIN
|
||||
QSignalSpy loginSpy(reqMan, &RequestManager::successLogin);
|
||||
Response* loginResp = reqMan->login();
|
||||
QSignalSpy loginRespSpy(loginResp, &Response::ready);
|
||||
QCOMPARE(loginSpy.count(), 0);
|
||||
QCOMPARE(loginRespSpy.count(), 0);
|
||||
loginSpy.wait(10000);
|
||||
QCOMPARE(loginResp->getStatusCode(), 200); // HTTP status code check
|
||||
QCOMPARE(loginSpy.count(), 1); // Checking multiple calls
|
||||
QCOMPARE(loginRespSpy.count(), 1);
|
||||
auto doc0 = getJsonDoc(loginResp->getJson());
|
||||
QVERIFY(doc0.object()["id"].isString());
|
||||
// LOGIN_END
|
||||
|
||||
// NUMBER_OF_SUBJECTS_AND_TOKENS_BEGIN
|
||||
int numOfSubjects = getNumOfSubjects();
|
||||
QCOMPARE(numOfSubjects, 2893); // should be still the same, if false db has been changed
|
||||
int numOfTokens = getNumOfTokens();
|
||||
QCOMPARE(numOfTokens, 2881); // should be still the same, if false db has been changed, or deleteTokens didnt work in previous test
|
||||
// NUMBER_OF_SUBJECTS_AND_TOKENS_END
|
||||
|
||||
|
||||
// ADD_TOKENS_CHECK_BEGIN
|
||||
QList<QPointer<Token>> tokens;
|
||||
tokens.append(getTestToken());
|
||||
Response* setTokensResp = reqMan->setTokens(tokens);
|
||||
QSignalSpy setTokensRespSpy(setTokensResp, &Response::ready);
|
||||
QCOMPARE(setTokensRespSpy.count(), 0);
|
||||
setTokensRespSpy.wait(10000);
|
||||
QCOMPARE(setTokensRespSpy.count(), 1);
|
||||
QCOMPARE(setTokensResp->getStatusCode(), 200);
|
||||
QCOMPARE(getNumOfTokens(), numOfTokens + 1);
|
||||
// ADD_TOKENS_CHEK_END
|
||||
|
||||
// CHECK_UPDATED_TOKENS_BEGIN
|
||||
Response* getTokensUpdatedResp = reqMan->getTokensUpdated(start);
|
||||
//start = QDateTime::currentMSecsSinceEpoch();
|
||||
QSignalSpy getTokensUpdatedRespSpy(getTokensUpdatedResp, &Response::ready);
|
||||
QCOMPARE(getTokensUpdatedRespSpy.count(), 0);
|
||||
getTokensUpdatedRespSpy.wait(10000);
|
||||
QCOMPARE(getTokensUpdatedResp->getStatusCode(), 200);
|
||||
QCOMPARE(getTokensUpdatedRespSpy.count(), 1);
|
||||
auto doc1 = getJsonDoc(getTokensUpdatedResp->getJson());
|
||||
QCOMPARE(doc1.object()["items"].toArray().size(), 1);
|
||||
// CHECK_UPDATED_TOKENS_END
|
||||
|
||||
// DELETE_TOKENS_CHECK_BEGIN
|
||||
QList<QString> ids;
|
||||
ids.append("582c982d-6fd7-4856-8548-7ce542791c7a");
|
||||
Response* deleteTokensResp = reqMan->deleteTokens(ids);
|
||||
QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready);
|
||||
QCOMPARE(deleteTokensRespSpy.count(), 0);
|
||||
deleteTokensRespSpy.wait(10000);
|
||||
QCOMPARE(deleteTokensRespSpy.count(), 1);
|
||||
QCOMPARE(deleteTokensResp->getStatusCode(), 200);
|
||||
// DELETE_TOKENS_CHECK_END
|
||||
|
||||
// CHECK_DELETED_TOKENS_BEGIN
|
||||
Response* getTokensDeletedResp = reqMan->getTokensDeleted(start);
|
||||
start = QDateTime::currentMSecsSinceEpoch();
|
||||
QSignalSpy getTokensDeletedRespSpy(getTokensDeletedResp, &Response::ready);
|
||||
QCOMPARE(getTokensDeletedRespSpy.count(), 0);
|
||||
getTokensDeletedRespSpy.wait(10000);
|
||||
QCOMPARE(getTokensDeletedResp->getStatusCode(), 200);
|
||||
QCOMPARE(getTokensDeletedRespSpy.count(), 1);
|
||||
auto doc2 = getJsonDoc(getTokensDeletedResp->getJson());
|
||||
QCOMPARE(doc2.object()["items"].toArray().size(), 1);
|
||||
QVERIFY(doc2.object()["items"].toArray().contains("582c982d-6fd7-4856-8548-7ce542791c7a"));
|
||||
// CHECK_DELETED_TOKENS_END
|
||||
|
||||
|
||||
|
||||
// LAST_TESTS (for sure)
|
||||
QCOMPARE(loginSpy.count(), 1); // Checking multiple calls
|
||||
QCOMPARE(loginRespSpy.count(), 1);
|
||||
QCOMPARE(getNumOfSubjects(), numOfSubjects);
|
||||
QCOMPARE(getNumOfTokens(), numOfTokens);
|
||||
}
|
||||
|
||||
|
||||
// HELPFUL_FUNCTIONS
|
||||
int ComplexTest::getNumOfSubjects()
|
||||
{
|
||||
Response* subjectsResp = reqMan->getSubjects();
|
||||
QSignalSpy subjectsRespSpy(subjectsResp, &Response::ready);
|
||||
subjectsRespSpy.wait(10000);
|
||||
auto doc = getJsonDoc(subjectsResp->getJson());
|
||||
return doc.object()["items"].toArray().size();
|
||||
}
|
||||
|
||||
int ComplexTest::getNumOfTokens()
|
||||
{
|
||||
Response* tokensResp = reqMan->getTokens();
|
||||
QSignalSpy tokensRespSpy(tokensResp, &Response::ready);
|
||||
tokensRespSpy.wait(10000);
|
||||
auto doc = getJsonDoc(tokensResp->getJson());
|
||||
return doc.object()["items"].toArray().size();
|
||||
}
|
||||
|
||||
QJsonDocument ComplexTest::getJsonDoc(QString json)
|
||||
{
|
||||
return QJsonDocument::fromJson(json.toUtf8());
|
||||
}
|
||||
|
||||
Token* ComplexTest::getTestToken()
|
||||
{
|
||||
QJsonObject jsonToken;
|
||||
jsonToken.insert("id", "582c982d-6fd7-4856-8548-7ce542791c7a");
|
||||
jsonToken.insert("name", "test");
|
||||
jsonToken.insert("description", "mobile");
|
||||
jsonToken.insert("tokenType", "Token");
|
||||
jsonToken.insert("tokenBits", 32);
|
||||
jsonToken.insert("tokenData", "7B9D32");
|
||||
jsonToken.insert("timeToLive", 255);
|
||||
jsonToken.insert("authErrors", 255);
|
||||
QJsonArray flags;
|
||||
flags.push_back("Enabled");
|
||||
flags.push_back("NoValidity");
|
||||
jsonToken.insert("flags", flags);
|
||||
jsonToken.insert("subjectId", "72b37f7e-5761-4e6c-8e87-20c0bed0d904");
|
||||
Token* token = new Token;
|
||||
token->fromJSON(jsonToken);
|
||||
return token;
|
||||
}
|
||||
|
||||
QTEST_MAIN(ComplexTest)
|
||||
33
test/unitTests/complextest.h
Normal file
33
test/unitTests/complextest.h
Normal file
@ -0,0 +1,33 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QtTest/QtTest>
|
||||
#include "response.h"
|
||||
#include "requestmanager.h"
|
||||
|
||||
class ComplexTest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void complexTest();
|
||||
|
||||
private:
|
||||
// FUNCTIONS
|
||||
int getNumOfSubjects();
|
||||
int getNumOfTokens();
|
||||
QJsonDocument getJsonDoc(QString json);
|
||||
Token* getTestToken();
|
||||
|
||||
|
||||
// VARIABLES
|
||||
QString host = "https://192.168.1.3";
|
||||
QString user = "spaceti";
|
||||
QString password = "spaceti1";
|
||||
RequestManager* reqMan = nullptr;
|
||||
uint64_t start = 0;
|
||||
|
||||
};
|
||||
|
||||
@ -3,8 +3,10 @@ QT += core sql network testlib
|
||||
CONFIG += testcase # neccesary to have posibility to run: make check UnitTest
|
||||
|
||||
HEADERS += \
|
||||
complextest.h \
|
||||
unittest.h
|
||||
SOURCES += \
|
||||
complextest.cpp \
|
||||
unittest.cpp
|
||||
|
||||
include(../../src/colnod/colnod.pri)
|
||||
|
||||
@ -17,6 +17,8 @@ class UnitTest : public QObject
|
||||
|
||||
private slots:
|
||||
|
||||
void initTestCase();
|
||||
|
||||
void loginSuccessfully(); // /AaaManager/authSession
|
||||
void getSubjects(); // /SubjectManager/getSubjects
|
||||
void getTokens(); // /TokenManager/getTokens
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user