Repository navigation
Expand file tree
/
Copy pathtest.js
More file actions
106 lines (80 loc) · 2.58 KB
/
Copy pathtest.js
File metadata and controls
106 lines (80 loc) · 2.58 KB
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
const test = require('brittle')
const dgram = require('dgram')
const net = require('net')
const bind = require('./')
test('udp', async function (t) {
const port = await freePort(true)
const socket = await bind.udp(port)
t.is(port, socket.address().port)
socket.close()
})
test('udp - taken port', async function (t) {
const existing = await bind.udp()
const socket = await bind.udp(existing.address().port)
t.not(socket.address().port, existing.address().port)
existing.close()
socket.close()
})
test('udp - all taken', async function (t) {
const existing = await bind.udp()
const socket = await bind.udp([existing.address().port, existing.address().port])
t.not(socket.address().port, existing.address().port)
existing.close()
socket.close()
})
test('tcp', async function (t) {
const port = await freePort(false)
const server = await bind.tcp(port)
t.is(port, server.address().port)
server.close()
})
test('tcp - taken port', async function (t) {
const existing = await bind.tcp()
const server = await bind.tcp(existing.address().port)
t.not(server.address().port, existing.address().port)
existing.close()
server.close()
})
test('dual', async function (t) {
const { server, socket } = await bind.dual()
t.is(server.address().port, socket.address().port)
t.ok(server.address().port > 0, 'is bound')
server.close()
socket.close()
})
test('dual - tcp is taken', async function (t) {
const exiting = await bind.tcp()
const { server, socket } = await bind.dual(exiting.address().port)
t.is(server.address().port, socket.address().port)
t.not(server.address().port, exiting.address().port, 'different port')
server.close()
socket.close()
exiting.close()
})
test('dual - udp is taken', async function (t) {
const exiting = await bind.udp()
const { server, socket } = await bind.dual(exiting.address().port)
t.is(server.address().port, socket.address().port)
t.not(server.address().port, exiting.address().port, 'different port')
server.close()
socket.close()
exiting.close()
})
test('all taken, no allowAny', async function (t) {
t.exception(bind.udp([], { allowAny: false }))
t.exception(bind.tcp([], { allowAny: false }))
t.exception(bind.dual([], { allowAny: false }))
})
function freePort (udp) {
return new Promise(function (resolve) {
const socket = udp ? dgram.createSocket('udp4') : net.createServer()
if (udp) socket.bind(0)
else socket.listen(0)
socket.on('listening', function () {
const { port } = socket.address()
socket.close(function () {
resolve(port)
})
})
})
}