From b3112657629a90bb91649d0b2e05a8926a2bdace Mon Sep 17 00:00:00 2001 From: David Mehren Date: Wed, 28 Dec 2022 18:07:28 +0100 Subject: [PATCH] fix(media-controller): throw if no file was uploaded Signed-off-by: David Mehren --- backend/src/api/private/media/media.controller.ts | 8 ++++++-- backend/test/private-api/media.e2e-spec.ts | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/src/api/private/media/media.controller.ts b/backend/src/api/private/media/media.controller.ts index bcb05a0a3..313525187 100644 --- a/backend/src/api/private/media/media.controller.ts +++ b/backend/src/api/private/media/media.controller.ts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ import { + BadRequestException, Controller, Delete, Param, @@ -73,12 +74,15 @@ export class MediaController { 500, ) async uploadMedia( - @UploadedFile() file: MulterFile, + @UploadedFile() file: MulterFile | undefined, @RequestNote() note: Note, @RequestUser() user: User, ): Promise { + if (file === undefined) { + throw new BadRequestException('Request does not contain a file'); + } this.logger.debug( - `Recieved filename '${file.originalname}' for note '${note.id}' from user '${user.username}'`, + `Received filename '${file.originalname}' for note '${note.id}' from user '${user.username}'`, 'uploadMedia', ); const upload = await this.mediaService.saveFile(file.buffer, user, note); diff --git a/backend/test/private-api/media.e2e-spec.ts b/backend/test/private-api/media.e2e-spec.ts index 90ac75f99..44e00099f 100644 --- a/backend/test/private-api/media.e2e-spec.ts +++ b/backend/test/private-api/media.e2e-spec.ts @@ -106,6 +106,13 @@ describe('Media', () => { .expect('Content-Type', /json/) .expect(500); }); + it('no media uploaded', async () => { + await agent + .post('/api/private/media') + .set('HedgeDoc-Note', 'test_upload_media') + .expect(400); + await expect(fs.access(uploadPath)).rejects.toBeDefined(); + }); afterEach(async () => { await ensureDeleted(uploadPath); });