Kaynağa Gözat

Fix unit tests by setting Date header

Hannah von Reth 5 yıl önce
ebeveyn
işleme
40e07ef3e3
3 değiştirilmiş dosya ile 63 ekleme ve 45 silme
  1. 38 17
      test/syncenginetestutils.cpp
  2. 23 26
      test/syncenginetestutils.h
  3. 2 2
      test/testasyncop.cpp

+ 38 - 17
test/syncenginetestutils.cpp

@@ -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()
+{
+}

+ 23 - 26
test/syncenginetestutils.h

@@ -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; }

+ 2 - 2
test/testasyncop.cpp

@@ -11,14 +11,14 @@
 
 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);