From 4b9963757f9df83f859a80d82e6a5b69785163d0 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 2 Jun 2025 14:47:24 +0100 Subject: [PATCH] Merge pull request #26047 from overleaf/bg-web-api-is-leaking-disk-space clean up temporary files in GitBridgeHandler operations GitOrigin-RevId: b4a202f4f4c563a020fed8a47da1a84417ccbd2d --- .../acceptance/src/mocks/MockGitBridgeApi.mjs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs b/services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs index 4927814b9a..805bbdd8fe 100644 --- a/services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs +++ b/services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs @@ -3,12 +3,16 @@ import AbstractMockApi from './AbstractMockApi.mjs' class MockGitBridgeApi extends AbstractMockApi { reset() { this.projects = {} + this.postbacks = {} } applyRoutes() { this.app.delete('/api/projects/:projectId', (req, res) => { this.deleteProject(req, res) }) + this.app.post('/postback/:id', (req, res) => { + this.postback(req, res) + }) } deleteProject(req, res) { @@ -16,6 +20,24 @@ class MockGitBridgeApi extends AbstractMockApi { delete this.projects[projectId] res.sendStatus(204) } + + // Git bridge accepts a postback to indicate when a operation is complete. + // Each postback is identified by a unique ID. + // Allow registering a handler which resolves when a postback is received. + registerPostback(id) { + return new Promise((resolve, reject) => { + this.postbacks[id] = { resolve, reject } + }) + } + + postback(req, res) { + const { id } = req.params + const postbackData = req.body + if (this.postbacks[id]) { + this.postbacks[id].resolve(postbackData) + } + res.sendStatus(204) + } } export default MockGitBridgeApi