1-
21import { expect , test , jest } from '@jest/globals' ;
32import net from '../src/index' ;
43import { nativeEventEmitter } from '../src/Globals' ;
@@ -10,11 +9,12 @@ jest.mock('../src/Globals', () => {
109 const { EventEmitter } = require ( 'events' ) ;
1110 const emitter = new EventEmitter ( ) ;
1211 const originalAddListener = emitter . addListener . bind ( emitter ) ;
12+ // @ts -ignore
1313 emitter . addListener = ( event , listener ) => {
1414 originalAddListener ( event , listener ) ;
1515 return { remove : ( ) => emitter . removeListener ( event , listener ) } ;
1616 } ;
17-
17+
1818 let idCounter = 1000 ;
1919 return {
2020 __esModule : true ,
@@ -23,81 +23,87 @@ jest.mock('../src/Globals', () => {
2323 } ;
2424} ) ;
2525
26- test ( 'allowHalfOpen: false (default) should call Sockets.end() on end event' , ( done ) => {
27- // Reset mocks
28- Sockets . end . mockClear ( ) ;
26+ test ( 'allowHalfOpen: false (default) should call Sockets.end() on end event' , ( ) => {
27+ return new Promise ( ( resolve , reject ) => {
28+ // Reset mocks
29+ Sockets . end . mockClear ( ) ;
30+
31+ const server = net . createServer ( ) ; // allowHalfOpen default false
32+ // @ts -ignore
33+ const serverId = server . _id ;
34+ server . listen ( 12345 ) ;
2935
30- const server = net . createServer ( ) ; // allowHalfOpen default false
31- const serverId = server . _id ;
32- server . listen ( 12345 ) ;
33-
34- server . on ( 'connection' , ( socket ) => {
35- socket . on ( 'end' , ( ) => {
36- try {
37- // When we receive 'end', if allowHalfOpen is false, socket.end() should be called
38- // which calls Sockets.end(id)
39- expect ( Sockets . end ) . toHaveBeenCalled ( ) ;
40- done ( ) ;
41- } catch ( e ) {
42- done ( e ) ;
43- }
36+ server . on ( 'connection' , ( socket ) => {
37+ socket . on ( 'end' , ( ) => {
38+ try {
39+ // When we receive 'end', if allowHalfOpen is false, socket.end() should be called
40+ // which calls Sockets.end(id)
41+ expect ( Sockets . end ) . toHaveBeenCalled ( ) ;
42+ resolve ( undefined ) ;
43+ } catch ( e ) {
44+ reject ( e ) ;
45+ }
46+ } ) ;
4447 } ) ;
45- } ) ;
4648
47- // Simulate connection
48- nativeEventEmitter . emit ( 'connection' , {
49- id : serverId ,
50- info : {
51- id : 456 ,
52- connection : {
53- localAddress : '127.0.0.1' ,
54- localPort : 12345 ,
55- remoteAddress : '127.0.0.1' ,
56- remotePort : 54321 ,
57- remoteFamily : 'IPv4'
58- }
59- }
60- } ) ;
49+ // Simulate connection
50+ nativeEventEmitter . emit ( 'connection' , {
51+ id : serverId ,
52+ info : {
53+ id : 456 ,
54+ connection : {
55+ localAddress : '127.0.0.1' ,
56+ localPort : 12345 ,
57+ remoteAddress : '127.0.0.1' ,
58+ remotePort : 54321 ,
59+ remoteFamily : 'IPv4' ,
60+ } ,
61+ } ,
62+ } ) ;
6163
62- // Simulate 'end' event from native for socket 456
63- nativeEventEmitter . emit ( 'end' , { id : 456 } ) ;
64+ // Simulate 'end' event from native for socket 456
65+ nativeEventEmitter . emit ( 'end' , { id : 456 } ) ;
66+ } ) ;
6467} ) ;
6568
66- test ( 'allowHalfOpen: true should NOT call Sockets.end() on end event' , ( done ) => {
67- // Reset mocks
68- Sockets . end . mockClear ( ) ;
69+ test ( 'allowHalfOpen: true should NOT call Sockets.end() on end event' , ( ) => {
70+ return new Promise ( ( resolve , reject ) => {
71+ // Reset mocks
72+ Sockets . end . mockClear ( ) ;
73+
74+ const server = net . createServer ( { allowHalfOpen : true } ) ;
75+ // @ts -ignore
76+ const serverId = server . _id ;
77+ server . listen ( 12346 ) ;
6978
70- const server = net . createServer ( { allowHalfOpen : true } ) ;
71- const serverId = server . _id ;
72- server . listen ( 12346 ) ;
73-
74- server . on ( 'connection' , ( socket ) => {
75- socket . on ( 'end' , ( ) => {
76- try {
77- // When we receive 'end', if allowHalfOpen is true, socket.end() should NOT be called
78- expect ( Sockets . end ) . not . toHaveBeenCalled ( ) ;
79- done ( ) ;
80- } catch ( e ) {
81- done ( e ) ;
82- }
79+ server . on ( 'connection' , ( socket ) => {
80+ socket . on ( 'end' , ( ) => {
81+ try {
82+ // When we receive 'end', if allowHalfOpen is true, socket.end() should NOT be called
83+ expect ( Sockets . end ) . not . toHaveBeenCalled ( ) ;
84+ resolve ( undefined ) ;
85+ } catch ( e ) {
86+ reject ( e ) ;
87+ }
88+ } ) ;
8389 } ) ;
84- } ) ;
8590
86- // Simulate connection
87- nativeEventEmitter . emit ( 'connection' , {
88- id : serverId ,
89- info : {
90- id : 457 ,
91- connection : {
92- localAddress : '127.0.0.1' ,
93- localPort : 12346 ,
94- remoteAddress : '127.0.0.1' ,
95- remotePort : 54321 ,
96- remoteFamily : 'IPv4'
97- }
98- }
99- } ) ;
91+ // Simulate connection
92+ nativeEventEmitter . emit ( 'connection' , {
93+ id : serverId ,
94+ info : {
95+ id : 457 ,
96+ connection : {
97+ localAddress : '127.0.0.1' ,
98+ localPort : 12346 ,
99+ remoteAddress : '127.0.0.1' ,
100+ remotePort : 54321 ,
101+ remoteFamily : 'IPv4' ,
102+ } ,
103+ } ,
104+ } ) ;
100105
101- // Simulate 'end' event from native for socket 457
102- nativeEventEmitter . emit ( 'end' , { id : 457 } ) ;
106+ // Simulate 'end' event from native for socket 457
107+ nativeEventEmitter . emit ( 'end' , { id : 457 } ) ;
108+ } ) ;
103109} ) ;
0 commit comments