From ebd978efd987dea430923bd36ccddea9c5ce3cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20DONNART?= Date: Mon, 23 Feb 2026 14:43:48 +0100 Subject: [PATCH 1/2] Fix GetObjectAttributes to handle versionId as a query parameter Issue: CLDSRV-856 --- .../authorization/prepareRequestContexts.js | 2 +- .../authorization/prepareRequestContexts.js | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/api/apiUtils/authorization/prepareRequestContexts.js b/lib/api/apiUtils/authorization/prepareRequestContexts.js index eece6848e9..4fcf504aeb 100644 --- a/lib/api/apiUtils/authorization/prepareRequestContexts.js +++ b/lib/api/apiUtils/authorization/prepareRequestContexts.js @@ -262,7 +262,7 @@ function prepareRequestContexts(apiMethod, request, sourceBucket, requestContexts.push(generateRequestContext('listObjectsV2OptionalAttributes')); } } else if (apiMethodAfterVersionCheck === 'objectGetAttributes') { - if (request.headers['x-amz-version-id']) { + if (request.query?.versionId) { requestContexts.push( generateRequestContext('objectGetVersion'), generateRequestContext('objectGetVersionAttributes'), diff --git a/tests/unit/api/apiUtils/authorization/prepareRequestContexts.js b/tests/unit/api/apiUtils/authorization/prepareRequestContexts.js index 865480d61e..f2573a1b1a 100644 --- a/tests/unit/api/apiUtils/authorization/prepareRequestContexts.js +++ b/tests/unit/api/apiUtils/authorization/prepareRequestContexts.js @@ -448,12 +448,10 @@ describe('prepareRequestContexts', () => { }); }); - describe('x-amz-version-id header', () => { - it('should return version-specific actions with x-amz-version-id', () => { + describe('versionId query param', () => { + it('should return version-specific actions with versionId query param', () => { const apiMethod = 'objectGetAttributes'; - const request = makeRequest({ - 'x-amz-version-id': '0987654323456789', - }); + const request = makeRequest({}, { versionId: '0987654323456789' }); const results = prepareRequestContexts(apiMethod, request, sourceBucket, sourceObject, sourceVersionId); assert.strictEqual(results.length, 2); @@ -461,12 +459,12 @@ describe('prepareRequestContexts', () => { assert.strictEqual(results[1].getAction(), 's3:GetObjectVersionAttributes'); }); - it('should include scality:GetObjectAttributes with x-amz-version-id and x-amz-meta', () => { + it('should include scality:GetObjectAttributes with versionId query param and x-amz-meta', () => { const apiMethod = 'objectGetAttributes'; - const request = makeRequest({ - 'x-amz-version-id': '0987654323456789', - 'x-amz-object-attributes': 'x-amz-meta-department', - }); + const request = makeRequest( + { 'x-amz-object-attributes': 'x-amz-meta-department' }, + { versionId: '0987654323456789' } + ); const results = prepareRequestContexts(apiMethod, request, sourceBucket, sourceObject, sourceVersionId); assert.strictEqual(results.length, 3); From a9e6f7006d8eed31b209d3579e41de153b248357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20DONNART?= Date: Mon, 23 Feb 2026 17:13:45 +0100 Subject: [PATCH 2/2] Bump package.json to 9.3.4 Issue: CLDSRV-856 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b7aa3d691d..28ce78cdd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zenko/cloudserver", - "version": "9.3.3", + "version": "9.3.4", "description": "Zenko CloudServer, an open-source Node.js implementation of a server handling the Amazon S3 protocol", "main": "index.js", "engines": {