test('port is occupied by other process', () => { request.mockImplementation((opts, cb) => { const err = new Error('fake selenium error'); err.code = 'ECONNREFUSED'; return cb(err); }); portscanner.checkPortStatus.mockImplementation((port, host, cb) => cb(null, 'open')); const spy = sinon.spy(); checkPorts([10], spy); expect(spy.called).toEqual(true); expect(spy.args[0][0]).toEqual([{ 'port': 10, 'available': false }]); });
const checkPortStatus = (desiredPort, callback) => { request("http://127.0.0.1:" + desiredPort + "/wd/hub/static/resource/hub.html", (seleniumErr) => { if (seleniumErr && seleniumErr.code === "ECONNREFUSED") { portscanner.checkPortStatus(desiredPort, "127.0.0.1", (error, portStatus) => { if (portStatus === "open") { return callback(PORT_STATUS_IN_USE); } else { return callback(PORT_STATUS_AVAILABLE); } }); } else { logger.log( "Found selenium HTTP server at port " + desiredPort + ", port is in use."); return callback(PORT_STATUS_IN_USE); } }); }
portscanner.checkPortStatus(YEELIGHT_PORT, {host :ip, timeout: PORT_SCAN_TIMEOUT}, (error, status) =>
test('port is available', () => { request.mockImplementation((opts, cb) => { const err = new Error('fake selenium error'); err.code = 'ECONNREFUSED'; return cb(err); }); portscanner.checkPortStatus.mockImplementation((port, host, cb) => cb(null, 'closed')); const spy = sinon.spy(); checkPorts([10], spy); expect(spy.called).toEqual(true); expect(spy.args[0][0]).toEqual([{ 'port': 10, 'available': true }]); });