From: Claudio Cambra Date: Wed, 1 Mar 2023 00:52:22 +0000 (+0100) Subject: Move activitylistmodel testing QNAM override to dedicated convenience method in Activ... X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~92^2^2~71^2~15 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e42f5cf33e5fafa5e422cb3c98a7425462adbed4;p=nextcloud-desktop.git Move activitylistmodel testing QNAM override to dedicated convenience method in ActivityTestUtils Signed-off-by: Claudio Cambra --- diff --git a/test/activitylistmodeltestutils.cpp b/test/activitylistmodeltestutils.cpp index 348cd7cb6..e86bf6fca 100644 --- a/test/activitylistmodeltestutils.cpp +++ b/test/activitylistmodeltestutils.cpp @@ -13,12 +13,65 @@ */ #include "activitylistmodeltestutils.h" +#include "syncenginetestutils.h" #include #include #include #include +namespace { +static QByteArray fake404Response = R"( +{"ocs":{"meta":{"status":"failure","statuscode":404,"message":"Invalid query, please check the syntax. API specifications are here: http:\/\/www.freedesktop.org\/wiki\/Specifications\/open-collaboration-services.\n"},"data":[]}} +)"; + +static QByteArray fake400Response = R"( +{"ocs":{"meta":{"status":"failure","statuscode":400,"message":"Parameter is incorrect.\n"},"data":[]}} +)"; + +static QByteArray fake500Response = R"( +{"ocs":{"meta":{"status":"failure","statuscode":500,"message":"Internal Server Error.\n"},"data":[]}} +)"; +} + +namespace ActivityListModelTestUtils +{ + +QNetworkReply *almTestQnamOverride(FakeQNAM * const fakeQnam, + const QNetworkAccessManager::Operation op, + const QNetworkRequest &req, + const QString &accountUrl, + QObject * const parent, + const int searchResultsReplyDelay, + QIODevice * const device) +{ + Q_UNUSED(device); + QNetworkReply *reply = nullptr; + + const auto urlQuery = QUrlQuery(req.url()); + const auto format = urlQuery.queryItemValue(QStringLiteral("format")); + const auto since = urlQuery.queryItemValue(QStringLiteral("since")).toInt(); + const auto limit = urlQuery.queryItemValue(QStringLiteral("limit")).toInt(); + const auto path = req.url().path(); + + if (!req.url().toString().startsWith(accountUrl)) { + reply = new FakeErrorReply(op, req, parent, 404, fake404Response); + } + if (format != QStringLiteral("json")) { + reply = new FakeErrorReply(op, req, parent, 400, fake400Response); + } + + if (path.startsWith(QStringLiteral("/ocs/v2.php/apps/activity/api/v2/activity"))) { + reply = new FakePayloadReply(op, req, FakeRemoteActivityStorage::instance()->activityJsonData(since, limit), searchResultsReplyDelay, fakeQnam); + } + + if (!reply) { + return qobject_cast(new FakeErrorReply(op, req, parent, 404, QByteArrayLiteral("{error: \"Not found!\"}"))); + } + + return reply; +} + FakeRemoteActivityStorage *FakeRemoteActivityStorage::_instance = nullptr; FakeRemoteActivityStorage* FakeRemoteActivityStorage::instance() @@ -370,3 +423,5 @@ void TestingALM::slotProcessReceivedActivities() setAndRefreshCurrentlyFetching(false); emit activitiesProcessed(); } + +} diff --git a/test/activitylistmodeltestutils.h b/test/activitylistmodeltestutils.h index 91dc030fe..19dc37ded 100644 --- a/test/activitylistmodeltestutils.h +++ b/test/activitylistmodeltestutils.h @@ -23,9 +23,21 @@ #pragma once +class FakeQNAM; class QByteArray; class QJsonValue; +namespace ActivityListModelTestUtils +{ + +[[nodiscard]] QNetworkReply *almTestQnamOverride(FakeQNAM * const fakeQnam, + const QNetworkAccessManager::Operation op, + const QNetworkRequest &req, + const QString &accountUrl, + QObject * const parent = nullptr, + const int searchResultsReplyDelay = 0, + QIODevice * const device = nullptr); + class FakeRemoteActivityStorage { FakeRemoteActivityStorage() = default; @@ -71,3 +83,5 @@ signals: private: int _numRowsPrev = 0; }; + +} diff --git a/test/testactivitylistmodel.cpp b/test/testactivitylistmodel.cpp index cacc1364c..0fe77b83d 100644 --- a/test/testactivitylistmodel.cpp +++ b/test/testactivitylistmodel.cpp @@ -21,17 +21,7 @@ #include #include -static QByteArray fake404Response = R"( -{"ocs":{"meta":{"status":"failure","statuscode":404,"message":"Invalid query, please check the syntax. API specifications are here: http:\/\/www.freedesktop.org\/wiki\/Specifications\/open-collaboration-services.\n"},"data":[]}} -)"; - -static QByteArray fake400Response = R"( -{"ocs":{"meta":{"status":"failure","statuscode":400,"message":"Parameter is incorrect.\n"},"data":[]}} -)"; - -static QByteArray fake500Response = R"( -{"ocs":{"meta":{"status":"failure","statuscode":500,"message":"Internal Server Error.\n"},"data":[]}} -)"; +using namespace ActivityListModelTestUtils; class TestActivityListModel : public QObject { @@ -107,31 +97,13 @@ private slots: accountState.reset(new OCC::AccountState(account)); fakeQnam->setOverride([this](QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice *device) { - Q_UNUSED(device); - QNetworkReply *reply = nullptr; - - const auto urlQuery = QUrlQuery(req.url()); - const auto format = urlQuery.queryItemValue(QStringLiteral("format")); - const auto since = urlQuery.queryItemValue(QStringLiteral("since")).toInt(); - const auto limit = urlQuery.queryItemValue(QStringLiteral("limit")).toInt(); - const auto path = req.url().path(); - - if (!req.url().toString().startsWith(accountState->account()->url().toString())) { - reply = new FakeErrorReply(op, req, this, 404, fake404Response); - } - if (format != QStringLiteral("json")) { - reply = new FakeErrorReply(op, req, this, 400, fake400Response); - } - - if (path.startsWith(QStringLiteral("/ocs/v2.php/apps/activity/api/v2/activity"))) { - reply = new FakePayloadReply(op, req, FakeRemoteActivityStorage::instance()->activityJsonData(since, limit), searchResultsReplyDelay, fakeQnam.data()); - } - - if (!reply) { - return qobject_cast(new FakeErrorReply(op, req, this, 404, QByteArrayLiteral("{error: \"Not found!\"}"))); - } - - return reply; + Q_UNUSED(device) + return almTestQnamOverride(fakeQnam.data(), + op, + req, + accountState->account()->url().toString(), + this, + searchResultsReplyDelay); }); OCC::AccountManager::instance()->addAccount(account);