Merge branch 'refs/heads/master' into suggest/next-steps-prepare-data

This commit is contained in:
Filip Bucek 2019-11-28 16:23:42 +01:00
commit ac8eff481d
5 changed files with 56 additions and 11 deletions

View File

@ -176,6 +176,7 @@ It is possible to chain requests: [see doc](https://support.insomnia.rest/articl
### Bugs ### Bugs
- It is possible to add token with token ID (tokenData) which already exists - It is possible to add token with token ID (tokenData) which already exists
- No error message, when request data are invalid in login - No error message, when request data are invalid in login
- getUpdated returns valid data for invalid time (negative)
### Improvements ### Improvements
- it would be nice to get response messages on calling enpoints - it would be nice to get response messages on calling enpoints
- setToken -> successful edit/insert - setToken -> successful edit/insert

View File

@ -3,12 +3,9 @@
Q_LOGGING_CATEGORY(colnod, "colnod.api"); 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) :mReqMan(reqMan), mUserName(userName), mPassword(password), mDryMode(dryMode)
{ {
mLastSync.set_timestamp(lastSync);
mData = std::make_shared<Data>();
// ----------------------------------- // -----------------------------------
mReqMan->setIgnoreSsl(true); mReqMan->setIgnoreSsl(true);
// ----------------------------------- // -----------------------------------
@ -28,7 +25,8 @@ void ColnodAPI::downloadData(const Timestamp &time)
connect(login.get(), &serversdk::Request::finished, this, [=](){ connect(login.get(), &serversdk::Request::finished, this, [=](){
// Get login token // Get login token
if (!checkRequest(login)) { if (!checkRequest(login)) {
emit error(); emit downloadDataFinished(nullptr);
return;
} }
AuthToken token; AuthToken token;
@ -41,6 +39,7 @@ void ColnodAPI::downloadData(const Timestamp &time)
if (!checkRequest(request)) { if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling" << request->url() << ", request unsuccessful"; qWarning(colnod) << "ERROR during calling" << request->url() << ", request unsuccessful";
mValid = false; mValid = false;
emit downloadDataFinished(nullptr);
} }
else if (!checkResponse(request->responseData())) { else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from" << request->url() << "are invalid"; qWarning(colnod) << "Data from" << request->url() << "are invalid";
@ -269,6 +268,7 @@ void ColnodAPI::areDataReady(std::shared_ptr<Data> data)
qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED";
qInfo(colnod) << dash; qInfo(colnod) << dash;
amountData = 0;
emit downloadDataFinished(data); emit downloadDataFinished(data);
} }
} }

View File

@ -48,7 +48,7 @@ class ColnodAPI: public QObject
Q_OBJECT Q_OBJECT
public: public:
ColnodAPI() = default; 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 downloadData(const Timestamp &time);
void processData(const std::shared_ptr<Data> &data); void processData(const std::shared_ptr<Data> &data);

View File

@ -32,7 +32,7 @@ bool SyncManager::databaseInitialization()
// here -> nothing can fail // here -> nothing can fail
mlastSync.set_timestamp(database->getLastSync()); mlastSync.set_timestamp(database->getLastSync());
colnod = std::make_shared<ColnodAPI>(&reqMan, mlastSync.timestamp(), mDryMode); colnod = std::make_shared<ColnodAPI>(&reqMan, mDryMode);
return true; return true;
} }

View File

@ -1,15 +1,27 @@
#include <QtTest> #include <QtTest>
#include "colnodapi.h" #include "colnodapi.h"
#include "serversdk/request.h"
// add necessary includes here // add necessary includes here
Q_DECLARE_METATYPE(std::shared_ptr<Data>)
Q_DECLARE_METATYPE(std::shared_ptr<serversdk::Request>);
class ColnodTest : public QObject class ColnodTest : public QObject
{ {
Q_OBJECT Q_OBJECT
public:
ColnodTest()
{
qRegisterMetaType<std::shared_ptr<Data>>();
qRegisterMetaType<std::shared_ptr<serversdk::Request>>();
}
private slots: private slots:
void login(); void login();
void getTokens(); void getTokens();
void download_data_test(); void download_data_test();
void download_data_fail_test();
private: private:
QString getLoginToken(ColnodAPI &colnod); QString getLoginToken(ColnodAPI &colnod);
@ -48,13 +60,45 @@ void ColnodTest::download_data_test()
{ {
serversdk::RequestManager reqMan; serversdk::RequestManager reqMan;
ColnodAPI colnod(&reqMan); ColnodAPI colnod(&reqMan);
{
QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished);
colnod.downloadData(Timestamp(1570190399259));
QVERIFY(spy.wait());
auto data = qvariant_cast<std::shared_ptr<Data>>(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()); Timestamp time(QDateTime::currentMSecsSinceEpoch());
colnod.downloadData(time); colnod.downloadData(time);
QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished); QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished);
QVERIFY(spy.wait()); QVERIFY(spy.wait());
auto arguments = spy.takeFirst(); auto data = qvariant_cast<std::shared_ptr<Data>>(spy.at(0).at(0));
QVERIFY(arguments.first().data()); 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 data = qvariant_cast<std::shared_ptr<Data>>(spy.at(0).at(0));
QVERIFY(!data);
} }
QString ColnodTest::getLoginToken(ColnodAPI &colnod) QString ColnodTest::getLoginToken(ColnodAPI &colnod)