11'use strict'
22
3+ const assert = require ( 'node:assert' )
34const { test } = require ( 'node:test' )
45const { once } = require ( 'node:events' )
56const { 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
4748test ( '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
5657test ( '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
166167test ( '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
214215test ( '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
254254test ( '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
304304test ( '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
344344test ( '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
384384test ( '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