lambda-stash
Version:
AWS Lambda script for shipping data from S3 or other cloud data sources to data stores, like Elasticsearch
83 lines (77 loc) • 2.23 kB
JavaScript
/* global describe, it */
var assert = require("assert");
var handler = require("../handlers/getS3Object");
describe('handler/getS3Object.js', function() {
describe('#process()', function() {
it('should return data for an S3 key',
function(done) {
var AWS = require('aws-sdk');
AWS.S3 = function() {
return {
getObject: function(params, callback) {
if (params.Bucket === 'source-bucket' &&
params.Key === 'source/key') {
callback(null, {Body: 'successful-response'});
}
}
};
};
var config = {
S3: {
srcBucket: 'source-bucket',
srcKey: 'source/key'
}
};
handler.process(config)
.then(function(result) {
assert.strictEqual(result.data, 'successful-response',
'S3.getObject() returned data successfully');
done();
});
});
it('should fail if S3.getObject() returns an error',
function(done) {
var AWS = require('aws-sdk');
AWS.S3 = function() {
return {
getObject: function(params, callback) {
callback(new Error('test error'));
}
};
};
var config = {
S3: {
srcBucket: 'source-bucket',
srcKey: 'source/key'
}
};
handler.process(config)
.catch(function(err) {
assert.ok(err, 'error was thrown and caught');
done();
});
});
it('should fail if S3.getObject() returns unexpected data',
function(done) {
var AWS = require('aws-sdk');
AWS.S3 = function() {
return {
getObject: function(params, callback) {
callback(null, 'malformed data');
}
};
};
var config = {
S3: {
srcBucket: 'source-bucket',
srcKey: 'source/key'
}
};
handler.process(config)
.catch(function(err) {
assert.ok(err, 'error was thrown and caught');
done();
});
});
});
});