From 674b49163bf481032bbd2af1be76c7e60333fb5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 12:52:07 +0100 Subject: [PATCH 1/7] add download fail test --- src/colnod/colnodapi.cpp | 8 +++----- src/colnod/colnodapi.h | 4 ++-- src/colnod/syncmanager.cpp | 2 +- test/auto/colnod/tst_colnodapi.cpp | 32 ++++++++++++++++++++++++++++-- 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 4340c8b..f1a8419 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -3,12 +3,9 @@ Q_LOGGING_CATEGORY(colnod, "colnod.api"); -ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan, const qint64 &lastSync, const bool &dryMode, const QString &userName, const QString &password) +ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan, const bool &dryMode, const QString &userName, const QString &password) :mReqMan(reqMan), mUserName(userName), mPassword(password), mDryMode(dryMode) { - mLastSync.set_timestamp(lastSync); - mData = std::make_shared(); - // ----------------------------------- mReqMan->setIgnoreSsl(true); // ----------------------------------- @@ -21,7 +18,8 @@ void ColnodAPI::downloadData(const Timestamp &time) connect(login.get(), &serversdk::Request::finished, this, [=](){ // Get login token if (!checkRequest(login)) { - emit error(); + emit downloadDataFinished(nullptr); + return; } AuthToken token; diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index af79297..77dd515 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -48,7 +48,7 @@ class ColnodAPI: public QObject Q_OBJECT public: ColnodAPI() = default; - ColnodAPI(serversdk::RequestManager* reqMan, const qint64 &lastSync = 0, const bool &dryMode = false, const QString &userName = "spaceti", const QString &password = "spaceti1"); + ColnodAPI(serversdk::RequestManager* reqManconst, const bool &dryMode = false, const QString &userName = "spaceti", const QString &password = "spaceti1"); void downloadData(const Timestamp &time); void processData(const std::shared_ptr &data); @@ -96,7 +96,7 @@ private: signals: - void downloadDataFinished(std::shared_ptr = std::shared_ptr()); + void downloadDataFinished(std::shared_ptr = nullptr); void partOfDataReady(std::shared_ptr = std::shared_ptr()); void partOfDataProcessFinished(); void dataProcessFinished(); diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 9cf9cb3..4020c02 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -32,7 +32,7 @@ bool SyncManager::databaseInitialization() // here -> nothing can fail mlastSync.set_timestamp(database->getLastSync()); - colnod = std::make_shared(&reqMan, mlastSync.timestamp(), mDryMode); + colnod = std::make_shared(&reqMan, mDryMode); return true; } diff --git a/test/auto/colnod/tst_colnodapi.cpp b/test/auto/colnod/tst_colnodapi.cpp index 2e6c57f..3e93a5b 100644 --- a/test/auto/colnod/tst_colnodapi.cpp +++ b/test/auto/colnod/tst_colnodapi.cpp @@ -1,15 +1,27 @@ #include #include "colnodapi.h" +#include "serversdk/request.h" // add necessary includes here +Q_DECLARE_METATYPE(std::shared_ptr) +Q_DECLARE_METATYPE(std::shared_ptr); + class ColnodTest : public QObject { Q_OBJECT +public: + ColnodTest() + { + qRegisterMetaType>(); + qRegisterMetaType>(); + } + private slots: void login(); void getTokens(); void download_data_test(); + void download_data_fail_test(); private: QString getLoginToken(ColnodAPI &colnod); @@ -53,8 +65,24 @@ void ColnodTest::download_data_test() colnod.downloadData(time); QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); QVERIFY(spy.wait()); - auto arguments = spy.takeFirst(); - QVERIFY(arguments.first().data()); + auto data = qvariant_cast>(spy.at(0).at(0)); + QVERIFY(data); +} + +void ColnodTest::download_data_fail_test() +{ + serversdk::RequestManager reqMan; + ColnodAPI colnod(&reqMan, false, "spaceti", "wrong password"); + + Timestamp time(0); + QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); + colnod.downloadData(time); + + QVERIFY(spy.wait()); + + auto data = qvariant_cast>(spy.at(0).at(0)); + + QVERIFY(!data); } QString ColnodTest::getLoginToken(ColnodAPI &colnod) From 1a0fd35c3d328f62f5ad8ebceac6e2b21d652f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 13:23:54 +0100 Subject: [PATCH 2/7] fix bugs --- src/colnod/colnodapi.cpp | 1 + src/colnod/colnodapi.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index f1a8419..f3cee3c 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -32,6 +32,7 @@ void ColnodAPI::downloadData(const Timestamp &time) if (!checkRequest(request)) { qWarning(colnod) << "ERROR during calling" << request->url() << ", request unsuccessful"; mValid = false; + emit downloadDataFinished(nullptr); } else if (!checkResponse(request->responseData())) { qWarning(colnod) << "Data from" << request->url() << "are invalid"; diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index 77dd515..76c7bec 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -96,7 +96,7 @@ private: signals: - void downloadDataFinished(std::shared_ptr = nullptr); + void downloadDataFinished(std::shared_ptr = std::shared_ptr()); void partOfDataReady(std::shared_ptr = std::shared_ptr()); void partOfDataProcessFinished(); void dataProcessFinished(); From 08ca788358cbd66068801d5f35c5c791db06dfe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 13:56:04 +0100 Subject: [PATCH 3/7] add another bug --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index aa3eb4a..7d6951d 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,7 @@ It is possible to chain requests: [see doc](https://support.insomnia.rest/articl ### Bugs - It is possible to add token with token ID (tokenData) which already exists - No error message, when request data are invalid in login +- getUpdated returns valid data for invalid time (negative) ### Improvements - it would be nice to get response messages on calling enpoints - setToken -> successful edit/insert From 098bc7fda8d496f1aa4a9a2de2256906dc82834f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 14:35:33 +0100 Subject: [PATCH 4/7] Edit test to really test data --- server-sdk | 2 +- src/colnod/colnodapi.cpp | 1 + test/auto/colnod/tst_colnodapi.cpp | 28 +++++++++++++++++++++------- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/server-sdk b/server-sdk index 2041fed..a818055 160000 --- a/server-sdk +++ b/server-sdk @@ -1 +1 @@ -Subproject commit 2041fed9fab14658ceb574edaf5e4d31ed81e23a +Subproject commit a818055b75dc0de97e26be44cbbfd2e94516c09e diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index f3cee3c..55d818e 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -261,6 +261,7 @@ void ColnodAPI::areDataReady(std::shared_ptr data) qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; qInfo(colnod) << dash; + amountData = 0; emit downloadDataFinished(data); } } diff --git a/test/auto/colnod/tst_colnodapi.cpp b/test/auto/colnod/tst_colnodapi.cpp index 3e93a5b..b6e39c9 100644 --- a/test/auto/colnod/tst_colnodapi.cpp +++ b/test/auto/colnod/tst_colnodapi.cpp @@ -60,13 +60,27 @@ void ColnodTest::download_data_test() { serversdk::RequestManager reqMan; ColnodAPI colnod(&reqMan); + { + QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); + colnod.downloadData(Timestamp(0)); + QVERIFY(spy.wait()); - Timestamp time(QDateTime::currentMSecsSinceEpoch()); - colnod.downloadData(time); - QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); - QVERIFY(spy.wait()); - auto data = qvariant_cast>(spy.at(0).at(0)); - QVERIFY(data); + auto data = qvariant_cast>(spy.at(0).at(0)); + QVERIFY(data); + + QVERIFY(data->updatedTokens.size() > 0); + QVERIFY(data->updatedTokens.contains("6c907a42-0401-4403-8af4-9d58eb35cddc")); + } + { + Timestamp time(QDateTime::currentMSecsSinceEpoch()); + colnod.downloadData(time); + QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); + QVERIFY(spy.wait()); + auto data = qvariant_cast>(spy.at(0).at(0)); + QVERIFY(data); + + QVERIFY(data->updatedTokens.size() == 0); + } } void ColnodTest::download_data_fail_test() @@ -82,7 +96,7 @@ void ColnodTest::download_data_fail_test() auto data = qvariant_cast>(spy.at(0).at(0)); - QVERIFY(!data); + } QString ColnodTest::getLoginToken(ColnodAPI &colnod) From e886a6698ec8d1220bba8a287fffa19db586be9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 14:45:43 +0100 Subject: [PATCH 5/7] fix non explicit constructor --- src/colnod/colnodapi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index 76c7bec..68ed360 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -24,7 +24,7 @@ class Timestamp : public serversdk::DatabaseTable { TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0) public: Timestamp() = default; - Timestamp(const Timestamp &time) + explicit Timestamp(const Timestamp &time) { this->set_timestamp(time.timestamp()); } From dbd065c6d70b5a2a458f06f2054358f271bb6bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 15:05:21 +0100 Subject: [PATCH 6/7] edit test to download less data --- test/auto/colnod/tst_colnodapi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/auto/colnod/tst_colnodapi.cpp b/test/auto/colnod/tst_colnodapi.cpp index b6e39c9..69d32e8 100644 --- a/test/auto/colnod/tst_colnodapi.cpp +++ b/test/auto/colnod/tst_colnodapi.cpp @@ -62,14 +62,14 @@ void ColnodTest::download_data_test() ColnodAPI colnod(&reqMan); { QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); - colnod.downloadData(Timestamp(0)); + colnod.downloadData(Timestamp(1570190399259)); QVERIFY(spy.wait()); auto data = qvariant_cast>(spy.at(0).at(0)); QVERIFY(data); QVERIFY(data->updatedTokens.size() > 0); - QVERIFY(data->updatedTokens.contains("6c907a42-0401-4403-8af4-9d58eb35cddc")); + QVERIFY(data->updatedTokens.contains("5e2f1260-da1c-441f-9644-24dfe3b97b2a")); } { Timestamp time(QDateTime::currentMSecsSinceEpoch()); From 6ff3d7fcea826762d889e08c49f491b0642c9e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 15:18:48 +0100 Subject: [PATCH 7/7] fix download data fail test --- test/auto/colnod/tst_colnodapi.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/auto/colnod/tst_colnodapi.cpp b/test/auto/colnod/tst_colnodapi.cpp index 69d32e8..dedd554 100644 --- a/test/auto/colnod/tst_colnodapi.cpp +++ b/test/auto/colnod/tst_colnodapi.cpp @@ -96,6 +96,8 @@ void ColnodTest::download_data_fail_test() auto data = qvariant_cast>(spy.at(0).at(0)); + QVERIFY(!data); + }