From f7166c5c1bc04951a9c3974e6fffb6cf39cf96bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Alby?= Date: Mon, 19 Apr 2021 14:37:36 +0200 Subject: [PATCH] Merge pull request #3922 from overleaf/jpa-fix-project-restore-deleted-files [ProjectDeleter] undeleteProject: deletedFiles.projectId is an ObjectId GitOrigin-RevId: 53bdc7c2a20269ef22ec7ca55a6ccf9339209cdd --- .../app/src/Features/Project/ProjectDeleter.js | 1 + .../web/test/acceptance/src/DeletionTests.js | 12 ++++++++++-- .../unit/src/Project/ProjectDeleterTests.js | 17 ++++++++++++----- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/services/web/app/src/Features/Project/ProjectDeleter.js b/services/web/app/src/Features/Project/ProjectDeleter.js index cd3d275c77..79fee642d2 100644 --- a/services/web/app/src/Features/Project/ProjectDeleter.js +++ b/services/web/app/src/Features/Project/ProjectDeleter.js @@ -278,6 +278,7 @@ async function deleteProject(projectId, options = {}) { } async function undeleteProject(projectId, options = {}) { + projectId = ObjectId(projectId) let deletedProject = await DeletedProject.findOne({ 'deleterData.deletedProjectId': projectId }).exec() diff --git a/services/web/test/acceptance/src/DeletionTests.js b/services/web/test/acceptance/src/DeletionTests.js index 6b6416e561..517bbdfb97 100644 --- a/services/web/test/acceptance/src/DeletionTests.js +++ b/services/web/test/acceptance/src/DeletionTests.js @@ -496,8 +496,16 @@ describe('Deleting a project', function () { .find({}, { sort: { _id: 1 } }) .toArray() expect(docs).to.deep.equal([ - { _id: fileId1, projectId: this.projectId, ...otherFileDetails }, - { _id: fileId2, projectId: this.projectId, ...otherFileDetails } + { + _id: fileId1, + projectId: ObjectId(this.projectId), + ...otherFileDetails + }, + { + _id: fileId2, + projectId: ObjectId(this.projectId), + ...otherFileDetails + } ]) }) }) diff --git a/services/web/test/unit/src/Project/ProjectDeleterTests.js b/services/web/test/unit/src/Project/ProjectDeleterTests.js index bb69c5e0b3..9158cd8fdb 100644 --- a/services/web/test/unit/src/Project/ProjectDeleterTests.js +++ b/services/web/test/unit/src/Project/ProjectDeleterTests.js @@ -627,6 +627,9 @@ describe('ProjectDeleter', function () { describe('undeleteProject', function () { beforeEach(function () { + this.unknownProjectId = ObjectId() + this.purgedProjectId = ObjectId() + this.deletedProject = { _id: 'deleted', project: this.project, @@ -638,7 +641,7 @@ describe('ProjectDeleter', function () { this.purgedProject = { _id: 'purged', deleterData: { - deletedProjectId: 'purgedProject', + deletedProjectId: this.purgedProjectId, deletedProjectOwnerId: 'potato' } } @@ -648,11 +651,11 @@ describe('ProjectDeleter', function () { .chain('exec') .resolves(this.deletedProject) this.DeletedProjectMock.expects('findOne') - .withArgs({ 'deleterData.deletedProjectId': 'purgedProject' }) + .withArgs({ 'deleterData.deletedProjectId': this.purgedProjectId }) .chain('exec') .resolves(this.purgedProject) this.DeletedProjectMock.expects('findOne') - .withArgs({ 'deleterData.deletedProjectId': 'wombat' }) + .withArgs({ 'deleterData.deletedProjectId': this.unknownProjectId }) .chain('exec') .resolves(null) this.DeletedProjectMock.expects('deleteOne').chain('exec').resolves() @@ -660,13 +663,17 @@ describe('ProjectDeleter', function () { it('should return not found if the project does not exist', async function () { await expect( - this.ProjectDeleter.promises.undeleteProject('wombat') + this.ProjectDeleter.promises.undeleteProject( + this.unknownProjectId.toString() + ) ).to.be.rejectedWith(Errors.NotFoundError, 'project_not_found') }) it('should return not found if the project has been expired', async function () { await expect( - this.ProjectDeleter.promises.undeleteProject('purgedProject') + this.ProjectDeleter.promises.undeleteProject( + this.purgedProjectId.toString() + ) ).to.be.rejectedWith(Errors.NotFoundError, 'project_too_old_to_restore') })