Merge pull request #19318 from overleaf/mj-revert-check-ranges-support

[web] Check that project has ranges support when reverting

GitOrigin-RevId: 761e435e9d640c08f27dd4ad2cef95934c0cc48b
This commit is contained in:
Eric Mc Sween 2024-07-08 12:39:09 -04:00 committed by Copybot
parent 778aa717d9
commit 0be042e331
2 changed files with 33 additions and 0 deletions

View file

@ -14,6 +14,8 @@ const DocstoreManager = require('../Docstore/DocstoreManager')
const logger = require('@overleaf/logger')
const EditorRealTimeController = require('../Editor/EditorRealTimeController')
const ChatManager = require('../Chat/ChatManager')
const OError = require('@overleaf/o-error')
const ProjectGetter = require('../Project/ProjectGetter')
const RestoreManager = {
async restoreFileFromV2(userId, projectId, version, pathname) {
@ -48,6 +50,13 @@ const RestoreManager = {
},
async revertFile(userId, projectId, version, pathname) {
const project = await ProjectGetter.promises.getProject(projectId, {
overleaf: true,
})
if (!project?.overleaf?.history?.rangesSupportEnabled) {
throw new OError('project does not have ranges support', { projectId })
}
const fsPath = await RestoreManager._writeFileVersionToDisk(
projectId,
version,

View file

@ -34,6 +34,7 @@ describe('RestoreManager', function () {
'../Chat/ChatManager': (this.ChatManager = { promises: {} }),
'../Editor/EditorRealTimeController': (this.EditorRealTimeController =
{}),
'../Project/ProjectGetter': (this.ProjectGetter = { promises: {} }),
},
})
this.user_id = 'mock-user-id'
@ -211,6 +212,10 @@ describe('RestoreManager', function () {
describe('revertFile', function () {
beforeEach(function () {
this.ProjectGetter.promises.getProject = sinon.stub()
this.ProjectGetter.promises.getProject
.withArgs(this.project_id)
.resolves({ overleaf: { history: { rangesSupportEnabled: true } } })
this.RestoreManager.promises._writeFileVersionToDisk = sinon
.stub()
.resolves((this.fsPath = '/tmp/path/on/disk'))
@ -225,6 +230,25 @@ describe('RestoreManager', function () {
.rejects()
})
describe('reverting a project without ranges support', function () {
beforeEach(function () {
this.ProjectGetter.promises.getProject = sinon.stub().resolves({
overleaf: { history: { rangesSupportEnabled: false } },
})
})
it('should throw an error', async function () {
await expect(
this.RestoreManager.promises.revertFile(
this.user_id,
this.project_id,
this.version,
this.pathname
)
).to.eventually.be.rejectedWith('project does not have ranges support')
})
})
describe('reverting a document', function () {
beforeEach(function () {
this.pathname = 'foo.tex'