pm2/test/interface/request.mocha.js
2017-01-23 10:10:35 +01:00

93 lines
2.1 KiB
JavaScript

process.env.DEBUG="interface:*";
var should = require('should');
var assert = require('assert');
var HttpRequest = require('../../lib/Interactor/HttpRequest.js');
var PORT = 8080;
function mockIrritableServer(cb) {
var http = require('http');
var url = require('url');
function handleRequest(req, res) {
var uri = url.parse(req.url).pathname;
if (uri == '/api/node/verifyPM2') {
// res.writeHead(505, {"Content-Type": "text/json"});
// return res.end(new Buffer(50).fill('h'));
// }
// console.log(uri);
return false;
}
if (uri == '/api/misc/pm2_version') {
res.writeHead(505);
return res.end();
}
}
//Create a server
var server = http.createServer(handleRequest);
//Lets start our server
server.listen(PORT, function(err){
if (err) console.error(err);
cb(null, server);
});
}
describe('Http requests', function() {
var _server = null;
before(function(done) {
mockIrritableServer(function(err, server) {
_server = server;
done();
});
});
after(function(done) {
_server.close(done);
});
describe('POST', function() {
it('should post to 404 URL', function(done) {
HttpRequest.post({
port : 9999,
url : 'http://keymetrics.io/NOTHING',
data : { no : 'thing' }
}, function(err, data) {
assert(err);
assert(err.code == 'ENOTFOUND');
assert(data == null);
done();
})
});
it('should timeout after 7secs', function(done) {
this.timeout(10000);
HttpRequest.post({
port : PORT,
url : '127.0.0.1',
data : { no : 'thing' }
}, function(err, data) {
assert(err);
assert(err.code == 'ECONNRESET');
assert(data == null);
done();
});
});
});
// @todo: more behavioral tests (reverse interactor failcheck)
// @todo: do more tests when doing changeUrls
it.skip('should change urls (forcing reconnection)', function(done) {
InterfaceD.changeUrls('app.km.io', 'app.km.io:4322');
setTimeout(done, 2000);
});
});