mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 22:30:41 +02:00
143 lines
3.9 KiB
C++
143 lines
3.9 KiB
C++
#include <QtTest>
|
|
|
|
#include "colnodapi.h"
|
|
#include "serversdk/request.h"
|
|
// add necessary includes here
|
|
|
|
Q_DECLARE_METATYPE(std::shared_ptr<Data>)
|
|
Q_DECLARE_METATYPE(std::shared_ptr<serversdk::Request>);
|
|
|
|
|
|
class ColnodTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
ColnodTest()
|
|
{
|
|
qRegisterMetaType<std::shared_ptr<Data>>();
|
|
qRegisterMetaType<std::shared_ptr<serversdk::Request>>("std::shared_ptr<Request>");
|
|
}
|
|
|
|
private :
|
|
Q_SLOT void getTokens();
|
|
Q_SLOT void download_test();
|
|
Q_SLOT void download_data_test_now();
|
|
Q_SLOT void download_data_fail_test();
|
|
void login();
|
|
|
|
private:
|
|
QString getLoginToken(ColnodAPI &colnod);
|
|
};
|
|
|
|
void ColnodTest::login()
|
|
{
|
|
serversdk::RequestManager reqMan;
|
|
ColnodAPI colnod(&reqMan);
|
|
auto login = colnod.requestLogin();
|
|
QVERIFY(login);
|
|
QVERIFY(login->networkReply());
|
|
QSignalSpy spy(login.get(), &serversdk::Request::finished);
|
|
QCOMPARE(spy.count(), 0);
|
|
QVERIFY(spy.wait());
|
|
QCOMPARE(spy.count(), 1);
|
|
QVERIFY(login->responseData().contains("id"));
|
|
|
|
}
|
|
|
|
|
|
void ColnodTest::getTokens()
|
|
{
|
|
// FIXME: finish this -> must be valid test testing something
|
|
// FIXME: Was not testing anything only causing bug
|
|
serversdk::RequestManager reqMan;
|
|
ColnodAPI colnod(&reqMan);
|
|
|
|
// get login token
|
|
// FIXME: calling login request two times
|
|
auto login = colnod.requestLogin();
|
|
QSignalSpy spy(login.get(), &serversdk::Request::finished);
|
|
QVERIFY(spy.isValid());
|
|
QVERIFY(spy.wait());
|
|
//login->responseData().mid(7,36);
|
|
// NOTE: second calling of loging request
|
|
//QString token = getLoginToken(colnod);
|
|
Timestamp time;
|
|
time.setTimestamp(QDateTime::currentMSecsSinceEpoch());
|
|
auto request = colnod.getTokensUpdated(time);
|
|
|
|
// FIXING BUG: creating request not waiting for it immediatelly destroying request
|
|
// immediatelly reqMan goes out of scope destroying QNetworkRequestManager with QNetworkReply running.
|
|
QSignalSpy requestSpy(request.get(), &serversdk::Request::finished);
|
|
QVERIFY(requestSpy.wait()); // <-- have to wait here for request!!!!
|
|
// FIXME: check request and finish test!!
|
|
}
|
|
|
|
void ColnodTest::download_test()
|
|
{
|
|
serversdk::RequestManager reqMan;
|
|
reqMan.setIgnoreSsl(true);
|
|
ColnodAPI colnod(&reqMan);
|
|
|
|
QVERIFY(!colnod.mData);
|
|
QVERIFY(!colnod.mValid);
|
|
QVERIFY(!colnod.amountData);
|
|
QVERIFY(!colnod.amountProccessesFinished);
|
|
|
|
QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished);
|
|
QVERIFY(spy.isValid());
|
|
QVERIFY(colnod.downloadData(1570190399259));
|
|
QVERIFY(spy.wait());
|
|
QVERIFY(colnod.amountData == 0);
|
|
|
|
|
|
auto data = qvariant_cast<std::shared_ptr<Data>>(spy.at(0).at(0));
|
|
QVERIFY(data);
|
|
|
|
QVERIFY(! data->updatedTokens.isEmpty());
|
|
QVERIFY(data->updatedTokens.contains("5e2f1260-da1c-441f-9644-24dfe3b97b2a"));
|
|
}
|
|
|
|
void ColnodTest::download_data_test_now()
|
|
{
|
|
serversdk::RequestManager reqMan;
|
|
ColnodAPI colnod(&reqMan);
|
|
|
|
colnod.downloadData(QDateTime::currentMSecsSinceEpoch());
|
|
QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished);
|
|
QVERIFY(spy.wait());
|
|
auto data = qvariant_cast<std::shared_ptr<Data>>(spy.at(0).at(0));
|
|
// No latest data
|
|
QVERIFY(data);
|
|
QVERIFY(data->updatedTokens.isEmpty());
|
|
}
|
|
|
|
|
|
void ColnodTest::download_data_fail_test()
|
|
{
|
|
serversdk::RequestManager reqMan;
|
|
ColnodAPI colnod(&reqMan, false, "spaceti", "wrong password");
|
|
|
|
QSignalSpy spy(&colnod, &ColnodAPI::downloadDataFinished);
|
|
colnod.downloadData(0);
|
|
|
|
QVERIFY(spy.wait());
|
|
|
|
// FIXME: problem with returning data
|
|
auto data = qvariant_cast<std::shared_ptr<Data>>(spy.at(0).at(0));
|
|
|
|
QVERIFY(!data);
|
|
}
|
|
|
|
QString ColnodTest::getLoginToken(ColnodAPI &colnod)
|
|
{
|
|
auto login = colnod.requestLogin();
|
|
QSignalSpy spy(login.get(), &serversdk::Request::finished);
|
|
spy.wait();
|
|
return login->responseData().mid(7,36);
|
|
|
|
}
|
|
|
|
QTEST_GUILESS_MAIN(ColnodTest)
|
|
|
|
#include "tst_colnodapi.moc"
|