@@ -37,26 +37,52 @@ suite.test('connection does not emit ECONNRESET errors during disconnect', funct
37
37
done ( )
38
38
} )
39
39
40
+ var SSLNegotiationPacketTests = [
41
+ {
42
+ testName : 'connection does not emit ECONNRESET errors during disconnect also when using SSL' ,
43
+ errorMessage : null ,
44
+ response : 'S' ,
45
+ responseType : 'sslconnect'
46
+ } ,
47
+ {
48
+ testName : 'connection emits an error when SSL is not supported' ,
49
+ errorMessage : 'The server does not support SSL connections' ,
50
+ response : 'N' ,
51
+ responseType : 'error'
52
+ } ,
53
+ {
54
+ testName : 'connection emits an error when postmaster responds to SSL negotiation packet' ,
55
+ errorMessage : 'There was an error establishing an SSL connection' ,
56
+ response : 'E' ,
57
+ responseType : 'error'
58
+ }
59
+ ]
40
60
41
- suite . test ( 'connection does not emit ECONNRESET errors during disconnect also when using SSL' , function ( done ) {
42
- // our fake postgres server, which just responds with 'S' to start SSL
43
- var socket
44
- var server = net . createServer ( function ( c ) {
45
- socket = c
46
- c . once ( 'data' , function ( data ) {
47
- c . write ( Buffer . from ( 'S' ) )
61
+ for ( var i = 0 ; i < SSLNegotiationPacketTests . length ; i ++ ) {
62
+ var tc = SSLNegotiationPacketTests [ i ]
63
+ suite . test ( tc . testName , function ( done ) {
64
+ // our fake postgres server
65
+ var socket
66
+ var server = net . createServer ( function ( c ) {
67
+ socket = c
68
+ c . once ( 'data' , function ( data ) {
69
+ c . write ( Buffer . from ( tc . response ) )
70
+ } )
48
71
} )
49
- } )
50
72
51
- server . listen ( 7778 , function ( ) {
52
- var con = new Connection ( { ssl : true } )
53
- con . connect ( 7778 , 'localhost' )
54
- assert . emits ( con , 'sslconnect' , function ( ) {
55
- con . end ( )
56
- socket . destroy ( )
57
- server . close ( )
58
- done ( )
73
+ server . listen ( 7778 , function ( ) {
74
+ var con = new Connection ( { ssl : true } )
75
+ con . connect ( 7778 , 'localhost' )
76
+ assert . emits ( con , tc . responseType , function ( err ) {
77
+ if ( tc . errorMessage !== null || err ) {
78
+ assert . equal ( err . message , tc . errorMessage )
79
+ }
80
+ con . end ( )
81
+ socket . destroy ( )
82
+ server . close ( )
83
+ done ( )
84
+ } )
85
+ con . requestSsl ( )
59
86
} )
60
- con . requestSsl ( )
61
87
} )
62
- } )
88
+ }
0 commit comments