Merge pull request #3354 from overleaf/jpa-fix-clone-invalid-root-doc

[ProjectDuplicator] silently ignore an invalid rootDoc when duplicating

GitOrigin-RevId: 93b4d4193fab25484525f8ab2c692e047cf0da30
This commit is contained in:
Jakob Ackermann 2020-11-05 11:07:02 +01:00 committed by Copybot
parent e3f41ab373
commit 67b8719bf2
2 changed files with 22 additions and 1 deletions

View file

@ -60,7 +60,11 @@ async function duplicate(owner, originalProjectId, newProjectName) {
docEntries,
fileEntries
)
if (rootDocPath) {
// Silently ignore the rootDoc in case it's not valid per the new limits.
if (
rootDocPath &&
ProjectEntityUpdateHandler.isPathValidForRootDoc(rootDocPath.fileSystem)
) {
await _setRootDoc(newProject._id, rootDocPath.fileSystem)
}
await _notifyDocumentUpdater(newProject, owner._id, {

View file

@ -159,6 +159,7 @@ describe('ProjectDuplicator', function() {
}
}
this.ProjectEntityUpdateHandler = {
isPathValidForRootDoc: sinon.stub().returns(true),
promises: {
setRootDoc: sinon.stub().resolves()
}
@ -340,6 +341,22 @@ describe('ProjectDuplicator', function() {
})
})
describe('with an invalid root doc', function() {
beforeEach(async function() {
this.ProjectEntityUpdateHandler.isPathValidForRootDoc.returns(false)
this.newProject = await this.ProjectDuplicator.promises.duplicate(
this.owner,
this.project._id,
'Copy of project'
)
})
it('should not set the root doc on the copy', function() {
this.ProjectEntityUpdateHandler.promises.setRootDoc.should.not.have.been
.called
})
})
describe('when there is an error', function() {
beforeEach(async function() {
this.ProjectEntityMongoUpdateHandler.promises.createNewFolderStructure.rejects()