Fix incorrect purging of files on WebDAV
This commit is contained in:
parent
700aa5377b
commit
ccb30351c0
2 changed files with 74 additions and 11 deletions
|
@ -697,6 +697,13 @@ describe("Zotero.Sync.Storage.Mode.WebDAV", function () {
|
|||
library.updateLastSyncTime();
|
||||
yield library.saveTx();
|
||||
|
||||
// Create one item
|
||||
var item1 = yield createDataObject('item');
|
||||
var item1Key = item1.key;
|
||||
// Add another item to sync queue
|
||||
var item2Key = Zotero.DataObjectUtilities.generateKey();
|
||||
yield Zotero.Sync.Data.Local.addObjectsToSyncQueue('item', library.id, [item2Key]);
|
||||
|
||||
const daysBeforeSyncTime = 7;
|
||||
|
||||
var beforeTime = new Date(Date.now() - (daysBeforeSyncTime * 86400 * 1000 + 1)).toUTCString();
|
||||
|
@ -738,6 +745,7 @@ describe("Zotero.Sync.Storage.Mode.WebDAV", function () {
|
|||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/AAAAAAAA.zip</D:href>`
|
||||
+ '<D:propstat>'
|
||||
|
@ -756,6 +764,7 @@ describe("Zotero.Sync.Storage.Mode.WebDAV", function () {
|
|||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/BBBBBBBB.zip</D:href>`
|
||||
+ '<D:propstat>'
|
||||
|
@ -774,6 +783,46 @@ describe("Zotero.Sync.Storage.Mode.WebDAV", function () {
|
|||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
|
||||
// Item that exists
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/${item1Key}.zip</D:href>`
|
||||
+ '<D:propstat>'
|
||||
+ '<D:prop>'
|
||||
+ `<lp1:getlastmodified>${beforeTime}</lp1:getlastmodified>`
|
||||
+ '</D:prop>'
|
||||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/${item1Key}.prop</D:href>`
|
||||
+ '<D:propstat>'
|
||||
+ '<D:prop>'
|
||||
+ `<lp1:getlastmodified>${beforeTime}</lp1:getlastmodified>`
|
||||
+ '</D:prop>'
|
||||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
|
||||
// Item in sync queue
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/${item2Key}.zip</D:href>`
|
||||
+ '<D:propstat>'
|
||||
+ '<D:prop>'
|
||||
+ `<lp1:getlastmodified>${beforeTime}</lp1:getlastmodified>`
|
||||
+ '</D:prop>'
|
||||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
+ '<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">'
|
||||
+ `<D:href>${davBasePath}zotero/${item2Key}.prop</D:href>`
|
||||
+ '<D:propstat>'
|
||||
+ '<D:prop>'
|
||||
+ `<lp1:getlastmodified>${beforeTime}</lp1:getlastmodified>`
|
||||
+ '</D:prop>'
|
||||
+ '<D:status>HTTP/1.1 200 OK</D:status>'
|
||||
+ '</D:propstat>'
|
||||
+ '</D:response>'
|
||||
+ '</D:multistatus>'
|
||||
});
|
||||
setResponse({
|
||||
|
@ -797,8 +846,12 @@ describe("Zotero.Sync.Storage.Mode.WebDAV", function () {
|
|||
status: 204
|
||||
});
|
||||
|
||||
yield controller.purgeOrphanedStorageFiles();
|
||||
var results = yield controller.purgeOrphanedStorageFiles();
|
||||
assertRequestCount(5);
|
||||
|
||||
assert.sameMembers(results.deleted, ['lastsync.txt', 'lastsync', 'AAAAAAAA.prop', 'AAAAAAAA.zip']);
|
||||
assert.lengthOf(results.missing, 0);
|
||||
assert.lengthOf(results.error, 0);
|
||||
})
|
||||
|
||||
it("shouldn't purge if purged recently", function* () {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue