diff --git a/README.md b/README.md index b652349..0ff36da 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ Acces Management System of Colsys: [Product info](http://produkty.colsys.cz/colnod/) ## TODO -- [ ] Debug Mode -- [ ] Logs +- [x] Dry Run Mode (0.1v) +- [x] Logs (0.1v) - Timestamp - Id of record - Destination @@ -12,7 +12,7 @@ Acces Management System of Colsys: [Product info](http://produkty.colsys.cz/coln - Token `action` to `subject_id` - Sbject `action` - `action` - updated, deleted, added -- [ ] App output +- [x] App output (0.1v) - To Colnod - Number of tokens added/deleted/updated - To DB @@ -54,9 +54,58 @@ Acces Management System of Colsys: [Product info](http://produkty.colsys.cz/coln } ``` -1. GET request - `/SubjectManager/getSubjects` - get subjects -2. GET request - `/TokenManager/getTokens` - get tokens -3. POST request - `/TokenManager/setTokens` - set tokens + +1. POST request - `/SubjectManager/getSubjects` - get subjects +2. POST request - `/SubjectManager/getSubjectsUpdated` - get tokens updated after `time` +3. POST request - `/SubjectManager/getSubjectsDeleted` - get tokens deleted after `time` +4. POST request - `/TokenManager/getTokens` - get tokens +5. POST request - `/TokenManager/getTokensUpdated` - get tokens updated after `time` +6. POST request - `/TokenManager/getTokensDeleted` - get tokens deleted after `time` +7. POST request - `/TokenManager/setTokens` - set tokens defined as `JSON` +8. POST request - `/TokenManager/deleteTokens` - delete tokens define as `JSON2` +9. POST request - `/AccessManager/getAccessGroups` - get access groups +10. POST request - `/AccessManager/getAccessGroupsUpdated` +11. POST request - `/AccessManager/getAccessGroupsDeleted` +12. POST request - `/AccessManager/getAccessGroupMembership` +13. POST request - `/AccessManager/getAccessGroupMembershipUpdated` +14. POST request - `/AccessManager/getAccessGroupMembershipDeleted` + - `time` = epoch time im miliseconds + ```time + { + "timestamp": 1568646217767 + } + ``` + - `JSON` + ```json + { + "items": [ + { + "id": "cf5cb80e-e6dd-45db-8edd-c9655447821c", + "name": "Testovaci pokus", + "description": "mobile", + "tokenType": "Token", + "tokenBits}": 32, + "tokenData": "7B9D31", + "timeToLive": 255, + "authErrors": 255, + "flags": [ + "Enabled", + "NoValidity" + ], + "subjectId": "72b37f7e-5761-4e6c-8e87-20c0bed0d904" + } + ] + } + ``` + - `JSON2` + ```json2 + { + "items": [ + "7272bcf6-b5ad-46dd-99a9-0c56faddf14c" + ] + } + ``` + ## RestAPI definitions @@ -80,11 +129,10 @@ curl -k --user "spaceti:E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E847 ## Colnod Penta server -- Acces through: `penta-master` IP:`172.16.3.4` +- Acces through: `penta-master` IP: `172.16.4.4` - URL: `192.168.254.11:8443` - Port forwarding: `ssh -L 8443:192.168.254.11:8443 penta-master` - - `!!! does not work !!!` - + ```bash curl -k --user "spaceti:E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0" -d '{"password":"E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0","username":"spaceti"}' -H "Content-Type: application/json" https://192.168.254.11:8443/AaaManager/authSession ``` @@ -101,7 +149,7 @@ It is possible to chain requests: [see doc](https://support.insomnia.rest/articl ### Import workspace -- import: `Insomnia_2019_10_01.yaml` +- import: [Insomnia file on GitLab](https://gitlab.com/spaceti-app/integrations/acs/colnod-connector/blob/master/Insomnia_2019-10-15.yaml) ## Testing Blueprint API diff --git a/src/app/main.cpp b/src/app/main.cpp index 3a95aa2..0ff9f05 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -26,9 +26,9 @@ int main(int argc, char *argv[]) api.syncDataFromColnodToDB(); api.syncDataFromDBToColnod(); }); - QObject::connect(&api, &SyncManager::error, [](){ + QObject::connect(&api, &SyncManager::error, &app, [](){ qDebug() << "error"; - QCoreApplication::exit(); - }); + QCoreApplication::exit(1); + }, Qt::QueuedConnection); return QCoreApplication::exec(); } diff --git a/src/colnod/databasemanager.cpp b/src/colnod/databasemanager.cpp index e2a6059..934baaa 100644 --- a/src/colnod/databasemanager.cpp +++ b/src/colnod/databasemanager.cpp @@ -10,9 +10,13 @@ DatabaseManager::DatabaseManager(const QString& host, const QString& dbName, con db.setPassword(password); if (!db.open()) { - log("Opening error" + db.lastError().text()); + opened = false; + Logger::log("Opening error" + db.lastError().text()); emit error(); } + else{ + opened = true; + } } // add or update subject to db @@ -139,7 +143,7 @@ bool DatabaseManager::executeQuery(QSqlQuery &query, const QString &statement) if (!dryMode || getLastQuery(query).startsWith("SELECT")){ if (!query.exec()){ QString msg = QString("Source: Database Manager, Error: %1").arg(query.lastError().text()); - log(QString(msg)); + Logger::logToDb(QString(msg)); emit error(); } } @@ -151,7 +155,7 @@ bool DatabaseManager::executeQuery(QSqlQuery &query, const QString &statement) if (!dryMode || statement.startsWith("SELECT")){ if (!query.exec(statement)){ QString msg = QString("Source: Database Manager, Error: %1").arg(query.lastError().text()); - log(QString(msg)); + Logger::logToDb(QString(msg)); emit error(); } } @@ -300,3 +304,8 @@ bool DatabaseManager::checkDeletedToken(const QString &id) query.next(); return query.value(0).toBool(); } + +bool DatabaseManager::isOpen() +{ + return opened; +} diff --git a/src/colnod/databasemanager.h b/src/colnod/databasemanager.h index 4613e6e..615bc97 100644 --- a/src/colnod/databasemanager.h +++ b/src/colnod/databasemanager.h @@ -40,6 +40,8 @@ public: QString getSubjectNameById(const QString &id); bool checkDeletedToken(const QString &id); + bool isOpen(); + private: bool checkIfExists(const QString& id, const QString& table); @@ -52,4 +54,5 @@ signals: private: QSqlDatabase db; bool dryMode = false; + bool opened = false; }; diff --git a/src/colnod/datamanager.cpp b/src/colnod/datamanager.cpp index 3789169..6e51e43 100644 --- a/src/colnod/datamanager.cpp +++ b/src/colnod/datamanager.cpp @@ -4,11 +4,11 @@ DataManager::DataManager(const bool &dryMode) : db(std::make_shared("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode)), dryMode(dryMode) { - // db = std::make_shared("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode); - // db = std::make_shared("localhost", "deloitte", "postgres", "34rjkciea12"); - Logger::setDBMan(db); - nextLastSync = db->getNow(); - lastSync = db->getLastSync(); + if (db->isOpen()){ + Logger::setDBMan(db); + nextLastSync = db->getNow(); + lastSync = db->getLastSync(); + } connect(db.get(), &DatabaseManager::error, this, &DataManager::error); } @@ -78,20 +78,24 @@ void DataManager::fillSubjectsToUpdateColnod(const QString& response) // load working sets with updated/deleted tokens from DB void DataManager::fillTokensToChangeDB() { - QSqlQuery query = db->getUpdatedTokens(); - while (query.next()) - { - auto token = std::make_shared(); - token->fromSQLRecord(query); - if (token->getDeleted()){ // sort to delete / to update - tokensFromDBToDeleteFromColnod.append(token->idToStringWithoutBraces()); - } - else{ - tokensToUpdateFromDBToColnod.insert(token->idToStringWithoutBraces(), token); + if (db->isOpen()){ + QSqlQuery query = db->getUpdatedTokens(); + while (query.next()) + { + auto token = std::make_shared(); + token->fromSQLRecord(query); + if (token->getDeleted()){ // sort to delete / to update + tokensFromDBToDeleteFromColnod.append(token->idToStringWithoutBraces()); + } + else{ + tokensToUpdateFromDBToColnod.insert(token->idToStringWithoutBraces(), token); + } } + qDebug() << "DB:" << tokensToUpdateFromDBToColnod.size() << "tokens to update"; + qDebug() << "DB:" << tokensFromDBToDeleteFromColnod.size() << "tokens to delete"; } - qDebug() << "DB:" << tokensToUpdateFromDBToColnod.size() << "tokens to update"; - qDebug() << "DB:" << tokensFromDBToDeleteFromColnod.size() << "tokens to delete"; + else + emit error(); } void DataManager::fillSubjectsToUpdateDB() @@ -279,7 +283,8 @@ void DataManager::clear() // on the very end of sync update last sync time to begin time of this sync void DataManager::updateLastSync() { - db->updateLastSync(nextLastSync); + if (db->isOpen()) + db->updateLastSync(nextLastSync); } // these to filter functions solve colision tokens -> remove when change on this token is earlier then change on the same token on the other side (Colnod/DB) diff --git a/src/colnod/datamanager.h b/src/colnod/datamanager.h index fbff739..f455dfe 100644 --- a/src/colnod/datamanager.h +++ b/src/colnod/datamanager.h @@ -50,6 +50,8 @@ public: const quint64 &getLastSync() {return lastSync;} const quint64 &getCurrentSync() {return nextLastSync;} + bool isDBOpened() {return db->isOpen();} + public slots: void clear(); void setLastUpdate(); diff --git a/src/colnod/logger.cpp b/src/colnod/logger.cpp index 1326479..05e6c91 100644 --- a/src/colnod/logger.cpp +++ b/src/colnod/logger.cpp @@ -1,4 +1,5 @@ #include "logger.h" +#include "databasemanager.h" #include @@ -24,8 +25,8 @@ void Logger::log(const QString& msg) void Logger::logToDb(const QString &msg) { - Q_ASSERT(Logger::dbMan); - Logger::dbMan->log(msg); + if (dbMan) + Logger::dbMan->log(msg); } void Logger::setDBMan(std::shared_ptr dbMan) diff --git a/src/colnod/logger.h b/src/colnod/logger.h index 7c62211..f28bc1d 100644 --- a/src/colnod/logger.h +++ b/src/colnod/logger.h @@ -3,7 +3,9 @@ #include #include #include -#include "databasemanager.h" +#include + +class DatabaseManager; class Logger diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 444ee15..29dcf07 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -2,10 +2,9 @@ SyncManager::SyncManager(bool dryMode) : reqMan(std::make_unique()), - dataMan( std::make_unique(dryMode)) + dataMan( std::make_unique(dryMode)), + dryMode(dryMode) { - this->dryMode = dryMode; - connect(reqMan.get(), &RequestManager::error, this, &SyncManager::error); connect(dataMan.get(), &DataManager::error, this, &SyncManager::error); } @@ -125,8 +124,10 @@ void SyncManager::syncDataFromDBToColnod() if (!dataMan->getTokensToDeleteDB().isEmpty()){ syncDeletedDataFromDBToColnod(); } - else + else{ deleteFinished = true; + areDataUpdatedToColnod(); + } } // add or update tokens to Colnod @@ -184,6 +185,11 @@ void SyncManager::prepareDatabase() dataMan->emptyDatabase(); } +bool SyncManager::isValid() +{ + return dataMan->isDBOpened(); +} + // emit signal when all data is downloaded from Colnod void SyncManager::areChangedDataReady() { diff --git a/src/colnod/syncmanager.h b/src/colnod/syncmanager.h index 7e74ea7..8e5a92f 100644 --- a/src/colnod/syncmanager.h +++ b/src/colnod/syncmanager.h @@ -16,6 +16,8 @@ public: void prepareDatabase(); + bool isValid(); + public slots: void loadDataFromColnod(); void loadDataFromDB(); diff --git a/test/unitTests/UnitTest.cpp b/test/unitTests/UnitTest.cpp index 0093e95..8ef2339 100644 --- a/test/unitTests/UnitTest.cpp +++ b/test/unitTests/UnitTest.cpp @@ -7,14 +7,14 @@ void UnitTest::initTestCase() void UnitTest::loginSuccessfully() { - auto testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(successLogin())); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::successLogin); QVERIFY(spy.isValid()); - testAccess->login(); + testAccess.login(); spy.wait(timeout); QCOMPARE(spy.count(), 1); - QString json = testAccess->jsonResponse; + QString json = testAccess.jsonResponse; qDebug() << json; QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QVERIFY2(doc.object().value("id").isString(), "No parameter 'id' in response"); @@ -23,14 +23,12 @@ void UnitTest::loginSuccessfully() //POST request w/o datas void UnitTest::getSubjects() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); QVERIFY(spy.isValid()); - Response* response = testAccess->getSubjects(); + Response* response = testAccess.getSubjects(); QSignalSpy spy1(response, &Response::ready); - spy.wait(timeout); - QCOMPARE(spy.count(), 1); QCOMPARE(spy1.count(), 1); QString json = response->getJson(); @@ -39,13 +37,13 @@ void UnitTest::getSubjects() QVERIFY2(doc.object().value("items").isArray(), "No parameter 'id' in response"); qDebug() << doc.object().value("items").toArray()[0].toObject()["id"].toString(); QVERIFY2(doc.object().value("items").toArray()[0].toObject()["id"].isString(), "ada"); - + response->deleteLater(); } void UnitTest::getTokens() { - auto* testAccess = new RequestManager(); - Response* response = testAccess->getTokens(); + RequestManager testAccess; + Response* response = testAccess.getTokens(); QSignalSpy spy(response, &Response::ready); QCOMPARE(spy.count(), 0); spy.wait(timeout); @@ -57,149 +55,161 @@ void UnitTest::getTokens() QVERIFY2(doc.object().value("items").isArray(), "No parameter 'id' in response"); qDebug() << doc.object().value("items").toArray()[0].toObject()["id"].toString(); QVERIFY2(doc.object().value("items").toArray()[0].toObject()["id"].isString(), "ada"); + response->deleteLater(); } void UnitTest::getTokenSubject() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getTokenSubject(); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getTokenSubject(); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getSubjectsUpdated() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getSubjectsUpdated(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getSubjectsUpdated(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getSubjectsDeleted() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getSubjectsDeleted(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getSubjectsDeleted(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getTokensUpdated() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getTokensUpdated(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getTokensUpdated(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getTokensDeleted() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getTokensDeleted(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getTokensDeleted(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroups() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroups(); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroups(); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroupsUpdated() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroupsUpdated(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroupsUpdated(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroupsDeleted() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroupsDeleted(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroupsDeleted(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroupMembership() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroupMembership(); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroupMembership(); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroupMembershipUpdated() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroupMembershipUpdated(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroupMembershipUpdated(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::getAccessGroupMembershipDeleted() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getAccessGroupMembershipDeleted(epochMS); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getAccessGroupMembershipDeleted(epochMS); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::setTokens() @@ -208,139 +218,65 @@ void UnitTest::setTokens() QHash> tokens; auto token = getTestToken(); tokens.insert(token->idToStringWithoutBraces(), token); - auto testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->setTokens(tokens); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.setTokens(tokens); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::deleteTokens() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); QList ids; ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546"); - Response* response = testAccess->deleteTokens(ids); + Response* response = testAccess.deleteTokens(ids); QCOMPARE(spy.count(), 0); spy.wait(timeout); QVERIFY(spy.isValid()); QCOMPARE(spy.count(), 1); QString json = response->getJson(); QVERIFY(!json.isEmpty()); + response->deleteLater(); } void UnitTest::subjectJSONParser() { - /* - QFile jsonData(QDir::current().filePath("subjects.json")); - - if (!jsonData.open(QIODevice::ReadOnly)) { - qCritical() << "Couldn't open config file config.json" << QDir::current().filePath("subjects.json"); - QCoreApplication::exit(-1); - return; - } - - QJsonDocument doc = QJsonDocument::fromJson(jsonData.readAll()); - QJsonObject obj = doc.object(); - QJsonArray arr = obj["items"].toArray(); - */ - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getSubjects(); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getSubjects(); spy.wait(timeout); QString json = response->getJson(); QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonArray arr = doc.object()["items"].toArray(); - auto testSubject = new Subject(); - testSubject->fromJSON(arr[1].toObject()); - qDebug() << testSubject->getName() << " Size: " << arr.size(); - QVERIFY(!testSubject->getName().isEmpty()); + Subject testSubject; + testSubject.fromJSON(arr[1].toObject()); + qDebug() << testSubject.getName() << " Size: " << arr.size(); + QVERIFY(!testSubject.getName().isEmpty()); + response->deleteLater(); } void UnitTest::tokenJSONParser() { - auto* testAccess = new RequestManager(); - QSignalSpy spy(testAccess, SIGNAL(responseReady())); - Response* response = testAccess->getTokens(); + RequestManager testAccess; + QSignalSpy spy(&testAccess, &RequestManager::responseReady); + Response* response = testAccess.getTokens(); spy.wait(timeout); QString json = response->getJson(); QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonArray arr = doc.object()["items"].toArray(); - auto testToken = new Token(); - testToken->fromJSON(arr[5].toObject()); - qDebug() << testToken->getName() << " Size: " << arr.size(); - QVERIFY(!testToken->getName().isEmpty()); -} - -//void UnitTest::connectToDB() -//{ -// DatabaseManager *db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12"); -// QVERIFY(db->getOpened()); -// qDebug() << db->getTestMessage(1); -// QVERIFY(true); -// QCOMPARE(db->getTestMessage(1), QStringLiteral("Hello world")); -// QCOMPARE(db->getTestMessage(db->createTestRecord("Now it's diffrent")), QStringLiteral("Now it's diffrent")); -//} - -/* -void UnitTest::debugConnection() -{ - QSslSocket ssl;// = new QSslSocket(); - ssl.connectToHostEncrypted("192.168.1.3", 8443); - ssl.ignoreSslErrors(); - if (!ssl.waitForEncrypted()) - { - qDebug() << ssl.errorString(); - } - QString tmp = "POST /AaaManager/authSession HTTP/1.1\r\nHost: 192.168.1.3:8443\r\nAuthorization: Basic c3BhY2V0aTpFN0ZFQTA3REJDODJGQjlCQTM0QjJFNDUzRTJFRkU4OUYwNTgzRTcxODc1NDM1MDdFRjExRTg0NzI2MDcxRkU0Mjg0NDUzNzJGMkU0NkI0NTVFQjBDNzk3NDdDNTFFMzYyRjQwM0NFMzk0NzNBMkE4QzJERkEwQ0U1Qzk4MjZDMA==\r\nUser-Agent: curl/7.65.3\r\nAccept: **\r\nContent-Type: application/json\r\nContent-Length: 164\r\n\r\n{\"password\":\"E7FEA07DBC82FB9BA34B2E453E2EFE89F0583E7187543507EF11E84726071FE428445372F2E46B455EB0C79747C51E362F403CE39473A2A8C2DFA0CE5C9826C0\",\"username\":\"spaceti\"}"; - qDebug().noquote() << tmp.toUtf8(); - ssl.write(tmp.toUtf8()); - QString data; - while (ssl.waitForReadyRead() && data.isEmpty()) - { - data.append(ssl.readAll().data()); - } - qDebug().noquote() << data; - int index = data.lastIndexOf("id"); - QString tkn = data.mid( index + 5, 36); - tkn = tkn + ":"; - qDebug() << "parsed token : " <localSaveTokens(); - QVERIFY(true); - -} - -void UnitTest::getUuid() -{ - qDebug() << QUuid::createUuid().toString().mid(1,36); - QCOMPARE(1,1); + Token testToken; + testToken.fromJSON(arr[5].toObject()); + qDebug() << testToken.getName() << " Size: " << arr.size(); + QVERIFY(!testToken.getName().isEmpty()); + response->deleteLater(); } std::shared_ptr UnitTest::getTestToken() diff --git a/test/unitTests/unittest.h b/test/unitTests/unittest.h index 0e29652..5e6185b 100644 --- a/test/unitTests/unittest.h +++ b/test/unitTests/unittest.h @@ -37,11 +37,6 @@ private slots: void deleteTokens(); void subjectJSONParser(); void tokenJSONParser(); - //void connectToDB(); - //void debugConnection(); - void saveDataToDB(); - void getUuid(); - private: std::shared_ptr getTestToken();