#include "complextest.h" void ComplexTest::initTestCase() { auto reqMan1 = new RequestManager; QList ids; ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546"); Response* deleteTokensResp = reqMan1->deleteTokens(ids); QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready); QCOMPARE(deleteTokensRespSpy.count(), 0); deleteTokensRespSpy.wait(10000); QTest::qWait(2500); start = QDateTime::currentMSecsSinceEpoch()-2000; api = new ColnodAPI; qDebug() << start; } void ComplexTest::cleanupTestCase() { QList ids; ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546"); auto reqMan = new RequestManager; Response* deleteTokensResp = reqMan->deleteTokens(ids); QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready); QCOMPARE(deleteTokensRespSpy.count(), 0); deleteTokensRespSpy.wait(10000); QCOMPARE(deleteTokensRespSpy.count(), 1); } void ComplexTest::complexTest() { // LOGIN_BEGIN reqMan = new RequestManager; 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> 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 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->loadDataFromColnod(); 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->loadDataFromDB(); api->syncDataFromColnod(); api->syncDataFromDB(); QSignalSpy processSpy(api, &ColnodAPI::dataProcessed); processSpy.wait(10000); qDebug() << "All right, at least should be."; } 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)