lambda-stash
Version:
AWS Lambda script for shipping data from S3 or other cloud data sources to data stores, like Elasticsearch
89 lines (83 loc) • 2.74 kB
JavaScript
/* global beforeEach, describe, it */
var assert = require("assert");
var handler;
describe('handler/shipHttp.js', function() {
describe('#process()', function() {
beforeEach(function() {
// Clear the module cache to reset overridden functions.
delete require.cache[require.resolve('../handlers/shipHttp')];
handler = require('../handlers/shipHttp');
});
it('should ship data using the http module',
function(done) {
var http = require('http');
var httpReqSent = false;
var httpReqEnded = false;
http.request = function(options, _callback) {
var callback = _callback;
assert.strictEqual(options.method, 'POST', 'HTTP method provided');
assert.strictEqual(options.protocol, 'http:',
'HTTP protocol provided');
assert.strictEqual(options.hostname, 'mock', 'HTTP host provided');
assert.strictEqual(options.pathname, '/logs', 'HTTP path provided');
assert.strictEqual(options.query, 'app=abc123',
'HTTP query provided');
return {
end: function() {
httpReqEnded = true;
callback({statusCode: 201});
},
on: function(event, _callback) {
return;
},
write: function(data) {
assert.strictEqual(data, 'test data 123456',
'data written in request');
httpReqSent = true;
}
};
};
var config = {
http: {
url: 'http://mock/logs?app=abc123'
},
data: 'test data 123456',
test: 'test'
};
handler.process(config)
.then(function(result) {
assert.ok(httpReqSent, 'HTTP request sent');
assert.ok(httpReqEnded, 'HTTP request closed');
assert.strictEqual(result.test, 'test', 'config data returned');
done();
});
});
it('should fail if the HTTP request throws an error',
function(done) {
var http = require('http');
http.request = function(options, _callback) {
return {
end: function() {
},
on: function(event, callback) {
callback(new Error('test error'));
},
write: function(data) {
}
};
};
var config = {
http: {
url: 'http://mock/logs?app=abc123'
},
data: 'test data 123456',
test: 'test'
};
handler.process(config)
.catch(function(err) {
assert.ok(err, 'error is thrown');
done();
});
});
});
});