fix incorrect error handling

This commit is contained in:
Ondřej Fischer 2019-12-03 13:09:43 +01:00
parent 10ac748985
commit 0f948afa71
3 changed files with 44 additions and 9 deletions

View File

@ -269,7 +269,7 @@ bool DatabaseAPI::deleteItems(const QList<QString> &ids, const QString &tableNam
std::shared_ptr<Token> DatabaseAPI::getToken(const QString &id)
{
auto query = mDbMan->createQuery();
query.prepare("SELECT * FROM colnod_token WHERE d = :id");
query.prepare("SELECT * FROM colnod_token WHERE id = :id");
query.bindValue(":id", id);
if (!executeQuery(query)) {
qCritical(database) << "ERROR during accessing existing tokens. EXIT";
@ -278,7 +278,7 @@ std::shared_ptr<Token> DatabaseAPI::getToken(const QString &id)
}
auto list = utils->tableFromQuery<Token>(query);
if (list.isEmpty())
return nullptr;
return std::make_shared<Token>();
return list.at(0);
}

View File

@ -76,7 +76,7 @@ bool SyncManager::startSynchronization()
std::unique_ptr<PreparedData> preparedData = prepareDataNew(databaseData, colnodData);
if (!preparedData) {
qCritical(syncmanager) << "Not possible to get correct data from colnod";
qCritical(syncmanager) << "Not possible to compose data";
QCoreApplication::exit(-1);
return;
}
@ -167,6 +167,18 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
// not conflict so add to prepered tokens
if (!databaseData->updatedTokens.contains(colnodToken->id())) {
auto token = database->getToken(colnodToken->id());
if (!token) {
qCritical(syncmanager) << "Not possible to access database.";
return nullptr;
}
if ( token ) {
// alredy synced ( tokens are same )
if (token == colnodToken) {
alreadySynced.append(colnodToken->id());
continue;
}
}
preparedColnodData->updatedTokens.insert(colnodToken->id(), colnodToken);
continue;
}
@ -178,12 +190,6 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
else {
conflicts.append(colnodToken->id());
}
auto token = database->getToken(colnodToken->id());
if ( token )
// alredy synced ( tokens are same )
if (token == colnodToken)
alreadySynced.append(colnodToken->id());
}
for (const auto &id : colnodData->deletedTokens) {

View File

@ -2,6 +2,7 @@
#include "databaseapi.h"
// add necessary includes here
#include "token.h"
class DatabaseTest : public QObject
{
@ -14,6 +15,7 @@ private slots:
void open_database_password_fail_test();
void download_data_test();
void download_data_fail_test();
void get_token_test();
};
void DatabaseTest::open_database_test()
@ -76,6 +78,33 @@ void DatabaseTest::download_data_fail_test()
QVERIFY(!db.downloadData());
}
void DatabaseTest::get_token_test()
{
serversdk::DatabaseManager dbManager;
DatabaseAPI db(&dbManager, false);
QVERIFY(!db.getToken("6c907a42-0401-4403-8af4-9d58eb35cddc"));
db.open();
auto token = db.getToken("6c907a42-0401-4403-8af4-9d58eb35cddc");
QVERIFY(token);
auto compareToken = std::make_shared<Token>();
compareToken->setId("6c907a42-0401-4403-8af4-9d58eb35cddc");
compareToken->setName("Losenicky");
compareToken->setDescription("");
compareToken->setLastUpdate(QDateTime::fromMSecsSinceEpoch(1543494713260));
compareToken->setTokenData("AB1EA4D4");
compareToken->setSubjectId("69c6e3b3-3f23-456f-a6c2-73ef08e589a4");
QCOMPARE(compareToken, token);
auto compareToken1 = std::make_shared<Token>();
auto token1 = db.getToken("non-existing-id");
QVERIFY(token1);
QCOMPARE(compareToken1, token1);
}
QTEST_APPLESS_MAIN(DatabaseTest)