diff --git a/package.json b/package.json index 517dbaad79..86a171b6dd 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@azure/storage-blob": "^12.28.0", "@hapi/joi": "^17.1.1", "@smithy/node-http-handler": "^3.0.0", - "arsenal": "git+https://github.com/scality/Arsenal#8.3.0-preview.1", + "arsenal": "git+https://github.com/scality/Arsenal#aed443f02efebeb3f5c2e74786baadb5c19eaded", "async": "2.6.4", "bucketclient": "scality/bucketclient#8.2.7", "bufferutil": "^4.0.8", diff --git a/tests/functional/raw-node/test/GCP/bucket/get.js b/tests/functional/raw-node/test/GCP/bucket/get.js index dbd52c3cfb..0eb0c3a9be 100644 --- a/tests/functional/raw-node/test/GCP/bucket/get.js +++ b/tests/functional/raw-node/test/GCP/bucket/get.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { ListObjectsCommand } = require('@aws-sdk/client-s3'); const { GCP } = arsenal.storage.data.external.GCP; const { makeGcpRequest } = require('../../../utils/makeRequest'); const { gcpRequestRetry, genUniqID } = require('../../../utils/gcpUtils'); @@ -15,6 +16,35 @@ const bigSize = listingHardLimit + 1; const config = getRealAwsConfig(credentialOne); const gcpClient = new GCP(config); +gcpClient.listObjects = (params, callback) => { + const command = new ListObjectsCommand(params); + return gcpClient.send(command) + .then(data => callback(null, data)) + .catch(err => { + if ( err.statusCode === undefined) { + // eslint-disable-next-line no-param-reassign + err.statusCode = err.$metadata.httpStatusCode; + } + return callback(err); + }); +}; + +gcpClient.getBucket = (params, callback) => + gcpClient.headBucket(params, (err, res) => { + if (err) { + if (err.statusCode === undefined) { + // eslint-disable-next-line no-param-reassign + err.statusCode = err.$metadata.httpStatusCode; + } + if (err.$metadata && err.$metadata.httpStatusCode === 404) { + // eslint-disable-next-line no-param-reassign + err.name = 'NoSuchBucket'; + } + return callback(err); + } + return callback(null, res); + }); + function populateBucket(createdObjects, callback) { process.stdout.write( `Putting ${createdObjects.length} objects into bucket\n`); diff --git a/tests/functional/raw-node/test/GCP/bucket/getVersioning.js b/tests/functional/raw-node/test/GCP/bucket/getVersioning.js index 3a3bc7c9e2..2327da7e78 100644 --- a/tests/functional/raw-node/test/GCP/bucket/getVersioning.js +++ b/tests/functional/raw-node/test/GCP/bucket/getVersioning.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { GetBucketVersioningCommand } = require('@aws-sdk/client-s3'); const { GCP } = arsenal.storage.data.external.GCP; const { makeGcpRequest } = require('../../../utils/makeRequest'); const { gcpRequestRetry, genUniqID } = require('../../../utils/gcpUtils'); @@ -67,14 +68,19 @@ describe('GCP: GET Bucket Versioning', () => { return next(err); }), next => { - gcpClient.getBucketVersioning({ + const command = new GetBucketVersioningCommand({ Bucket: this.test.bucketName, - }, (err, res) => { - assert.equal(err, null, - `Expected success, but got err ${err}`); - assert.deepStrictEqual(res.Status, verEnabledObj); - return next(); }); + return gcpClient.send(command) + .then(res => { + assert.deepStrictEqual(res.Status, verEnabledObj); + return next(); + }) + .catch(err => { + assert.equal(err, null, + `Expected success, but got err ${err}`); + return next(err); + }); }, ], err => done(err)); }); @@ -93,14 +99,21 @@ describe('GCP: GET Bucket Versioning', () => { } return next(err); }), - next => gcpClient.getBucketVersioning({ - Bucket: this.test.bucketName, - }, (err, res) => { - assert.equal(err, null, - `Expected success, but got err ${err}`); - assert.deepStrictEqual(res.Status, verDisabledObj); - return next(); - }), + next => { + const command = new GetBucketVersioningCommand({ + Bucket: this.test.bucketName, + }); + return gcpClient.send(command) + .then(res => { + assert.deepStrictEqual(res.Status, verDisabledObj); + return next(); + }) + .catch(err => { + assert.equal(err, null, + `Expected success, but got err ${err}`); + return next(err); + }); + }, ], err => done(err)); }); }); diff --git a/tests/functional/raw-node/test/GCP/bucket/putVersioning.js b/tests/functional/raw-node/test/GCP/bucket/putVersioning.js index c8151e21c4..88349a8b4d 100644 --- a/tests/functional/raw-node/test/GCP/bucket/putVersioning.js +++ b/tests/functional/raw-node/test/GCP/bucket/putVersioning.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { PutBucketVersioningCommand } = require('@aws-sdk/client-s3'); const xml2js = require('xml2js'); const { GCP } = arsenal.storage.data.external.GCP; const { makeGcpRequest } = require('../../../utils/makeRequest'); @@ -56,16 +57,21 @@ describe('GCP: PUT Bucket Versioning', () => { it('should enable bucket versioning', function testFn(done) { return async.waterfall([ - next => gcpClient.putBucketVersioning({ - Bucket: this.test.bucketName, - VersioningConfiguration: { - Status: 'Enabled', - }, - }, err => { - assert.equal(err, null, - `Expected success, but got err ${err}`); - return next(); - }), + next => { + const command = new PutBucketVersioningCommand({ + Bucket: this.test.bucketName, + VersioningConfiguration: { + Status: 'Enabled', + }, + }); + return gcpClient.send(command) + .then(() => next()) + .catch(err => { + assert.equal(err, null, + `Expected success, but got err ${err}`); + return next(err); + }); + }, next => makeGcpRequest({ method: 'GET', bucket: this.test.bucketName, @@ -83,16 +89,21 @@ describe('GCP: PUT Bucket Versioning', () => { it('should disable bucket versioning', function testFn(done) { return async.waterfall([ - next => gcpClient.putBucketVersioning({ - Bucket: this.test.bucketName, - VersioningConfiguration: { - Status: 'Suspended', - }, - }, err => { - assert.equal(err, null, - `Expected success, but got err ${err}`); - return next(); - }), + next => { + const command = new PutBucketVersioningCommand({ + Bucket: this.test.bucketName, + VersioningConfiguration: { + Status: 'Suspended', + }, + }); + return gcpClient.send(command) + .then(() => next()) + .catch(err => { + assert.equal(err, null, + `Expected success, but got err ${err}`); + return next(err); + }); + }, next => makeGcpRequest({ method: 'GET', bucket: this.test.bucketName, diff --git a/tests/functional/raw-node/test/GCP/object/completeMpu.js b/tests/functional/raw-node/test/GCP/object/completeMpu.js index 900093f353..79d7837e59 100644 --- a/tests/functional/raw-node/test/GCP/object/completeMpu.js +++ b/tests/functional/raw-node/test/GCP/object/completeMpu.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { ListObjectsCommand } = require('@aws-sdk/client-s3'); const { GCP, GcpUtils } = arsenal.storage.data.external.GCP; const { gcpRequestRetry, @@ -100,6 +101,19 @@ describe('GCP: Complete MPU', function testSuite() { before(done => { config = getRealAwsConfig(credentialOne); gcpClient = new GCP(config); + gcpClient.listObjects = (params, callback) => { + const command = new ListObjectsCommand(params); + return gcpClient.send(command) + .then(data => callback(null, data)) + .catch(err => { + if (err && err.$metadata && err.$metadata.httpStatusCode && + err.statusCode === undefined) { + // eslint-disable-next-line no-param-reassign + err.statusCode = err.$metadata.httpStatusCode; + } + return callback(err); + }); + }; async.eachSeries(bucketNames, (bucket, next) => gcpRequestRetry({ method: 'PUT', diff --git a/tests/functional/raw-node/test/GCP/object/deleteMpu.js b/tests/functional/raw-node/test/GCP/object/deleteMpu.js index 0d923a9a45..77b33336c5 100644 --- a/tests/functional/raw-node/test/GCP/object/deleteMpu.js +++ b/tests/functional/raw-node/test/GCP/object/deleteMpu.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { ListObjectsCommand } = require('@aws-sdk/client-s3'); const { GCP } = arsenal.storage.data.external.GCP; const { gcpRequestRetry, setBucketClass, gcpMpuSetup, genUniqID } = require('../../../utils/gcpUtils'); @@ -40,6 +41,19 @@ describe('GCP: Abort MPU', function testSuite() { before(done => { config = getRealAwsConfig(credentialOne); gcpClient = new GCP(config); + gcpClient.listObjects = (params, callback) => { + const command = new ListObjectsCommand(params); + return gcpClient.send(command) + .then(data => callback(null, data)) + .catch(err => { + if (err && err.$metadata && err.$metadata.httpStatusCode && + err.statusCode === undefined) { + // eslint-disable-next-line no-param-reassign + err.statusCode = err.$metadata.httpStatusCode; + } + return callback(err); + }); + }; async.eachSeries(bucketNames, (bucket, next) => gcpRequestRetry({ method: 'PUT', diff --git a/tests/functional/raw-node/test/GCP/object/upload.js b/tests/functional/raw-node/test/GCP/object/upload.js index 88005b8862..9165cf1277 100644 --- a/tests/functional/raw-node/test/GCP/object/upload.js +++ b/tests/functional/raw-node/test/GCP/object/upload.js @@ -1,6 +1,7 @@ const assert = require('assert'); const async = require('async'); const arsenal = require('arsenal'); +const { ListObjectsCommand } = require('@aws-sdk/client-s3'); const { GCP } = arsenal.storage.data.external.GCP; const { gcpRequestRetry, setBucketClass, genUniqID } = require('../../../utils/gcpUtils'); @@ -32,6 +33,19 @@ describe('GCP: Upload Object', function testSuite() { before(done => { config = getRealAwsConfig(credentialOne); gcpClient = new GCP(config); + gcpClient.listObjects = (params, callback) => { + const command = new ListObjectsCommand(params); + return gcpClient.send(command) + .then(data => callback(null, data)) + .catch(err => { + if (err && err.$metadata && err.$metadata.httpStatusCode && + err.statusCode === undefined) { + // eslint-disable-next-line no-param-reassign + err.statusCode = err.$metadata.httpStatusCode; + } + return callback(err); + }); + }; async.eachSeries(bucketNames, (bucket, next) => gcpRequestRetry({ method: 'PUT', diff --git a/yarn.lock b/yarn.lock index cf7c5b40e6..de14973564 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4645,9 +4645,9 @@ arraybuffer.prototype.slice@^1.0.4: optionalDependencies: ioctl "^2.0.2" -"arsenal@git+https://github.com/scality/Arsenal#8.3.0-preview.1": +"arsenal@git+https://github.com/scality/Arsenal#aed443f02efebeb3f5c2e74786baadb5c19eaded": version "8.3.0-preview.1" - resolved "git+https://github.com/scality/Arsenal#00033b55fc22d8e58ab38211842fc0ccf41b9766" + resolved "git+https://github.com/scality/Arsenal#aed443f02efebeb3f5c2e74786baadb5c19eaded" dependencies: "@aws-sdk/client-kms" "^3.901.0" "@aws-sdk/client-s3" "^3.901.0"