File indexing completed on 2024-04-28 05:19:53

0001 /*
0002  * SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QByteArray>
0010 #include <QList>
0011 #include <QNetworkAccessManager>
0012 #include <QUrl>
0013 
0014 class FakeNetworkAccessManager : public QNetworkAccessManager
0015 {
0016     Q_OBJECT
0017 public:
0018     class Scenario
0019     {
0020     public:
0021         Scenario()
0022         {
0023         }
0024 
0025         Scenario(const QUrl &requestUrl,
0026                  QNetworkAccessManager::Operation method,
0027                  const QByteArray &requestData,
0028                  int responseCode,
0029                  const QByteArray &responseData,
0030                  bool needsAuth = true)
0031             : requestUrl(requestUrl)
0032             , requestMethod(method)
0033             , requestData(requestData)
0034             , responseCode(responseCode)
0035             , responseData(responseData)
0036             , needsAuth(needsAuth)
0037         {
0038         }
0039 
0040         QUrl requestUrl;
0041         QNetworkAccessManager::Operation requestMethod;
0042         QList<QPair<QByteArray, QByteArray>> requestHeaders;
0043         QByteArray requestData;
0044         int responseCode = -1;
0045         QList<QPair<QByteArray, QByteArray>> responseHeaders;
0046         QByteArray responseData;
0047         bool needsAuth = true;
0048     };
0049 
0050     explicit FakeNetworkAccessManager(QObject *parent = nullptr);
0051 
0052 protected:
0053     QNetworkReply *createRequest(Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData) override;
0054 
0055 private:
0056     QList<Scenario> mScenarios;
0057 };