44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = exports = s3_mock;
|
|
|
|
const AWSMock = require('mock-aws-s3');
|
|
const os = require('os');
|
|
|
|
const log = require('../util/log.js');
|
|
log.heading = 'node-pre-gyp'; // differentiate node-pre-gyp's logs from npm's
|
|
|
|
function s3_mock() {
|
|
log.warn('mocking s3 operations');
|
|
|
|
AWSMock.config.basePath = `${os.tmpdir()}/mock`;
|
|
|
|
const s3 = AWSMock.S3();
|
|
|
|
// wrapped callback maker. fs calls return code of ENOENT but AWS.S3 returns
|
|
// NotFound.
|
|
const wcb = (fn) => (err, ...args) => {
|
|
if (err && err.code === 'ENOENT') {
|
|
err.code = 'NotFound';
|
|
}
|
|
return fn(err, ...args);
|
|
};
|
|
|
|
return {
|
|
listObjects(params, callback) {
|
|
return s3.listObjects(params, wcb(callback));
|
|
},
|
|
headObject(params, callback) {
|
|
return s3.headObject(params, wcb(callback));
|
|
},
|
|
deleteObject(params, callback) {
|
|
return s3.deleteObject(params, wcb(callback));
|
|
},
|
|
putObject(params, callback) {
|
|
return s3.putObject(params, wcb(callback));
|
|
},
|
|
getObject(params, callback) {
|
|
return s3.getObject(params, wcb(callback));
|
|
}
|
|
};
|
|
}
|