Skip to content

Commit 8e094d7

Browse files
committed
test: restore websocket test compatibility on Node 18
- replace t.assert usage with node:assert in websocket tests so they work on Node 18\n- reduce the disabled-limit payload size in permessage-deflate-limit to avoid CI timeouts\n- remove an extra blank line in lib/dispatcher/agent.js to satisfy standard Signed-off-by: Matteo Collina <hello@matteocollina.com>
1 parent ef0011d commit 8e094d7

3 files changed

Lines changed: 38 additions & 38 deletions

File tree

lib/dispatcher/agent.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ function defaultFactory (origin, opts) {
2424

2525
class Agent extends DispatcherBase {
2626
constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {
27-
2827
if (typeof factory !== 'function') {
2928
throw new InvalidArgumentError('factory must be a function.')
3029
}

test/websocket/permessage-deflate-config.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const assert = require('node:assert')
34
const { test } = require('node:test')
45
const { once } = require('node:events')
56
const { WebSocketServer } = require('ws')
@@ -16,7 +17,7 @@ test('Agent webSocketOptions.maxPayloadSize is read correctly', async (t) => {
1617
t.after(() => agent.close())
1718

1819
// Verify the option is stored and retrievable
19-
t.assert.strictEqual(agent.webSocketOptions.maxPayloadSize, customLimit)
20+
assert.strictEqual(agent.webSocketOptions.maxPayloadSize, customLimit)
2021
})
2122

2223
test('Agent with default webSocketOptions uses 128 MB limit', async (t) => {
@@ -25,7 +26,7 @@ test('Agent with default webSocketOptions uses 128 MB limit', async (t) => {
2526
t.after(() => agent.close())
2627

2728
// Default should be 128 MB
28-
t.assert.strictEqual(agent.webSocketOptions.maxPayloadSize, 128 * 1024 * 1024)
29+
assert.strictEqual(agent.webSocketOptions.maxPayloadSize, 128 * 1024 * 1024)
2930
})
3031

3132
test('Custom maxPayloadSize allows messages under limit', async (t) => {
@@ -55,7 +56,7 @@ test('Custom maxPayloadSize allows messages under limit', async (t) => {
5556
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`, { dispatcher: agent })
5657

5758
const [event] = await once(client, 'message')
58-
t.assert.strictEqual(event.data.size, dataSize, 'Message under limit should be received')
59+
assert.strictEqual(event.data.size, dataSize, 'Message under limit should be received')
5960
client.close()
6061
})
6162

@@ -84,7 +85,7 @@ test('Messages at exactly the limit succeed', async (t) => {
8485
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`, { dispatcher: agent })
8586

8687
const [event] = await once(client, 'message')
87-
t.assert.strictEqual(event.data.size, limit, 'Message at exactly the limit should succeed')
88+
assert.strictEqual(event.data.size, limit, 'Message at exactly the limit should succeed')
8889
client.close()
8990
})
9091

@@ -99,7 +100,7 @@ test('Client webSocketOptions.maxPayloadSize is read correctly', async (t) => {
99100
t.after(() => client.close())
100101

101102
// Verify the option is stored and retrievable
102-
t.assert.strictEqual(client.webSocketOptions.maxPayloadSize, customLimit)
103+
assert.strictEqual(client.webSocketOptions.maxPayloadSize, customLimit)
103104
})
104105

105106
test('Pool webSocketOptions.maxPayloadSize is read correctly', async (t) => {
@@ -113,5 +114,5 @@ test('Pool webSocketOptions.maxPayloadSize is read correctly', async (t) => {
113114
t.after(() => pool.close())
114115

115116
// Verify the option is stored and retrievable
116-
t.assert.strictEqual(pool.webSocketOptions.maxPayloadSize, customLimit)
117+
assert.strictEqual(pool.webSocketOptions.maxPayloadSize, customLimit)
117118
})

test/websocket/permessage-deflate-limit.js

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const assert = require('node:assert')
34
const { test } = require('node:test')
45
const { once } = require('node:events')
56
const { randomFillSync } = require('node:crypto')
@@ -26,7 +27,7 @@ test('Compressed message under limit decompresses successfully', async (t) => {
2627
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`)
2728

2829
const [event] = await once(client, 'message')
29-
t.assert.strictEqual(event.data.size, 1024)
30+
assert.strictEqual(event.data.size, 1024)
3031
client.close()
3132
})
3233

@@ -41,7 +42,7 @@ test('Agent webSocketOptions.maxPayloadSize is read correctly', async (t) => {
4142
t.after(() => agent.close())
4243

4344
// Verify the option is stored and retrievable
44-
t.assert.strictEqual(agent.webSocketOptions.maxPayloadSize, customLimit)
45+
assert.strictEqual(agent.webSocketOptions.maxPayloadSize, customLimit)
4546
})
4647

4748
test('Agent with default webSocketOptions uses 128 MB limit', async (t) => {
@@ -50,7 +51,7 @@ test('Agent with default webSocketOptions uses 128 MB limit', async (t) => {
5051
t.after(() => agent.close())
5152

5253
// Default should be 128 MB
53-
t.assert.strictEqual(agent.webSocketOptions.maxPayloadSize, 128 * 1024 * 1024)
54+
assert.strictEqual(agent.webSocketOptions.maxPayloadSize, 128 * 1024 * 1024)
5455
})
5556

5657
test('Custom maxPayloadSize allows messages under limit', async (t) => {
@@ -80,7 +81,7 @@ test('Custom maxPayloadSize allows messages under limit', async (t) => {
8081
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`, { dispatcher: agent })
8182

8283
const [event] = await once(client, 'message')
83-
t.assert.strictEqual(event.data.size, dataSize, 'Message under limit should be received')
84+
assert.strictEqual(event.data.size, dataSize, 'Message under limit should be received')
8485
client.close()
8586
})
8687

@@ -109,7 +110,7 @@ test('Messages at exactly the limit succeed', async (t) => {
109110
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`, { dispatcher: agent })
110111

111112
const [event] = await once(client, 'message')
112-
t.assert.strictEqual(event.data.size, limit, 'Message at exactly the limit should succeed')
113+
assert.strictEqual(event.data.size, limit, 'Message at exactly the limit should succeed')
113114
client.close()
114115
})
115116

@@ -132,7 +133,7 @@ test('Compressed frame payload over wire-size limit is rejected', async (t) => {
132133
}
133134
}
134135

135-
t.assert.ok(payload, 'Expected incompressible payload with compressed wire size over the limit')
136+
assert.ok(payload, 'Expected incompressible payload with compressed wire size over the limit')
136137

137138
let messageReceived = false
138139

@@ -159,8 +160,8 @@ test('Compressed frame payload over wire-size limit is rejected', async (t) => {
159160

160161
await Promise.race([closePromise, timeoutPromise])
161162

162-
t.assert.strictEqual(messageReceived, false, 'Compressed frame over wire-size limit should be rejected')
163-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
163+
assert.strictEqual(messageReceived, false, 'Compressed frame over wire-size limit should be rejected')
164+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
164165
})
165166

166167
test('Messages over the limit are rejected', async (t) => {
@@ -206,9 +207,9 @@ test('Messages over the limit are rejected', async (t) => {
206207

207208
await Promise.race([closePromise, timeoutPromise])
208209

209-
t.assert.strictEqual(messageReceived, false, 'Message over limit should be rejected')
210-
t.assert.ok(closeEvent !== null, 'Close event should have been emitted')
211-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
210+
assert.strictEqual(messageReceived, false, 'Message over limit should be rejected')
211+
assert.ok(closeEvent !== null, 'Close event should have been emitted')
212+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
212213
})
213214

214215
test('Limit can be disabled by setting maxPayloadSize to 0', async (t) => {
@@ -220,7 +221,9 @@ test('Limit can be disabled by setting maxPayloadSize to 0', async (t) => {
220221
t.after(() => server.close())
221222
await once(server, 'listening')
222223

223-
const dataSize = 100 * 1024 * 1024 // 100 MB
224+
// Keep this comfortably above the smaller limits used elsewhere in this file,
225+
// while avoiding the 100 MB transfer that can be slow on CI.
226+
const dataSize = 2 * 1024 * 1024 // 2 MB
224227

225228
server.on('connection', (ws) => {
226229
ws.send(Buffer.alloc(dataSize, 0x41), { binary: true })
@@ -236,19 +239,16 @@ test('Limit can be disabled by setting maxPayloadSize to 0', async (t) => {
236239
t.after(() => agent.close())
237240

238241
const client = new WebSocket(`ws://127.0.0.1:${server.address().port}`, { dispatcher: agent })
242+
const timeout = Symbol('timeout')
239243

240-
// Use Promise.race with timeout since large message takes time
241-
const messagePromise = once(client, 'message')
242-
const timeoutPromise = sleep(10000)
244+
const result = await Promise.race([
245+
once(client, 'message'),
246+
sleep(10000, timeout)
247+
])
243248

244-
const result = await Promise.race([messagePromise, timeoutPromise])
245-
246-
if (result) {
247-
t.assert.strictEqual(result[0].data.size, dataSize, 'Large message should be received when limit is disabled')
248-
client.close()
249-
} else {
250-
t.fail('Test timed out waiting for large message')
251-
}
249+
assert.notStrictEqual(result, timeout, 'Test timed out waiting for large message')
250+
assert.strictEqual(result[0].data.size, dataSize, 'Large message should be received when limit is disabled')
251+
client.close()
252252
})
253253

254254
test('Fragmented compressed payload over total limit is rejected', async (t) => {
@@ -297,8 +297,8 @@ test('Fragmented compressed payload over total limit is rejected', async (t) =>
297297

298298
await Promise.race([closePromise, timeoutPromise])
299299

300-
t.assert.strictEqual(messageReceived, false, 'Fragmented compressed message over total limit should be rejected')
301-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
300+
assert.strictEqual(messageReceived, false, 'Fragmented compressed message over total limit should be rejected')
301+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
302302
})
303303

304304
test('Raw uncompressed payload over immediate limit is rejected', async (t) => {
@@ -337,8 +337,8 @@ test('Raw uncompressed payload over immediate limit is rejected', async (t) => {
337337

338338
await Promise.race([closePromise, timeoutPromise])
339339

340-
t.assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
341-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
340+
assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
341+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
342342
})
343343

344344
test('Raw uncompressed payload over 16-bit extended limit is rejected', async (t) => {
@@ -377,8 +377,8 @@ test('Raw uncompressed payload over 16-bit extended limit is rejected', async (t
377377

378378
await Promise.race([closePromise, timeoutPromise])
379379

380-
t.assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
381-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
380+
assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
381+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
382382
})
383383

384384
test('Raw uncompressed payload over 64-bit extended limit is rejected', async (t) => {
@@ -417,6 +417,6 @@ test('Raw uncompressed payload over 64-bit extended limit is rejected', async (t
417417

418418
await Promise.race([closePromise, timeoutPromise])
419419

420-
t.assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
421-
t.assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
420+
assert.strictEqual(messageReceived, false, 'Raw uncompressed message over limit should be rejected')
421+
assert.strictEqual(client.readyState, WebSocket.CLOSED, 'Connection should be closed after exceeding limit')
422422
})

0 commit comments

Comments
 (0)