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/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": { 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);