UNPKG

@pact-foundation/pact

Version:
106 lines 4.73 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var chai = __importStar(require("chai")); var chai_as_promised_1 = __importDefault(require("chai-as-promised")); var net_1 = __importDefault(require("net")); var net_2 = require("./net"); var logger_1 = __importDefault(require("./logger")); var expect = chai.expect; chai.use(chai_as_promised_1.default); describe('Net', function () { var port = 4567; var defaultHost = '0.0.0.0'; var specialPort = -1; // Utility function to create a server on a given port and return a Promise var createServer = function (p, host) { if (host === void 0) { host = defaultHost; } return new Promise(function (resolve, reject) { var server = net_1.default.createServer(); server.on('error', function (err) { return reject(err); }); server.on('listening', function () { return resolve(server); }); server.listen({ port: p, host: host, exclusive: true }, function () { logger_1.default.info("test server is up on ".concat(host, ":").concat(p)); }); }); }; describe('#isPortAvailable', function () { context('when the port is not allowed to be bound', function () { it('returns a rejected promise', function () { return expect((0, net_2.isPortAvailable)(specialPort, defaultHost)).to.eventually.be .rejected; }); }); context('when the port is available', function () { it('returns a fulfilled promise', function () { return expect((0, net_2.isPortAvailable)(port, defaultHost)).to.eventually.be.fulfilled; }); }); context('when the port is unavailable', function () { var closeFn = function (cb) { return cb(); }; it('returns a rejected promise', function () { return createServer(port).then(function (server) { closeFn = server.close.bind(server); return expect((0, net_2.isPortAvailable)(port, defaultHost)).to.eventually.be .rejected; }); }); // close the servers used in this test as to not conflict with other tests afterEach(function (done) { closeFn(done); }); }); context('when a single host is unavailable', function () { var closeFn = function (cb) { return cb(); }; it('returns a fulfilled promise', function () { // simulate ::1 being unavailable return createServer(port, '::1').then(function (server) { closeFn = server.close.bind(server); // this should work as the `127.0.0.1` is NOT `::1` return expect((0, net_2.isPortAvailable)(port, '127.0.0.1')).to.eventually.be .fulfilled; }); }); // close the servers used in this test as to not conflict with other tests afterEach(function (done) { closeFn(done); }); }); }); }); //# sourceMappingURL=net.spec.js.map