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();
connect(login.get(), &serversdk::Request::finished, this, [=](){
// Get login token
if (login->status() != 200) {
if (checkRequest(login)) {
emit error();
}
@ -28,12 +28,35 @@ void ColnodAPI::downloadData()
token.fromJson(login->responseData());
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
connect(this, &ColnodAPI::partOfDataReady, this, &ColnodAPI::areDataReady);
getTokensUpdated(mLastSync);
getTokensDeleted(mLastSync);
getSubjectsUpdated(mLastSync);
getSubjectsDeleted(mLastSync);
auto tokensRequest = getTokensUpdated(mLastSync);
connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler);
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;
}
void ColnodAPI::getTokensUpdated(const Timestamp &time)
std::shared_ptr<serversdk::Request> ColnodAPI::getTokensUpdated(const Timestamp &time)
{
auto request = composeRequest("/TokenManager/getTokensUpdated", time.jsonData());
request->setUserName(authToken);
mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){
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);
});
return request;
}
void ColnodAPI::getTokensDeleted(const Timestamp &time)
std::shared_ptr<serversdk::Request> ColnodAPI::getTokensDeleted(const Timestamp &time)
{
auto request = composeRequest("/TokenManager/getTokensDeleted", time.jsonData());
request->setUserName(authToken);
mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){
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();
});
return request;
}
void ColnodAPI::getSubjectsUpdated(const Timestamp &time)
std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsUpdated(const Timestamp &time)
{
auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData());
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());
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));
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));
request->setUserName(authToken);

View File

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

View File

@ -6,7 +6,6 @@
class ColnodTest : public QObject
{
Q_OBJECT
friend class ColnodAPI;
private slots:
void login();
void getTokens();
@ -31,10 +30,14 @@ void ColnodTest::getTokens()
{
serversdk::RequestManager reqMan;
ColnodAPI colnod(&reqMan);
// get login token
auto login = colnod.requestLogin();
QSignalSpy spy(login.get(), &serversdk::Request::finished);
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)