diff --git a/tests/DownloadRouter.test.ts b/tests/DownloadRouter.test.ts new file mode 100644 index 00000000..a7435050 --- /dev/null +++ b/tests/DownloadRouter.test.ts @@ -0,0 +1,46 @@ +import { handleDownloadCompletion } from '../src/routes/download/DownloadRouter' + +describe('backup download completion', () => { + test('returns 404 when the one-time backup file is already gone', () => { + const sendStatus = jest.fn() + const next = jest.fn() + const response = { + headersSent: false, + sendStatus, + } + + const error = Object.assign(new Error('missing backup'), { + code: 'ENOENT', + }) + + handleDownloadCompletion( + error, + '/tmp/missing-caprover-backup.tar', + response as any, + next + ) + + expect(sendStatus).toHaveBeenCalledWith(404) + expect(next).not.toHaveBeenCalled() + }) + + test('delegates other transfer errors', () => { + const sendStatus = jest.fn() + const next = jest.fn() + const response = { + headersSent: false, + sendStatus, + } + const error = new Error('transfer failed') + + handleDownloadCompletion( + error, + '/tmp/missing-caprover-backup.tar', + response as any, + next + ) + + expect(sendStatus).not.toHaveBeenCalled() + expect(next).toHaveBeenCalledWith(error) + }) +})