From c5e8a99a197232876cd5fa11cd78194fb63d9edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Wed, 27 Nov 2019 16:38:12 +0100 Subject: [PATCH 1/3] Implement basic unit tests for download data and open database --- server-sdk | 2 +- src/colnod/databaseapi.cpp | 8 +--- src/colnod/databaseapi.h | 8 +++- test/auto/database/tst_databaseapi.cpp | 56 +++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 10 deletions(-) diff --git a/server-sdk b/server-sdk index 61feac4..ee08677 160000 --- a/server-sdk +++ b/server-sdk @@ -1 +1 @@ -Subproject commit 61feac4632372fcf781449da0bf0de14f1793af8 +Subproject commit ee08677641fef053a8f6938f9b31e6792cbe7fff diff --git a/src/colnod/databaseapi.cpp b/src/colnod/databaseapi.cpp index ded9621..7c4b695 100644 --- a/src/colnod/databaseapi.cpp +++ b/src/colnod/databaseapi.cpp @@ -12,13 +12,9 @@ DatabaseAPI::DatabaseAPI(serversdk::DatabaseManager *dbMan, bool dryMode) mDbMan->setDryMode(dryMode); } -bool DatabaseAPI::open() +bool DatabaseAPI::open(QString host, QString name, QString user, QString password) { - return mDbMan->openPostgres(QStringLiteral("192.168.1.94"), - QStringLiteral("deloitte"), - QStringLiteral("postgres"), - QStringLiteral("34rjkciea12"), - QStringLiteral("postgres-connection")); + return mDbMan->openPostgres(host, name, user, password); } bool DatabaseAPI::executeQuery(QSqlQuery &query, const QString &statement) diff --git a/src/colnod/databaseapi.h b/src/colnod/databaseapi.h index ef71c1e..34b125d 100644 --- a/src/colnod/databaseapi.h +++ b/src/colnod/databaseapi.h @@ -20,7 +20,10 @@ class DatabaseAPI : public QObject public: explicit DatabaseAPI(serversdk::DatabaseManager *dbMan, bool dryMode); - bool open(); + bool open(QString host = "192.168.1.94", + QString name = "deloitte", + QString user = "postgres", + QString password = "34rjkciea12"); bool executeQuery(QSqlQuery &query, const QString &statement = QString()); @@ -58,8 +61,9 @@ signals: void error(); private: - bool mDryMode; bool mValid = true; + + bool mDryMode; serversdk::DatabaseManager *mDbMan = nullptr; std::unique_ptr utils; }; diff --git a/test/auto/database/tst_databaseapi.cpp b/test/auto/database/tst_databaseapi.cpp index 82878f8..43632ef 100644 --- a/test/auto/database/tst_databaseapi.cpp +++ b/test/auto/database/tst_databaseapi.cpp @@ -8,13 +8,19 @@ class DatabaseTest : public QObject Q_OBJECT private slots: void open_database_test(); - + void open_database_ip_fail_test(); + void open_database_name_fail_test(); + void open_database_user_fail_test(); + void open_database_password_fail_test(); + void download_data_test(); + void download_data_fail_test(); }; void DatabaseTest::open_database_test() { serversdk::DatabaseManager dbManager; DatabaseAPI db(&dbManager, false); + QVERIFY(db.open()); // TODO: fix -> databaseAPI must be able to add credentials to check for wrong one or test wrong IP //db.open(user, password, url, etc ); @@ -23,6 +29,54 @@ void DatabaseTest::open_database_test() // QVERIFY(!db.open(worng ip)); } +void DatabaseTest::open_database_ip_fail_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + QVERIFY(!db.open("1.1.1.1")); +} + +void DatabaseTest::open_database_name_fail_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + QVERIFY(!db.open("192.168.1.94", "wrong name")); +} + +void DatabaseTest::open_database_user_fail_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + QVERIFY(!db.open("192.168.1.94", "delliote", "wrong user")); +} + +void DatabaseTest::open_database_password_fail_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + QVERIFY(!db.open("192.168.1.94", "delliote", "postgres", "wrong password")); +} + + +void DatabaseTest::download_data_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + db.open(); + QVERIFY(db.downloadData()); +} + +void DatabaseTest::download_data_fail_test() +{ + serversdk::DatabaseManager dbManager; + DatabaseAPI db(&dbManager, false); + + // fail open so download data should return nullptr + db.open("1.1.1.1"); + QVERIFY(!db.downloadData()); +} + + QTEST_APPLESS_MAIN(DatabaseTest) #include "tst_databaseapi.moc" From cdf6241da4c6b59dab1eca171b995df4d07f56c0 Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Wed, 27 Nov 2019 16:39:48 +0100 Subject: [PATCH 2/3] adding first tests for SyncManager --- server-sdk | 2 +- src/colnod/syncmanager.cpp | 10 ++++++++-- test/auto/auto.pro | 1 + test/auto/syncmanager/tst_syncmanager.cpp | 23 +++++++++++++++++++++++ test/auto/syncmanager/tst_syncmanager.pro | 11 +++++++++++ 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 test/auto/syncmanager/tst_syncmanager.cpp create mode 100644 test/auto/syncmanager/tst_syncmanager.pro diff --git a/server-sdk b/server-sdk index 61feac4..5ee8276 160000 --- a/server-sdk +++ b/server-sdk @@ -1 +1 @@ -Subproject commit 61feac4632372fcf781449da0bf0de14f1793af8 +Subproject commit 5ee82764e7fdcd6566b7eceac985b42348e2efcd diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 5f39e5c..c56e7a9 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -62,14 +62,20 @@ bool SyncManager::startSynchronization() // NOW I HAVE DATA FROM DATABASE - colnod->downloadData(); connect(colnod.get(), &ColnodAPI::downloadDataFinished, [=](std::shared_ptr data) { - // NOW I HAVE DATA FROM COLNOD + if (!data) { + qCritical(syncmanager) << "Not possible to get correct data from colnod"; + return; + } + + + // NOW I HAVE DATA FROM COLNOD // I can process data qDebug(syncmanager) << "I have colnod and database data"; qDebug(syncmanager) << "updated token count" << data->updatedTokens.count(); + }); return true; diff --git a/test/auto/auto.pro b/test/auto/auto.pro index fb0ec6e..d155315 100644 --- a/test/auto/auto.pro +++ b/test/auto/auto.pro @@ -2,3 +2,4 @@ TEMPLATE = subdirs SUBDIRS += \ database/tst_databaseapi.pro \ + syncmanager/tst_syncmanager.pro \ diff --git a/test/auto/syncmanager/tst_syncmanager.cpp b/test/auto/syncmanager/tst_syncmanager.cpp new file mode 100644 index 0000000..efae1ca --- /dev/null +++ b/test/auto/syncmanager/tst_syncmanager.cpp @@ -0,0 +1,23 @@ +#include + +#include "syncmanager.h" +// add necessary includes here + +class SyncManagerTest : public QObject +{ + Q_OBJECT +private slots: + void sync_init_test(); + +}; + +void SyncManagerTest::sync_init_test() +{ + SyncManager sync(true); + + QVERIFY(!sync.databaseInitialization()); +} + +QTEST_MAIN(SyncManagerTest) + +#include "tst_syncmanager.moc" diff --git a/test/auto/syncmanager/tst_syncmanager.pro b/test/auto/syncmanager/tst_syncmanager.pro new file mode 100644 index 0000000..aadc383 --- /dev/null +++ b/test/auto/syncmanager/tst_syncmanager.pro @@ -0,0 +1,11 @@ +QT += testlib +QT -= gui + +CONFIG += qt console warn_on depend_includepath testcase +CONFIG -= app_bundle + +TEMPLATE = app + +SOURCES += tst_syncmanager.cpp + +include(../../test.pri) From 1ca75b47d066dd3c013442ec64f70dec08f4baf4 Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Thu, 28 Nov 2019 10:20:46 +0100 Subject: [PATCH 3/3] database must pass initialization test --- test/auto/syncmanager/tst_syncmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/auto/syncmanager/tst_syncmanager.cpp b/test/auto/syncmanager/tst_syncmanager.cpp index efae1ca..ad97eff 100644 --- a/test/auto/syncmanager/tst_syncmanager.cpp +++ b/test/auto/syncmanager/tst_syncmanager.cpp @@ -15,7 +15,7 @@ void SyncManagerTest::sync_init_test() { SyncManager sync(true); - QVERIFY(!sync.databaseInitialization()); + QVERIFY(sync.databaseInitialization()); } QTEST_MAIN(SyncManagerTest)