mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-23 12:55:44 +03:00
add new tests dedicated for recovery scenario of wrong mtime on server
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
parent
d4081c99a7
commit
b5a10d7829
1 changed files with 87 additions and 0 deletions
|
@ -1157,6 +1157,93 @@ private slots:
|
|||
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
}
|
||||
|
||||
void testInvalidMtimeRecoveryAtStart()
|
||||
{
|
||||
constexpr auto INVALID_MTIME = 0;
|
||||
constexpr auto CURRENT_MTIME = 1646057277;
|
||||
|
||||
FakeFolder fakeFolder{FileInfo{}};
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
|
||||
const QString fooFileRootFolder("foo");
|
||||
const QString barFileRootFolder("bar");
|
||||
const QString fooFileSubFolder("subfolder/foo");
|
||||
const QString barFileSubFolder("subfolder/bar");
|
||||
const QString fooFileAaaSubFolder("aaa/subfolder/foo");
|
||||
const QString barFileAaaSubFolder("aaa/subfolder/bar");
|
||||
|
||||
fakeFolder.remoteModifier().insert(fooFileRootFolder);
|
||||
fakeFolder.remoteModifier().insert(barFileRootFolder);
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("subfolder"));
|
||||
fakeFolder.remoteModifier().insert(fooFileSubFolder);
|
||||
fakeFolder.remoteModifier().insert(barFileSubFolder);
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("aaa"));
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("aaa/subfolder"));
|
||||
fakeFolder.remoteModifier().insert(fooFileAaaSubFolder);
|
||||
fakeFolder.remoteModifier().setModTime(fooFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(INVALID_MTIME));
|
||||
fakeFolder.remoteModifier().insert(barFileAaaSubFolder);
|
||||
fakeFolder.remoteModifier().setModTime(barFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(INVALID_MTIME));
|
||||
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
fakeFolder.remoteModifier().setModTimeKeepEtag(fooFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME));
|
||||
fakeFolder.remoteModifier().setModTimeKeepEtag(barFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME));
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
auto expectedState = fakeFolder.currentLocalState();
|
||||
QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
|
||||
}
|
||||
|
||||
void testInvalidMtimeRecovery()
|
||||
{
|
||||
constexpr auto INVALID_MTIME = 0;
|
||||
constexpr auto CURRENT_MTIME = 1646057277;
|
||||
|
||||
FakeFolder fakeFolder{FileInfo{}};
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
|
||||
const QString fooFileRootFolder("foo");
|
||||
const QString barFileRootFolder("bar");
|
||||
const QString fooFileSubFolder("subfolder/foo");
|
||||
const QString barFileSubFolder("subfolder/bar");
|
||||
const QString fooFileAaaSubFolder("aaa/subfolder/foo");
|
||||
const QString barFileAaaSubFolder("aaa/subfolder/bar");
|
||||
|
||||
fakeFolder.remoteModifier().insert(fooFileRootFolder);
|
||||
fakeFolder.remoteModifier().insert(barFileRootFolder);
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("subfolder"));
|
||||
fakeFolder.remoteModifier().insert(fooFileSubFolder);
|
||||
fakeFolder.remoteModifier().insert(barFileSubFolder);
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("aaa"));
|
||||
fakeFolder.remoteModifier().mkdir(QStringLiteral("aaa/subfolder"));
|
||||
fakeFolder.remoteModifier().insert(fooFileAaaSubFolder);
|
||||
fakeFolder.remoteModifier().insert(barFileAaaSubFolder);
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
fakeFolder.remoteModifier().setModTime(fooFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(INVALID_MTIME));
|
||||
fakeFolder.remoteModifier().setModTime(barFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(INVALID_MTIME));
|
||||
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
fakeFolder.remoteModifier().setModTimeKeepEtag(fooFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME));
|
||||
fakeFolder.remoteModifier().setModTimeKeepEtag(barFileAaaSubFolder, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME));
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
auto expectedState = fakeFolder.currentLocalState();
|
||||
QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_GUILESS_MAIN(TestSyncEngine)
|
||||
|
|
Loading…
Reference in a new issue