Changes because of tests

This commit is contained in:
Ondřej Fischer 2019-11-28 10:18:08 +01:00
parent f5ea0ed1a0
commit 5cc57ac9e7
3 changed files with 57 additions and 43 deletions

View File

@ -20,7 +20,7 @@ void ColnodAPI::downloadData()
auto login = requestLogin(); auto login = requestLogin();
connect(login.get(), &serversdk::Request::finished, this, [=](){ connect(login.get(), &serversdk::Request::finished, this, [=](){
// Get login token // Get login token
if (login->status() != 200) { if (checkRequest(login)) {
emit error(); emit error();
} }
@ -28,12 +28,35 @@ void ColnodAPI::downloadData()
token.fromJson(login->responseData()); token.fromJson(login->responseData());
authToken = token.id(); authToken = token.id();
std::shared_ptr<Data> data;
auto errorHandler = [=](std::shared_ptr<serversdk::Request> request){
if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling" << request->url() << ", request unsuccessful";
mValid = false;
}
else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from" << request->url() << "are invalid";
mValid = false;
}
saveUpdatedTokens(request->responseData());
emit partOfDataReady(data);
};
// if I have all data emit downloadDataFinished // if I have all data emit downloadDataFinished
connect(this, &ColnodAPI::partOfDataReady, this, &ColnodAPI::areDataReady); connect(this, &ColnodAPI::partOfDataReady, this, &ColnodAPI::areDataReady);
getTokensUpdated(mLastSync);
getTokensDeleted(mLastSync); auto tokensRequest = getTokensUpdated(mLastSync);
getSubjectsUpdated(mLastSync); connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler);
getSubjectsDeleted(mLastSync);
auto deletedTokensRequest = getTokensDeleted(mLastSync);
connect(deletedTokensRequest.get(), &serversdk::Request::finished, errorHandler);
auto subjectsRequest = getSubjectsUpdated(mLastSync);
connect(subjectsRequest.get(), &serversdk::Request::finished, errorHandler);
auto deletedSubjectsRequest = getSubjectsDeleted(mLastSync);
connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, errorHandler);
}); });
} }
@ -88,45 +111,23 @@ std::shared_ptr<serversdk::Request> ColnodAPI::requestLogin()
return loginRequest; return loginRequest;
} }
void ColnodAPI::getTokensUpdated(const Timestamp &time) std::shared_ptr<serversdk::Request> ColnodAPI::getTokensUpdated(const Timestamp &time)
{ {
auto request = composeRequest("/TokenManager/getTokensUpdated", time.jsonData()); auto request = composeRequest("/TokenManager/getTokensUpdated", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
mReqMan->processRequest(request); mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){ return request;
if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling /TokenManager/getTokensUpdated, request unsuccessful";
mValid = false;
}
else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from /TokenManager/getTokensUpdated are invalid";
mValid = false;
}
saveUpdatedTokens(request->responseData());
emit partOfDataReady(mData);
});
} }
void ColnodAPI::getTokensDeleted(const Timestamp &time) std::shared_ptr<serversdk::Request> ColnodAPI::getTokensDeleted(const Timestamp &time)
{ {
auto request = composeRequest("/TokenManager/getTokensDeleted", time.jsonData()); auto request = composeRequest("/TokenManager/getTokensDeleted", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
mReqMan->processRequest(request); mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){ return request;
if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling /TokenManager/getTokensDeleted, request unsuccessful";
mValid = false;
}
else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from /TokenManager/getTokensDeleted are invalid";
mValid = false;
}
saveDeletedTokens(request->responseData());
emit partOfDataReady();
});
} }
void ColnodAPI::getSubjectsUpdated(const Timestamp &time) std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsUpdated(const Timestamp &time)
{ {
auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData()); auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
@ -145,7 +146,7 @@ void ColnodAPI::getSubjectsUpdated(const Timestamp &time)
}); });
} }
void ColnodAPI::getSubjectsDeleted(const Timestamp &time) std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsDeleted(const Timestamp &time)
{ {
auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData()); auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
@ -164,7 +165,7 @@ void ColnodAPI::getSubjectsDeleted(const Timestamp &time)
}); });
} }
void ColnodAPI::setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens) std::shared_ptr<serversdk::Request> ColnodAPI::setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens)
{ {
auto request = composeRequest("/TokenManager/setTokens", Token::tokensToColnodJson(tokens)); auto request = composeRequest("/TokenManager/setTokens", Token::tokensToColnodJson(tokens));
request->setUserName(authToken); request->setUserName(authToken);
@ -185,7 +186,7 @@ void ColnodAPI::setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens)
}); });
} }
void ColnodAPI::deleteTokens(const QList<QString> &ids) std::shared_ptr<serversdk::Request> ColnodAPI::deleteTokens(const QList<QString> &ids)
{ {
auto request = composeRequest("/TokenManager/deleteTokens", Token::idsToJSON(ids)); auto request = composeRequest("/TokenManager/deleteTokens", Token::idsToJSON(ids));
request->setUserName(authToken); request->setUserName(authToken);

View File

@ -23,6 +23,16 @@ class Timestamp : public serversdk::DatabaseTable {
Q_OBJECT Q_OBJECT
TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0) TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0)
public: public:
Timestamp() = default;
explicit Timestamp(qint64 time)
{
set_timestamp(time);
}
explicit Timestamp(QDateTime time)
{
set_timestamp(time.toMSecsSinceEpoch());
}
QString toDateString() QString toDateString()
{ {
return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz"); return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz");
@ -43,13 +53,13 @@ public:
std::shared_ptr<serversdk::Request> requestLogin(); std::shared_ptr<serversdk::Request> requestLogin();
void getTokensUpdated(const Timestamp &time); std::shared_ptr<serversdk::Request> getTokensUpdated(const Timestamp &time);
void getTokensDeleted(const Timestamp &time); std::shared_ptr<serversdk::Request> getTokensDeleted(const Timestamp &time);
void getSubjectsUpdated(const Timestamp &time); std::shared_ptr<serversdk::Request> getSubjectsUpdated(const Timestamp &time);
void getSubjectsDeleted(const Timestamp &time); std::shared_ptr<serversdk::Request> getSubjectsDeleted(const Timestamp &time);
void setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens); std::shared_ptr<serversdk::Request> setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens);
void deleteTokens(const QList<QString> &tokenIds); std::shared_ptr<serversdk::Request> deleteTokens(const QList<QString> &tokenIds);
// Attributes // Attributes
QString userName() const; QString userName() const;

View File

@ -6,7 +6,6 @@
class ColnodTest : public QObject class ColnodTest : public QObject
{ {
Q_OBJECT Q_OBJECT
friend class ColnodAPI;
private slots: private slots:
void login(); void login();
void getTokens(); void getTokens();
@ -31,10 +30,14 @@ void ColnodTest::getTokens()
{ {
serversdk::RequestManager reqMan; serversdk::RequestManager reqMan;
ColnodAPI colnod(&reqMan); ColnodAPI colnod(&reqMan);
// get login token
auto login = colnod.requestLogin(); auto login = colnod.requestLogin();
QSignalSpy spy(login.get(), &serversdk::Request::finished); QSignalSpy spy(login.get(), &serversdk::Request::finished);
spy.wait(); spy.wait();
qDebug().noquote() << login->responseData().mid(7,36); QString token = login->responseData().mid(7,36);
Timestamp time(QDateTime::currentMSecsSinceEpoch());
colnod.getTokensUpdated(time);
} }
QTEST_GUILESS_MAIN(ColnodTest) QTEST_GUILESS_MAIN(ColnodTest)