Files
elasticsearch-js/test/unit/es_server.test.js

81 lines
1.8 KiB
JavaScript

var EsServer = require('../mocks/es_server');
var _ = require('../../src/lib/utils');
var http = require('http');
describe('EsServer Mock', function () {
it('should emit an online event when ready, passing it\'s port number', function (done) {
var server = new EsServer();
server.on('online', function (port) {
port.should.have.type('number');
server.shutdown(done);
});
});
describe('when it\'s online', function () {
var server;
var port;
function makeRequest(opts, respCb) {
opts = _.defaults(opts || {},{
hostname: 'localhost',
port: port
});
var response = null;
var req = http.request(opts, function (incomming) {
response = '';
incomming.on('data', function (chunk) {
response+= chunk;
});
incomming.on('end', function () {
if (incomming.headers['content-type'] === 'application/json') {
try {
respCb(null, JSON.parse(response), incomming.statusCode);
} catch (e) {
respCb(e, response, incomming.statusCode);
}
} else {
respCb(null, response, incomming.statusCode);
}
});
});
req.on('error', respCb);
req.end();
}
before(function (done) {
server = new EsServer();
server.on('online', function (_port) {
port = _port;
done();
});
});
after(function (done) {
server.shutdown(done);
});
it('should respond with json to a ping', function (done) {
makeRequest({
path: '/'
}, function (err, resp, status) {
if (err) {
done(err);
} else {
status.should.be.exactly(200);
resp.version.number.should.match(/^\d+\.\d+\.\d+/);
done();
}
});
});
});
});