From 63e11e4be93a50fe753d84771dbc72ead38fdc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Fri, 6 Oct 2023 15:46:39 +0200 Subject: [PATCH] fix(core): Prevent object deletion request on no prefix match (#7366) --- packages/core/src/ObjectStore/ObjectStore.service.ee.ts | 2 ++ packages/core/test/ObjectStore.service.test.ts | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/packages/core/src/ObjectStore/ObjectStore.service.ee.ts b/packages/core/src/ObjectStore/ObjectStore.service.ee.ts index cb6c33737..e289cbfbb 100644 --- a/packages/core/src/ObjectStore/ObjectStore.service.ee.ts +++ b/packages/core/src/ObjectStore/ObjectStore.service.ee.ts @@ -149,6 +149,8 @@ export class ObjectStoreService { async deleteMany(prefix: string) { const objects = await this.list(prefix); + if (objects.length === 0) return; + const innerXml = objects.map(({ key }) => `${key}`).join('\n'); const body = ['', innerXml, ''].join('\n'); diff --git a/packages/core/test/ObjectStore.service.test.ts b/packages/core/test/ObjectStore.service.test.ts index bb87a0e0a..07df127ba 100644 --- a/packages/core/test/ObjectStore.service.test.ts +++ b/packages/core/test/ObjectStore.service.test.ts @@ -248,6 +248,14 @@ describe('deleteMany()', () => { ); }); + it('should not send a deletion request if no prefix match', async () => { + objectStoreService.list = jest.fn().mockResolvedValue([]); + + const result = await objectStoreService.deleteMany('non-matching-prefix'); + + expect(result).toBeUndefined(); + }); + it('should throw an error on request failure', async () => { mockAxios.request.mockRejectedValue(mockError);