#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>("std::shared_ptr"); } 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>(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>(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>(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"