/*
|
|
* portfinder-test.js: Tests for the `portfinder` module.
|
|
*
|
|
* (C) 2011, Charlie Robbins
|
|
*
|
|
*/
|
|
|
|
var vows = require('vows'),
|
|
assert = require('assert'),
|
|
async = require('async'),
|
|
http = require('http'),
|
|
portfinder = require('../lib/portfinder');
|
|
|
|
var servers = [];
|
|
|
|
function createServers (callback) {
|
|
var base = 8000;
|
|
|
|
async.whilst(
|
|
function () { return base < 8005 },
|
|
function (next) {
|
|
var server = http.createServer(function () { });
|
|
server.listen(base, next);
|
|
base++;
|
|
servers.push(server);
|
|
}, callback);
|
|
}
|
|
|
|
vows.describe('portfinder').addBatch({
|
|
"When using portfinder module": {
|
|
"with 5 existing servers": {
|
|
topic: function () {
|
|
createServers(this.callback);
|
|
},
|
|
"the getPort() method": {
|
|
topic: function () {
|
|
portfinder.getPort(this.callback);
|
|
},
|
|
"should respond with the first free port (8005)": function (err, port) {
|
|
assert.isTrue(!err);
|
|
assert.equal(port, 8005);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).addBatch({
|
|
"When using portfinder module": {
|
|
"with no existing servers": {
|
|
topic: function () {
|
|
servers.forEach(function (server) {
|
|
server.close();
|
|
});
|
|
|
|
return null;
|
|
},
|
|
"the getPort() method": {
|
|
topic: function () {
|
|
portfinder.getPort(this.callback);
|
|
},
|
|
"should respond with the first free port (8000)": function (err, port) {
|
|
assert.isTrue(!err);
|
|
assert.equal(port, 8000);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).export(module);
|