Fix unit tests by setting Date header
authorHannah von Reth <hannah.vonreth@owncloud.com>
Thu, 3 Dec 2020 15:28:28 +0000 (16:28 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 10:01:52 +0000 (11:01 +0100)
test/syncenginetestutils.cpp
test/syncenginetestutils.h
test/testasyncop.cpp

index 36e81e3bcb9402a13911aec4b96fcb99283a402c..640cadf8d209817b308a04b952dc588c26c86fd7 100644 (file)
@@ -253,7 +253,7 @@ FileInfo *FileInfo::findInvalidatingEtags(PathComponents pathComponents)
 }
 
 FakePropfindReply::FakePropfindReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -351,7 +351,7 @@ qint64 FakePropfindReply::readData(char *data, qint64 maxlen)
 }
 
 FakePutReply::FakePutReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, const QByteArray &putPayload, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -397,7 +397,7 @@ void FakePutReply::abort()
 }
 
 FakeMkcolReply::FakeMkcolReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -424,7 +424,7 @@ void FakeMkcolReply::respond()
 }
 
 FakeDeleteReply::FakeDeleteReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -445,7 +445,7 @@ void FakeDeleteReply::respond()
 }
 
 FakeMoveReply::FakeMoveReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -468,7 +468,7 @@ void FakeMoveReply::respond()
 }
 
 FakeGetReply::FakeGetReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -526,7 +526,7 @@ qint64 FakeGetReply::readData(char *data, qint64 maxlen)
 }
 
 FakeGetWithDataReply::FakeGetWithDataReply(FileInfo &remoteRootFileInfo, const QByteArray &data, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -593,7 +593,7 @@ qint64 FakeGetWithDataReply::readData(char *data, qint64 maxlen)
 }
 
 FakeChunkMoveReply::FakeChunkMoveReply(FileInfo &uploadsFileInfo, FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
 {
     setRequest(request);
     setUrl(request.url());
@@ -687,7 +687,7 @@ void FakeChunkMoveReply::abort()
 }
 
 FakePayloadReply::FakePayloadReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, const QByteArray &body, QObject *parent)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
     , _body(body)
 {
     setRequest(request);
@@ -721,7 +721,7 @@ qint64 FakePayloadReply::bytesAvailable() const
 }
 
 FakeErrorReply::FakeErrorReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent, int httpErrorCode, const QByteArray &body)
-    : QNetworkReply { parent }
+    : FakeReply { parent }
     , _body(body)
 {
     setRequest(request);
@@ -760,6 +760,15 @@ qint64 FakeErrorReply::bytesAvailable() const
     return _body.size();
 }
 
+FakeHangingReply::FakeHangingReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+    : FakeReply(parent)
+{
+    setRequest(request);
+    setUrl(request.url());
+    setOperation(op);
+    open(QIODevice::ReadOnly);
+}
+
 void FakeHangingReply::abort()
 {
     // Follow more or less the implementation of QNetworkReplyImpl::abort
@@ -791,25 +800,27 @@ QNetworkReply *FakeQNAM::createRequest(QNetworkAccessManager::Operation op, cons
     FileInfo &info = isUpload ? _uploadFileInfo : _remoteRootFileInfo;
 
     auto verb = request.attribute(QNetworkRequest::CustomVerbAttribute);
+    FakeReply *reply;
     if (verb == QLatin1String("PROPFIND"))
         // Ignore outgoingData always returning somethign good enough, works for now.
-        return new FakePropfindReply { info, op, request, this };
+        reply = new FakePropfindReply { info, op, request, this };
     else if (verb == QLatin1String("GET") || op == QNetworkAccessManager::GetOperation)
-        return new FakeGetReply { info, op, request, this };
+        reply = new FakeGetReply { info, op, request, this };
     else if (verb == QLatin1String("PUT") || op == QNetworkAccessManager::PutOperation)
-        return new FakePutReply { info, op, request, outgoingData->readAll(), this };
+        reply = new FakePutReply { info, op, request, outgoingData->readAll(), this };
     else if (verb == QLatin1String("MKCOL"))
-        return new FakeMkcolReply { info, op, request, this };
+        reply = new FakeMkcolReply { info, op, request, this };
     else if (verb == QLatin1String("DELETE") || op == QNetworkAccessManager::DeleteOperation)
-        return new FakeDeleteReply { info, op, request, this };
+        reply = new FakeDeleteReply { info, op, request, this };
     else if (verb == QLatin1String("MOVE") && !isUpload)
-        return new FakeMoveReply { info, op, request, this };
+        reply = new FakeMoveReply { info, op, request, this };
     else if (verb == QLatin1String("MOVE") && isUpload)
-        return new FakeChunkMoveReply { info, _remoteRootFileInfo, op, request, this };
+        reply = new FakeChunkMoveReply { info, _remoteRootFileInfo, op, request, this };
     else {
         qDebug() << verb << outgoingData;
         Q_UNREACHABLE();
     }
+    return reply;
 }
 
 FakeFolder::FakeFolder(const FileInfo &fileTemplate)
@@ -1007,3 +1018,13 @@ OCC::SyncFileItemPtr ItemCompletedSpy::findItem(const QString &path) const
     }
     return OCC::SyncFileItemPtr::create();
 }
+
+FakeReply::FakeReply(QObject *parent)
+    : QNetworkReply(parent)
+{
+    setRawHeader(QByteArrayLiteral("Date"), QDateTime::currentDateTimeUtc().toString(Qt::RFC2822Date).toUtf8());
+}
+
+FakeReply::~FakeReply()
+{
+}
index 52c330c6260e7596fd2593fb6e1758d7231bda7c..1dc34c5405e32e8016d0d2c07ae180e5a6b9e683 100644 (file)
@@ -167,7 +167,18 @@ public:
     }
 };
 
-class FakePropfindReply : public QNetworkReply
+class FakeReply : public QNetworkReply
+{
+    Q_OBJECT
+public:
+    FakeReply(QObject *parent);
+    virtual ~FakeReply();
+
+    // useful to be public for testing
+    using QNetworkReply::setRawHeader;
+};
+
+class FakePropfindReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -185,7 +196,7 @@ public:
     qint64 readData(char *data, qint64 maxlen) override;
 };
 
-class FakePutReply : public QNetworkReply
+class FakePutReply : public FakeReply
 {
     Q_OBJECT
     FileInfo *fileInfo;
@@ -200,7 +211,7 @@ public:
     qint64 readData(char *, qint64) override { return 0; }
 };
 
-class FakeMkcolReply : public QNetworkReply
+class FakeMkcolReply : public FakeReply
 {
     Q_OBJECT
     FileInfo *fileInfo;
@@ -213,7 +224,7 @@ public:
     qint64 readData(char *, qint64) override { return 0; }
 };
 
-class FakeDeleteReply : public QNetworkReply
+class FakeDeleteReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -225,7 +236,7 @@ public:
     qint64 readData(char *, qint64) override { return 0; }
 };
 
-class FakeMoveReply : public QNetworkReply
+class FakeMoveReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -237,7 +248,7 @@ public:
     qint64 readData(char *, qint64) override { return 0; }
 };
 
-class FakeGetReply : public QNetworkReply
+class FakeGetReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -254,12 +265,9 @@ public:
     qint64 bytesAvailable() const override;
 
     qint64 readData(char *data, qint64 maxlen) override;
-
-    // useful to be public for testing
-    using QNetworkReply::setRawHeader;
 };
 
-class FakeGetWithDataReply : public QNetworkReply
+class FakeGetWithDataReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -276,12 +284,9 @@ public:
     qint64 bytesAvailable() const override;
 
     qint64 readData(char *data, qint64 maxlen) override;
-
-    // useful to be public for testing
-    using QNetworkReply::setRawHeader;
 };
 
-class FakeChunkMoveReply : public QNetworkReply
+class FakeChunkMoveReply : public FakeReply
 {
     Q_OBJECT
     FileInfo *fileInfo;
@@ -301,8 +306,7 @@ public:
     qint64 readData(char *, qint64) override { return 0; }
 };
 
-
-class FakePayloadReply : public QNetworkReply
+class FakePayloadReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -318,7 +322,7 @@ public:
 };
 
 
-class FakeErrorReply : public QNetworkReply
+class FakeErrorReply : public FakeReply
 {
     Q_OBJECT
 public:
@@ -343,18 +347,11 @@ public:
 };
 
 // A reply that never responds
-class FakeHangingReply : public QNetworkReply
+class FakeHangingReply : public FakeReply
 {
     Q_OBJECT
 public:
-    FakeHangingReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-        : QNetworkReply(parent)
-    {
-        setRequest(request);
-        setUrl(request.url());
-        setOperation(op);
-        open(QIODevice::ReadOnly);
-    }
+    FakeHangingReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent);
 
     void abort() override;
     qint64 readData(char *, qint64) override { return 0; }
index d8de8bce1e5d64e91a22ebb8c900f4aec583414a..29cfa14574293e6b23491403a6d44a1e67117f3f 100644 (file)
 
 using namespace OCC;
 
-class FakeAsyncReply : public QNetworkReply
+class FakeAsyncReply : public FakeReply
 {
     Q_OBJECT
     QByteArray _pollLocation;
 
 public:
     FakeAsyncReply(const QByteArray &pollLocation, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
-        : QNetworkReply{ parent }
+        : FakeReply { parent }
         , _pollLocation(pollLocation)
     {
         setRequest(request);