forked from sindresorhus/get-port
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
107 lines (83 loc) · 2.62 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import net from 'net';
import test from 'ava';
import pify from 'pify';
import getPort from '.';
test('port can be bound when promise resolves', async t => {
const port = await getPort();
t.is(typeof port, 'number');
t.true(port > 0);
const server = net.createServer();
await pify(server.listen.bind(server))(port);
t.is(server.address().port, port);
});
test('preferred port', async t => {
const desiredPort = 8080;
const port = await getPort({port: desiredPort});
t.is(port, desiredPort);
});
test('preferred port unavailable', async t => {
const desiredPort = 8282;
const server = net.createServer();
await pify(server.listen.bind(server))(desiredPort);
const port = await getPort({port: desiredPort});
t.is(typeof port, 'number');
t.true(port > 0);
t.not(port, desiredPort);
});
test('port can be bound to IPv4 host when promise resolves', async t => {
const port = await getPort({host: '0.0.0.0'});
t.is(typeof port, 'number');
t.true(port > 0);
const server = net.createServer();
await pify(server.listen.bind(server))(port, '0.0.0.0');
t.is(server.address().port, port);
});
test('preferred port given IPv4 host', async t => {
const desiredPort = 8080;
const port = await getPort({
port: desiredPort,
host: '0.0.0.0'
});
t.is(port, desiredPort);
});
test('preferred ports', async t => {
const desiredPorts = [9910, 9912, 9913];
const port = await getPort({
port: desiredPorts,
host: '0.0.0.0'
});
t.is(port, desiredPorts[0]);
});
test('first port in preferred ports array is unavailable', async t => {
const desiredPorts = [9090, 9091];
const server = net.createServer();
await pify(server.listen.bind(server))(desiredPorts[0]);
const port = await getPort({
port: desiredPorts
});
t.is(port, desiredPorts[1]);
});
test('all preferred ports in array are unavailable', async t => {
const desiredPorts = [9990, 9991];
const server1 = net.createServer();
await pify(server1.listen.bind(server1))(desiredPorts[0]);
const server2 = net.createServer();
await pify(server2.listen.bind(server2))(desiredPorts[1]);
const port = await getPort({
port: desiredPorts
});
t.is(typeof port, 'number');
t.true(port > 0 && port < 65536);
t.not(port, desiredPorts[0]);
t.not(port, desiredPorts[1]);
});
test('makeRange throws on invalid ranges', t => {
t.throws(() => getPort.makeRange(0, 0));
t.throws(() => getPort.makeRange(1023, 1023));
t.throws(() => getPort.makeRange(65536, 65536));
t.throws(() => getPort.makeRange(1025, 1024));
});
test('makeRange produces valid ranges', t => {
t.deepEqual(getPort.makeRange(1024, 1025), [1024]);
t.deepEqual(getPort.makeRange(1024, 1027), [1024, 1025, 1026]);
});