UNPKG

@pact-foundation/pact

Version:
58 lines 2.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_net_1 = __importDefault(require("node:net")); const logger_1 = __importDefault(require("./logger")); const net_1 = require("./net"); describe('Net', () => { const port = 4567; const defaultHost = '0.0.0.0'; const specialPort = -1; // Utility function to create a server on a given port and return a Promise const createServer = (p, host = defaultHost) => new Promise((resolve, reject) => { const server = node_net_1.default.createServer(); server.on('error', (err) => reject(err)); server.on('listening', () => resolve(server)); server.listen({ port: p, host, exclusive: true }, () => { logger_1.default.info(`test server is up on ${host}:${p}`); }); }); describe('#isPortAvailable', () => { describe('when the port is not allowed to be bound', () => { it('returns a rejected promise', async () => { await expect((0, net_1.isPortAvailable)(specialPort, defaultHost)).rejects.toBeDefined(); }); }); describe('when the port is available', () => { it('returns a fulfilled promise', async () => { await (0, net_1.isPortAvailable)(port, defaultHost); }); }); describe('when the port is unavailable', () => { it('returns a rejected promise', async () => { const server = await createServer(port); try { await expect((0, net_1.isPortAvailable)(port, defaultHost)).rejects.toBeDefined(); } finally { await new Promise((resolve) => server?.close(() => resolve())); } }); }); describe('when a single host is unavailable', () => { it('returns a fulfilled promise', async () => { const server = await createServer(port, '::1'); try { // this should work as the `127.0.0.1` is NOT `::1` await (0, net_1.isPortAvailable)(port, '127.0.0.1'); } finally { await new Promise((resolve) => server?.close(() => resolve())); } }); }); }); }); //# sourceMappingURL=net.spec.js.map