Fix unit tests by setting Date header

This commit is contained in:
Hannah von Reth 2020-12-03 16:28:28 +01:00 committed by Kevin Ottens
parent 9d9eadba8e
commit 40e07ef3e3
No known key found for this signature in database
GPG key ID: 074BBBCB8DECC9E2
3 changed files with 63 additions and 45 deletions

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

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

View file

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