Merge pull request #35636 from overleaf/tm-fix-export-error-forwarding

[web] Forward v1 export errors to the publish modal instead of a 500

GitOrigin-RevId: 7cf69c4d6a954cd311ac64fff175156b300afabb
This commit is contained in:
Thomas
2026-09-17 11:34:52 +00:00
committed by Copybot
parent 41a1b639f6
commit fc40c1f8a4
2 changed files with 13 additions and 7 deletions
@@ -133,9 +133,15 @@ export default ExportsHandler = {
{ export: exportData },
`v1 export returned failure; forwarding: ${err.body}`
)
let forwardResponse
try {
forwardResponse = JSON.parse(err.body)
} catch (parseError) {
forwardResponse = { status: err.response.status, message: err.body }
}
// pass the v1 error along for the publish modal to handle
throw OError.tag(err, 'v1 export returned failure', {
forwardResponse: err.body,
forwardResponse,
})
}
throw OError.tag(err, 'error making request to v1 export', {
@@ -513,6 +513,7 @@ describe('ExportsHandler', function () {
beforeEach(async function (ctx) {
ctx.error_code = 422
ctx.error_json = { status: ctx.error_code, message: 'nope' }
// fetch-utils exposes the response body as a string, not a parsed object
ctx.fetchUtils.fetchJson = sinon
.stub()
.rejects(
@@ -520,7 +521,7 @@ describe('ExportsHandler', function () {
new URL('/api/v1/overleaf/exports', ctx.settings.apis.v1.url),
{},
{ status: ctx.error_code },
ctx.error_json
JSON.stringify(ctx.error_json)
)
)
@@ -531,12 +532,11 @@ describe('ExportsHandler', function () {
}
})
it('should throw with an error containing the response to forward', function (ctx) {
it('should throw with an error containing the parsed response to forward', function (ctx) {
expect(response).to.be.undefined
expect(OError.getFullInfo(error)).to.have.property(
'forwardResponse',
ctx.error_json
)
expect(OError.getFullInfo(error))
.to.have.property('forwardResponse')
.that.deep.equals(ctx.error_json)
})
})
})