From 7a32eb699cb1f1bfdc216914dc0b94d5cced2ebd Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:10:26 -0400 Subject: [PATCH] require header for incomplete uploads --- .../controllers/asset-upload.controller.spec.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/server/src/controllers/asset-upload.controller.spec.ts b/server/src/controllers/asset-upload.controller.spec.ts index c94b29cc54..10ad929561 100644 --- a/server/src/controllers/asset-upload.controller.spec.ts +++ b/server/src/controllers/asset-upload.controller.spec.ts @@ -115,7 +115,20 @@ describe(AssetUploadController.name, () => { expect(body).toEqual(expect.objectContaining({ message: 'Expected valid upload-complete header' })); }); - it('should infer upload length from non-empty content length if complete upload', async () => { + it('should require Upload-Length header for incomplete upload', async () => { + const { status, body } = await request(ctx.getHttpServer()) + .post('/upload') + .set('Upload-Draft-Interop-Version', '8') + .set('X-Immich-Asset-Data', makeAssetData()) + .set('Repr-Digest', checksum) + .set('Upload-Complete', '?0') + .send(buffer); + + expect(status).toBe(400); + expect(body).toEqual(expect.objectContaining({ message: 'Missing upload-length header' })); + }); + + it('should infer upload length from content length if complete upload', async () => { const { status } = await request(ctx.getHttpServer()) .post('/upload') .set('Upload-Draft-Interop-Version', '8')