Add logger class

This commit is contained in:
Ondřej Fischer 2019-10-29 15:59:21 +01:00
parent 921fc2cb77
commit a55a6f6b93
16 changed files with 159 additions and 97 deletions

View File

@ -10,8 +10,9 @@ int main(int argc, char *argv[])
QCoreApplication::setApplicationName("colnod-connector"); QCoreApplication::setApplicationName("colnod-connector");
QCoreApplication::setApplicationVersion("1.0"); QCoreApplication::setApplicationVersion("1.0");
QCommandLineParser parser; QCommandLineParser parser;
Logger *logger = Logger::getLogger();
parser.setApplicationDescription("Dry mode"); parser.setApplicationDescription("Dry mode");
QCommandLineOption dryModeOption("dryMode", "ColnodAPI", "Read-only mode, prints changes which normally be doing"); QCommandLineOption dryModeOption("dryMode", "ColnodAPI", "Read-only mode, prints changes which would normally be made");
parser.addOption(dryModeOption); parser.addOption(dryModeOption);
parser.process(app); parser.process(app);
auto *api = new ColnodAPI(true); // parser.isSet(dryModeOption)); auto *api = new ColnodAPI(true); // parser.isSet(dryModeOption));

View File

@ -6,6 +6,7 @@ SOURCES += \
$$PWD/databasemanager.cpp \ $$PWD/databasemanager.cpp \
$$PWD/datamanager.cpp \ $$PWD/datamanager.cpp \
$$PWD/entity.cpp \ $$PWD/entity.cpp \
$$PWD/logger.cpp \
$$PWD/requestmanager.cpp \ $$PWD/requestmanager.cpp \
$$PWD/response.cpp \ $$PWD/response.cpp \
$$PWD/subject.cpp \ $$PWD/subject.cpp \
@ -16,6 +17,7 @@ HEADERS += \
$$PWD/databasemanager.h \ $$PWD/databasemanager.h \
$$PWD/datamanager.h \ $$PWD/datamanager.h \
$$PWD/entity.h \ $$PWD/entity.h \
$$PWD/logger.h \
$$PWD/requestmanager.h \ $$PWD/requestmanager.h \
$$PWD/response.h \ $$PWD/response.h \
$$PWD/subject.h \ $$PWD/subject.h \

View File

@ -2,6 +2,7 @@
#include "requestmanager.h" #include "requestmanager.h"
#include "datamanager.h" #include "datamanager.h"
#include "logger.h"
class ColnodAPI : public QObject class ColnodAPI : public QObject
{ {

View File

@ -31,8 +31,8 @@ int DatabaseManager::saveSubject(Subject* subject, const QString& table)
executeQuery(query); executeQuery(query);
return -1; return -1;
} }
else
{
query.prepare(QString("INSERT INTO %1 (id, description, last_update, name, pin) " query.prepare(QString("INSERT INTO %1 (id, description, last_update, name, pin) "
"VALUES (:id, :description, :last_update, :name, :pin)").arg(table)); "VALUES (:id, :description, :last_update, :name, :pin)").arg(table));
query.bindValue(":id", id); query.bindValue(":id", id);
@ -42,7 +42,7 @@ int DatabaseManager::saveSubject(Subject* subject, const QString& table)
query.bindValue(":pin", subject->getPin()); query.bindValue(":pin", subject->getPin());
executeQuery(query); executeQuery(query);
return 1; return 1;
}
} }
// add or update token to DB // add or update token to DB
@ -69,8 +69,8 @@ int DatabaseManager::saveToken(Token* token, const QString& table)
executeQuery(query); executeQuery(query);
return -1; return -1;
} }
else
{
query.prepare(QString("INSERT INTO %1 (id, auth_errors, description, enabled, last_update, name, no_validity, time_to_live, token_bits, token_data, token_type, subject_id, last_modified, deleted) " query.prepare(QString("INSERT INTO %1 (id, auth_errors, description, enabled, last_update, name, no_validity, time_to_live, token_bits, token_data, token_type, subject_id, last_modified, deleted) "
"VALUES (:id, :auth_errors, :description, :enabled, :last_update, :name, :no_validity, :time_to_live, :token_bits, :token_data, :token_type, :subject_id, :last_modified, :deleted)").arg(table)); "VALUES (:id, :auth_errors, :description, :enabled, :last_update, :name, :no_validity, :time_to_live, :token_bits, :token_data, :token_type, :subject_id, :last_modified, :deleted)").arg(table));
query.bindValue(":id", id); query.bindValue(":id", id);
@ -89,7 +89,7 @@ int DatabaseManager::saveToken(Token* token, const QString& table)
query.bindValue(":deleted", token->getDeleted()); query.bindValue(":deleted", token->getDeleted());
executeQuery(query); executeQuery(query);
return 1; return 1;
}
} }
// add of update subject attributes // add of update subject attributes
@ -172,10 +172,10 @@ bool DatabaseManager::executeQuery(QSqlQuery &query) const
query.exec(); query.exec();
return true; return true;
} }
else{
bool res = query.exec(); bool res = query.exec();
return res; return res;
}
} }
void DatabaseManager::dropTables() void DatabaseManager::dropTables()
@ -270,3 +270,11 @@ void DatabaseManager::setLastUpdate(const QString& id, quint64 lastUpdate)
executeQuery(query); executeQuery(query);
} }
void DatabaseManager::log(QString msg)
{
query.prepare("INSERT INTO logs (msg) VALUES (:msg)");
query.bindValue(":msg", msg);
query.exec();
//executeQuery(query);
}

View File

@ -10,6 +10,7 @@
#include "subject.h" #include "subject.h"
#include "token.h" #include "token.h"
#include <QDateTime> #include <QDateTime>
//#include "logger.h"
class DatabaseManager : public QObject class DatabaseManager : public QObject
@ -35,6 +36,8 @@ public:
void setLastUpdate(const QString& id, quint64 lastUpdate); void setLastUpdate(const QString& id, quint64 lastUpdate);
void log(QString msg);
private: private:
bool checkIfExists(const QString& id, const QString& table); bool checkIfExists(const QString& id, const QString& table);
bool executeQuery(QSqlQuery &query) const; bool executeQuery(QSqlQuery &query) const;

View File

@ -3,10 +3,11 @@
DataManager::DataManager(const bool &dryMode) DataManager::DataManager(const bool &dryMode)
{ {
db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode); db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode);
//db = new DatabaseManager("localhost", "deloitte", "postgres", "34rjkciea12");
Logger::setDBMan(db);
nextLastSync = db->getNow(); nextLastSync = db->getNow();
lastSync = db->getLastSync(); lastSync = db->getLastSync();
this->dryMode = dryMode; this->dryMode = dryMode;
//db = new DatabaseManager("localhost", "deloitte", "postgres", "34rjkciea12");
} }
// load all tokens from colnod to comparing with working set from DB // load all tokens from colnod to comparing with working set from DB
@ -105,6 +106,8 @@ void DataManager::fillSubjectsToUpdateDB()
// load working set with subjest to delete from Colnod // load working set with subjest to delete from Colnod
void DataManager::fillSubjectsToDeleteColnod(const QString& json) void DataManager::fillSubjectsToDeleteColnod(const QString& json)
{ {
Logger::log("hello from dataManager :)");
Logger::logToDb("testing");
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
QJsonArray items = doc.object()["items"].toArray(); QJsonArray items = doc.object()["items"].toArray();
if (!items.empty()) if (!items.empty())
@ -120,7 +123,7 @@ void DataManager::fillSubjectsToDeleteColnod(const QString& json)
} }
} }
// load working set with tokens to delete from colnod // load working set with tokens to delete from DB
void DataManager::fillTokensToDeleteColnod(const QString& json) void DataManager::fillTokensToDeleteColnod(const QString& json)
{ {
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
@ -149,7 +152,8 @@ void DataManager::pushSubjectsToDB()
if (subjectsToUpdateFromColnodToDB.contains("empty")) { if (subjectsToUpdateFromColnodToDB.contains("empty")) {
return; return;
} }
int updated = 0, added = 0; int updated = 0;
int added = 0;
qInfo() << "Subjects in progress..."; qInfo() << "Subjects in progress...";
for (const auto& subject : subjectsToUpdateFromColnodToDB) for (const auto& subject : subjectsToUpdateFromColnodToDB)
{ {
@ -170,7 +174,8 @@ void DataManager::pushTokensToDB()
return; return;
} }
filterTokensColnod(); filterTokensColnod();
int updated = 0, added = 0; int updated = 0;
int added = 0;
qInfo() << "Tokens in progress..."; qInfo() << "Tokens in progress...";
for (const auto& token : tokensToUpdateFromColnodToDB) for (const auto& token : tokensToUpdateFromColnodToDB)
{ {
@ -181,6 +186,7 @@ void DataManager::pushTokensToDB()
} }
qInfo() << added << " tokens added to DB"; qInfo() << added << " tokens added to DB";
qInfo() << updated << " tokens updated to DB"; qInfo() << updated << " tokens updated to DB";
} }
void DataManager::deleteSubjectsFromDB() void DataManager::deleteSubjectsFromDB()
@ -253,11 +259,11 @@ void DataManager::updateLastSync()
// 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) // 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)
void DataManager::filterTokensDB() void DataManager::filterTokensDB()
{ {
for (auto token : tokensToUpdateFromDBToColnod) for (const auto& token : tokensToUpdateFromDBToColnod)
{ {
QString id = token->idToStringWithoutBraces(); QString id = token->idToStringWithoutBraces();
Q_ASSERT(token = allTokensFromColnod.value(id)); // if working sets are loading correctly equels should never happend Q_ASSERT(token != allTokensFromColnod.value(id)); // if working sets are loading correctly equels should never happend
if (allTokensFromColnod.contains(id) && token < allTokensFromColnod.value(id)) if (allTokensFromColnod.contains(id) && *token < *allTokensFromColnod.value(id))
tokensToUpdateFromDBToColnod.remove(id); tokensToUpdateFromDBToColnod.remove(id);
} }
} }
@ -273,8 +279,7 @@ void DataManager::filterTokensColnod()
auto tokenDB = new Token; auto tokenDB = new Token;
tokenDB->fromSQLRecord(record); tokenDB->fromSQLRecord(record);
Q_ASSERT(tokenDB != token); Q_ASSERT(tokenDB != token);
qDebug() << tokenDB->getLastModified() << " > " << token->getLastUpdate(); if (*tokenDB > *token)
if (tokenDB > token)
tokensToUpdateFromColnodToDB.remove(id); tokensToUpdateFromColnodToDB.remove(id);
} }
} }

View File

@ -6,6 +6,7 @@
#include "databasemanager.h" #include "databasemanager.h"
#include <QJsonDocument> #include <QJsonDocument>
#include <qjsonarray.h> #include <qjsonarray.h>
#include <logger.h>
class DataManager : public QObject class DataManager : public QObject

View File

@ -40,19 +40,19 @@ QString Entity::idToStringWithoutBraces() const
} }
void Entity::fromJSON(const QJsonObject &json) { void Entity::fromJSON(const QJsonObject &json) {
id = json.value("id").toString(); id = json["id"].toString();
name = json.value("name").toString(); name = json["name"].toString();
description = json.value("description").toString(); description = json["description"].toString();
lastUpdate = json.value("lastUpdate").toDouble(); lastUpdate = json["lastUpdate"].toDouble();
} }
QJsonObject Entity::toJSON() const { QJsonObject Entity::toJSON() const {
QJsonObject json; QJsonObject json;
json.value("id") = this->idToStringWithoutBraces(); json["id"] = this->idToStringWithoutBraces();
json.value("name") = name; json["name"] = name;
json.value("description") = description; json["description"] = description;
json.value("lastUpdate") = lastUpdate; json["lastUpdate"] = lastUpdate;
return json; return json;
} }

33
src/colnod/logger.cpp Normal file
View File

@ -0,0 +1,33 @@
#include "logger.h"
Logger::Logger()
{
dbMan = nullptr;
}
Logger *Logger::getLogger()
{
if (!logger)
logger = new Logger;
return logger;
}
void Logger::log(const QString& msg)
{
qDebug() << msg;
}
void Logger::logToDb(const QString &msg)
{
dbMan->log(msg);
}
void Logger::setDBMan(DatabaseManager *dbMan)
{
Logger::dbMan = dbMan;
}
Logger *Logger::logger = nullptr;
DatabaseManager *Logger::dbMan = nullptr;

28
src/colnod/logger.h Normal file
View File

@ -0,0 +1,28 @@
#pragma once
#include <QString>
#include <QDebug>
#include <QSqlDatabase>
#include "databasemanager.h"
class Logger
{
static Logger *logger;
Logger();
static DatabaseManager *dbMan;
public:
static Logger *getLogger();
static void log(const QString& msg);
static void logToDb(const QString& msg);
static void setDBMan(DatabaseManager* dbMan);
private:
};

View File

@ -24,6 +24,7 @@
#include "token.h" #include "token.h"
#include "response.h" #include "response.h"
#include "logger.h"
class RequestManager : public QObject class RequestManager : public QObject
{ {

View File

@ -16,21 +16,21 @@ QString Subject::getEmail() const {
void Subject::fromJSON(const QJsonObject &json) { void Subject::fromJSON(const QJsonObject &json) {
Entity::fromJSON(json); Entity::fromJSON(json);
attributes = json.value("attributes").toObject().value("items").toObject(); attributes = json["attributes"].toObject()["items"].toObject();
for (const auto & attributeType : attributeTypes) for (const auto & attributeType : attributeTypes)
{ {
if (!attributes[attributeType].toString().isEmpty()){ if (!attributes[attributeType].toString().isEmpty()){
atr.append(qMakePair(attributeType, attributes[attributeType].toString())); atr.append(qMakePair(attributeType, attributes[attributeType].toString()));
} }
} }
const auto &tokenFlagsArray = json.value("tokenFlags").toArray(); const auto &tokenFlagsArray = json["tokenFlags"].toArray();
for(const auto &flag : tokenFlagsArray){ for(const auto &flag : tokenFlagsArray){
tokenFlags.insert(flag.toString()); tokenFlags.insert(flag.toString());
} }
pin = json.value("pin").toString(); pin = json["pin"].toString();
const auto &pinFlagsArray = json.value("pinFlags").toArray(); const auto &pinFlagsArray = json["pinFlags"].toArray();
for(const auto &flag : pinFlagsArray){ for(const auto &flag : pinFlagsArray){
pinFlags.insert(flag.toString()); pinFlags.insert(flag.toString());
} }
@ -41,10 +41,10 @@ QJsonObject Subject::toJSON() const {
QJsonObject json = Entity::toJSON(); QJsonObject json = Entity::toJSON();
QJsonObject items({{"items", attributes}}); QJsonObject items({{"items", attributes}});
json.value("atributes") = items; json["atributes"] = items;
json.value("tokenFlags") = QJsonArray::fromStringList(tokenFlags.toList()); json["tokenFlags"] = QJsonArray::fromStringList(tokenFlags.toList());
json.value("pin") = pin; json["pin"] = pin;
json.value("pinFlags") = QJsonArray::fromStringList(pinFlags.toList()); json["pinFlags"] = QJsonArray::fromStringList(pinFlags.toList());
return json; return json;
} }

View File

@ -26,32 +26,29 @@ Token::Token(const QString &name)
void Token::fromJSON(const QJsonObject &json) { void Token::fromJSON(const QJsonObject &json) {
Entity::fromJSON(json); Entity::fromJSON(json);
tokenType = json.value("tokenType").toString(); tokenType = json["tokenType"].toString();
tokenBits = json.value("tokenBits").toInt(); tokenBits = json["tokenBits"].toInt();
tokenData = json.value("tokenData").toString(); tokenData = json["tokenData"].toString();
validFrom = json.value("validFrom").toDouble(); timeToLive = json["timeToLive"].toInt();
validTo = json.value("validTo").toDouble();
timeToLive = json.value("timeToLive").toInt();
authErrors = json["authErrors"].toInt(); authErrors = json["authErrors"].toInt();
const auto &flagsArray = json["flags"].toArray(); const auto &flagsArray = json["flags"].toArray();
for(const auto &flag : flagsArray){ for(const auto &flag : flagsArray){
flags.insert(flag.toString()); flags.insert(flag.toString());
} }
subjectId = json.value("subjectId").toString(); subjectId = json["subjectId"].toString();
} }
QJsonObject Token::toJSON() const { QJsonObject Token::toJSON() const {
QJsonObject json = Entity::toJSON(); QJsonObject json = Entity::toJSON();
json.insert("tokenType", tokenType);
json.value("tokenType") = tokenType; json["tokenBits"] = tokenBits;
json.value("tokenBits") = tokenBits; json["tokenType"] = tokenType;
json.value("tokenData") = tokenData; json["tokenBits"] = tokenBits;
json.value("validFrom") = validFrom; json["tokenData"] = tokenData;
json.value("validTo") = validTo; json["timeToLive"] = timeToLive;
json.value("timeToLive") = timeToLive; json["authErrors"] = authErrors;
json.value("authErrors") = authErrors; json["flags"] = QJsonArray::fromStringList(flags.toList());
json.value("flags") = QJsonArray::fromStringList(flags.toList()); json["subjectId"] = subjectId.toString().mid(1,36);
json.value("subjectId") = subjectId.toString().mid(1,36);
return json; return json;
} }
@ -104,22 +101,6 @@ void Token::setTokenData(const QString &tokenData) {
Token::tokenData = tokenData; Token::tokenData = tokenData;
} }
quint64 Token::getValidFrom() const {
return validFrom;
}
void Token::setValidFrom(quint64 validFrom) {
Token::validFrom = validFrom;
}
quint64 Token::getValidTo() const {
return validTo;
}
void Token::setValidTo(quint64 validTo) {
Token::validTo = validTo;
}
int Token::getTimeToLive() const { int Token::getTimeToLive() const {
return timeToLive; return timeToLive;
} }

View File

@ -19,7 +19,7 @@ public:
return lToken.getLastModified() < rToken.getLastUpdate(); return lToken.getLastModified() < rToken.getLastUpdate();
} }
friend bool operator>(const Token &lToken, const Token &rToken){ friend bool operator>(const Token &lToken, const Token &rToken){
return rToken.getLastModified() > lToken.getLastUpdate(); return lToken.getLastModified() > rToken.getLastUpdate();
} }
const QString &getTokenType() const; const QString &getTokenType() const;
@ -28,10 +28,6 @@ public:
void setTokenBits(int tokenBits); void setTokenBits(int tokenBits);
const QString &getTokenData() const; const QString &getTokenData() const;
void setTokenData(const QString &tokenData); void setTokenData(const QString &tokenData);
quint64 getValidFrom() const;
void setValidFrom(quint64 validFrom);
quint64 getValidTo() const;
void setValidTo(quint64 validTo);
int getTimeToLive() const; int getTimeToLive() const;
void setTimeToLive(int timeToLive); void setTimeToLive(int timeToLive);
int getAuthErrors() const; int getAuthErrors() const;
@ -55,8 +51,6 @@ private:
QString tokenType; QString tokenType;
int tokenBits{}; int tokenBits{};
QString tokenData; QString tokenData;
qint64 validFrom{};
qint64 validTo{};
int timeToLive{}; int timeToLive{};
int authErrors{}; int authErrors{};
QSet<QString> flags; QSet<QString> flags;

View File

@ -2,32 +2,33 @@
void ComplexTest::initTestCase() void ComplexTest::initTestCase()
{ {
auto reqMan1 = new RequestManager; // auto reqMan1 = new RequestManager;
QList<QString> ids; // QList<QString> ids;
ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); // ids.append("582c982d-6fd7-4856-8548-7ce542791c7a");
ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546"); // ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546");
Response* deleteTokensResp = reqMan1->deleteTokens(ids); // Response* deleteTokensResp = reqMan1->deleteTokens(ids);
QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready); // QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready);
QCOMPARE(deleteTokensRespSpy.count(), 0); // QCOMPARE(deleteTokensRespSpy.count(), 0);
deleteTokensRespSpy.wait(timeout); // deleteTokensRespSpy.wait(timeout);
QTest::qWait(2500); // QTest::qWait(2500);
start = QDateTime::currentMSecsSinceEpoch()-2000; start = QDateTime::currentMSecsSinceEpoch()-2000;
api = new ColnodAPI(true); api = new ColnodAPI();
qDebug() << start; qDebug() << start;
} }
void ComplexTest::cleanupTestCase() void ComplexTest::cleanupTestCase()
{ {
QList<QString> ids; // QList<QString> ids;
ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); // ids.append("582c982d-6fd7-4856-8548-7ce542791c7a");
ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546"); // ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546");
auto reqMan = new RequestManager; // auto reqMan = new RequestManager;
Response* deleteTokensResp = reqMan->deleteTokens(ids); // Response* deleteTokensResp = reqMan->deleteTokens(ids);
QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready); // QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready);
QCOMPARE(deleteTokensRespSpy.count(), 0); // QCOMPARE(deleteTokensRespSpy.count(), 0);
deleteTokensRespSpy.wait(timeout); // deleteTokensRespSpy.wait(timeout);
QCOMPARE(deleteTokensRespSpy.count(), 1); // QCOMPARE(deleteTokensRespSpy.count(), 1);
} }
void ComplexTest::complexTest() void ComplexTest::complexTest()
@ -82,7 +83,7 @@ void ComplexTest::complexTest()
// DELETE_TOKENS_CHECK_BEGIN // DELETE_TOKENS_CHECK_BEGIN
QList<QString> ids; QList<QString> ids;
ids.append("582c982d-6fd7-4856-8548-7ce542791c7a"); ids.append("062c93f6-ba3e-46af-a3a6-7a2988d1f0e9");
Response* deleteTokensResp = reqMan->deleteTokens(ids); Response* deleteTokensResp = reqMan->deleteTokens(ids);
QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready); QSignalSpy deleteTokensRespSpy(deleteTokensResp, &Response::ready);
QCOMPARE(deleteTokensRespSpy.count(), 0); QCOMPARE(deleteTokensRespSpy.count(), 0);
@ -101,7 +102,7 @@ void ComplexTest::complexTest()
QCOMPARE(getTokensDeletedRespSpy.count(), 1); QCOMPARE(getTokensDeletedRespSpy.count(), 1);
auto doc2 = getJsonDoc(getTokensDeletedResp->getJson()); auto doc2 = getJsonDoc(getTokensDeletedResp->getJson());
QCOMPARE(doc2.object()["items"].toArray().size(), 1); QCOMPARE(doc2.object()["items"].toArray().size(), 1);
QVERIFY(doc2.object()["items"].toArray().contains("582c982d-6fd7-4856-8548-7ce542791c7a")); QVERIFY(doc2.object()["items"].toArray().contains("062c93f6-ba3e-46af-a3a6-7a2988d1f0e9"));
// CHECK_DELETED_TOKENS_END // CHECK_DELETED_TOKENS_END
// LAST_TESTS (for sure) // LAST_TESTS (for sure)
@ -128,6 +129,8 @@ void ComplexTest::fullSync()
void ComplexTest::syncLastUpdated() void ComplexTest::syncLastUpdated()
{ {
Logger *logger = Logger::getLogger();
Logger::log("ahoj");
api->loadDataFromColnod(); api->loadDataFromColnod();
QSignalSpy spy(api, &ColnodAPI::dataDownloaded); QSignalSpy spy(api, &ColnodAPI::dataDownloaded);
spy.wait(timeout); spy.wait(timeout);
@ -175,7 +178,7 @@ QJsonDocument ComplexTest::getJsonDoc(const QString &json)
QPointer<Token> ComplexTest::getTestToken() QPointer<Token> ComplexTest::getTestToken()
{ {
QJsonObject jsonToken; QJsonObject jsonToken;
jsonToken.insert("id", "582c982d-6fd7-4856-8548-7ce542791c7a"); jsonToken.insert("id", "062c93f6-ba3e-46af-a3a6-7a2988d1f0e9");
jsonToken.insert("name", "test"); jsonToken.insert("name", "test");
jsonToken.insert("description", "mobile"); jsonToken.insert("description", "mobile");
jsonToken.insert("tokenType", "Token"); jsonToken.insert("tokenType", "Token");

View File

@ -6,6 +6,7 @@
#include "response.h" #include "response.h"
#include "requestmanager.h" #include "requestmanager.h"
#include "colnodapi.h" #include "colnodapi.h"
#include "logger.h"
class ComplexTest : public QObject class ComplexTest : public QObject
{ {