|
|
/* * 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 getPorts() method with an argument of 3": { topic: function () { portfinder.getPorts(3, this.callback); }, "should respond with the first three available ports (8005, 8006, 8007)": function (err, ports) { assert.isTrue(!err); assert.deepEqual(ports, [8005, 8006, 8007]); } } } } }).addBatch({ "When using portfinder module": { "with no existing servers": { topic: function () { servers.forEach(function (server) { server.close(); });
return null; }, "the getPorts() method with an argument of 3": { topic: function () { portfinder.getPorts(3, this.callback); }, "should respond with the first three available ports (8000, 8001, 80072": function (err, ports) { assert.isTrue(!err); assert.deepEqual(ports, [8000, 8001, 8002]); } } } } }).export(module);
|