forked from ondra/colnod-connector
180 lines
6.3 KiB
C++
180 lines
6.3 KiB
C++
#include "complextest.h"
|
|
|
|
void ComplexTest::initTestCase()
|
|
{
|
|
reqMan = new RequestManager;
|
|
start = QDateTime::currentMSecsSinceEpoch()-2000;
|
|
api = new ColnodAPI;
|
|
qDebug() << start;
|
|
}
|
|
|
|
void ComplexTest::cleanupTestCase()
|
|
{
|
|
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);
|
|
}
|
|
|
|
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
|
|
QHash<QString, QPointer<Token>> tokens;
|
|
auto token = getTestToken();
|
|
tokens.insert(token->idToStringWithoutBraces(), token);
|
|
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);
|
|
}
|
|
|
|
|
|
void ComplexTest::fullSync()
|
|
{
|
|
api->prepareDatabase();
|
|
api->downloadData();
|
|
QSignalSpy spy(api, &ColnodAPI::dataDownloaded);
|
|
spy.wait(10000);
|
|
api->syncDataFromColnod();
|
|
// api->syncDataToColnod();
|
|
}
|
|
|
|
void ComplexTest::syncLastUpdated()
|
|
{
|
|
api->loadDataFromColnod();
|
|
QSignalSpy spy(api, &ColnodAPI::dataDownloaded);
|
|
spy.wait(10000);
|
|
api->syncDataFromColnod();
|
|
// api->syncChangedDataToColnod();
|
|
spy.wait(10000);
|
|
api->syncDataFromColnod();
|
|
|
|
|
|
}
|
|
|
|
void ComplexTest::testingStuff()
|
|
{
|
|
//DatabaseManager* db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12");
|
|
//DatabaseManager* db = new DatabaseManager("localhost", "deloitte", "postgres", "34rjkciea12");
|
|
//db->makeTestingLast_sync();
|
|
}
|
|
|
|
// 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)
|