@@ -14,6 +14,7 @@ import {
14
14
Result ,
15
15
ResultIterator ,
16
16
ResultRecord ,
17
+ SSL ,
17
18
SSLMode ,
18
19
} from '../src/index.js' ;
19
20
@@ -149,45 +150,68 @@ function testSelect(
149
150
}
150
151
151
152
describe ( 'Connection' , ( ) => {
152
- test ( 'Info' , async ( { client } ) => {
153
- equal (
154
- client . encrypted ,
155
- ! ! ( client . config . ssl && client . config . ssl !== SSLMode . Disable ) ,
156
- ) ;
157
- } ) ;
158
- test ( 'Timeout' , async ( { connect } ) => {
159
- const server = createServer ( ) ;
160
- await new Promise ( ( resolve ) => {
161
- server . listen ( 0 , 'localhost' , 1 , ( ) => {
162
- resolve ( undefined ) ;
153
+ test (
154
+ 'Timeout' ,
155
+ async ( { connect } ) => {
156
+ const server = createServer ( ) ;
157
+ await new Promise ( ( resolve ) => {
158
+ server . listen ( 0 , 'localhost' , 1 , ( ) => {
159
+ resolve ( undefined ) ;
160
+ } ) ;
163
161
} ) ;
164
- } ) ;
165
- const sockets = new Set < Socket > ( ) ;
166
- server . on ( 'connection' , ( socket ) => {
167
- sockets . add ( socket ) ;
168
- server . once ( 'close' , ( ) => {
169
- sockets . delete ( socket ) ;
162
+ const sockets = new Set < Socket > ( ) ;
163
+ server . on ( 'connection' , ( socket ) => {
164
+ sockets . add ( socket ) ;
165
+ server . once ( 'close' , ( ) => {
166
+ sockets . delete ( socket ) ;
167
+ } ) ;
170
168
} ) ;
171
- } ) ;
172
- strictEqual ( server . listening , true ) ;
173
- const address = server . address ( ) as AddressInfo ;
174
- await rejects (
175
- connect ( {
176
- host : address . address ,
177
- port : address . port ,
178
- connectionTimeout : 250 ,
179
- } ) ,
180
- / T i m e o u t a f t e r 2 5 0 m s / ,
181
- ) ;
182
- for ( const socket of sockets . values ( ) ) {
183
- socket . destroy ( ) ;
184
- }
185
- return new Promise ( ( resolve ) => {
186
- server . close ( ( ) => {
187
- resolve ( undefined ) ;
169
+ strictEqual ( server . listening , true ) ;
170
+ const address = server . address ( ) as AddressInfo ;
171
+ await rejects (
172
+ connect ( {
173
+ host : address . address ,
174
+ port : address . port ,
175
+ connectionTimeout : 250 ,
176
+ } ) ,
177
+ / T i m e o u t a f t e r 2 5 0 m s / ,
178
+ ) ;
179
+ for ( const socket of sockets . values ( ) ) {
180
+ socket . destroy ( ) ;
181
+ }
182
+ return new Promise ( ( resolve ) => {
183
+ server . close ( ( ) => {
184
+ resolve ( undefined ) ;
185
+ } ) ;
188
186
} ) ;
189
- } ) ;
190
- } , 500 ) ;
187
+ } ,
188
+ { timeout : 500 } ,
189
+ ) ;
190
+ test (
191
+ 'SSL' ,
192
+ async ( { connect } ) => {
193
+ const test = async ( ssl : SSL , encrypted : boolean ) => {
194
+ const client = await connect ( { ssl } ) ;
195
+ equal ( client . encrypted , encrypted ) ;
196
+ await client . end ( ) ;
197
+ } ;
198
+ try {
199
+ await test ( { mode : SSLMode . Require } , true ) ;
200
+ } catch ( err ) {
201
+ if (
202
+ err instanceof Error &&
203
+ err . toString ( ) ==
204
+ 'Error: Server does not support SSL connections'
205
+ ) {
206
+ await test ( { mode : SSLMode . Prefer } , false ) ;
207
+ return ;
208
+ }
209
+ throw err ;
210
+ }
211
+ await test ( { mode : SSLMode . Prefer } , true ) ;
212
+ } ,
213
+ { skip : env [ 'PGSSLMODE' ] == 'disable' } ,
214
+ ) ;
191
215
} ) ;
192
216
193
217
describe ( 'Query' , ( ) => {
0 commit comments