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 diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 906fb0b..1433581 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); // ----------------------------------- @@ -28,7 +25,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; @@ -41,6 +39,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"; @@ -269,6 +268,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/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index a8e799c..68ed360 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); diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 9e630c2..cb537e1 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..dedd554 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); @@ -48,13 +60,45 @@ void ColnodTest::download_data_test() { serversdk::RequestManager reqMan; ColnodAPI colnod(&reqMan); + { + QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); + colnod.downloadData(Timestamp(1570190399259)); + QVERIFY(spy.wait()); - Timestamp time(QDateTime::currentMSecsSinceEpoch()); - colnod.downloadData(time); + auto data = qvariant_cast>(spy.at(0).at(0)); + QVERIFY(data); + + QVERIFY(data->updatedTokens.size() > 0); + QVERIFY(data->updatedTokens.contains("5e2f1260-da1c-441f-9644-24dfe3b97b2a")); + } + { + 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() +{ + 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 arguments = spy.takeFirst(); - QVERIFY(arguments.first().data()); + + auto data = qvariant_cast>(spy.at(0).at(0)); + + QVERIFY(!data); + + } QString ColnodTest::getLoginToken(ColnodAPI &colnod)