Add s3 mock for the s3 storage tests

This commit is contained in:
Johannes Zellner
2017-04-18 19:15:56 +02:00
parent 9378b949fb
commit d5db9657ca
4 changed files with 70 additions and 5 deletions

View File

@@ -10,7 +10,11 @@ exports = module.exports = {
backupDone: backupDone,
testConfig: testConfig
testConfig: testConfig,
// Used to mock AWS
_mockInject: mockInject,
_mockRestore: mockRestore
};
var archiver = require('archiver'),
@@ -29,6 +33,17 @@ var archiver = require('archiver'),
var FILE_TYPE = '.tar.gz';
// test only
var originalAWS;
function mockInject(mock) {
originalAWS = AWS;
AWS = mock;
}
function mockRestore() {
AWS = originalAWS;
}
// internal only
function getBackupCredentials(apiConfig, callback) {
assert.strictEqual(typeof apiConfig, 'object');
@@ -159,7 +174,8 @@ function restore(apiConfig, backupId, destinationDirectories, callback) {
});
s3get.on('error', function (error) {
if (error.code === 'NoSuchKey') return callback(new BackupsError(BackupsError.NOT_FOUND));
// TODO ENOENT for the mock, fix upstream!
if (error.code === 'NoSuchKey' || error.code === 'ENOENT') return callback(new BackupsError(BackupsError.NOT_FOUND));
console.error('[%s] restore: s3 stream error.', backupId, error);
callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error));
@@ -269,7 +285,8 @@ function getDownloadStream(apiConfig, backupId, callback) {
var s3 = new AWS.S3(credentials);
s3.headObject(params, function (error, result) {
if (error && error.code === 'NotFound') return callback(new BackupsError(BackupsError.NOT_FOUND));
// TODO ENOENT for the mock, fix upstream!
if (error && (error.code === 'NotFound' || error.code === 'ENOENT')) return callback(new BackupsError(BackupsError.NOT_FOUND));
if (error) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error));
var s3get = s3.getObject(params).createReadStream();