| /* |
| * 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); |