@@ -135,6 +135,206 @@ describe('class MongoClient', function () {
135
135
expect ( error ) . to . be . instanceOf ( MongoServerSelectionError ) ;
136
136
} ) ;
137
137
138
+ describe ( '#connect' , function ( ) {
139
+ context ( 'when keepAliveInitialDelay is provided' , function ( ) {
140
+ context ( 'when the value is 0' , function ( ) {
141
+ const options = { keepAliveInitialDelay : 0 } ;
142
+ let client ;
143
+ let spy ;
144
+
145
+ beforeEach ( async function ( ) {
146
+ spy = sinon . spy ( net , 'createConnection' ) ;
147
+ const uri = this . configuration . url ( ) ;
148
+ client = new MongoClient ( uri , options ) ;
149
+ await client . connect ( ) ;
150
+ } ) ;
151
+
152
+ afterEach ( async function ( ) {
153
+ await client ?. close ( ) ;
154
+ spy . restore ( ) ;
155
+ } ) ;
156
+
157
+ it ( 'passes through the option' , {
158
+ metadata : { requires : { apiVersion : false } } ,
159
+ test : function ( ) {
160
+ expect ( spy ) . to . have . been . calledWith (
161
+ sinon . match ( {
162
+ keepAlive : true ,
163
+ keepAliveInitialDelay : 0
164
+ } )
165
+ ) ;
166
+ }
167
+ } ) ;
168
+ } ) ;
169
+
170
+ context ( 'when the value is positive' , function ( ) {
171
+ const options = { keepAliveInitialDelay : 100 } ;
172
+ let client ;
173
+ let spy ;
174
+
175
+ beforeEach ( async function ( ) {
176
+ spy = sinon . spy ( net , 'createConnection' ) ;
177
+ const uri = this . configuration . url ( ) ;
178
+ client = new MongoClient ( uri , options ) ;
179
+ await client . connect ( ) ;
180
+ } ) ;
181
+
182
+ afterEach ( async function ( ) {
183
+ await client ?. close ( ) ;
184
+ spy . restore ( ) ;
185
+ } ) ;
186
+
187
+ it ( 'passes through the option' , {
188
+ metadata : { requires : { apiVersion : false } } ,
189
+ test : function ( ) {
190
+ expect ( spy ) . to . have . been . calledWith (
191
+ sinon . match ( {
192
+ keepAlive : true ,
193
+ keepAliveInitialDelay : 100
194
+ } )
195
+ ) ;
196
+ }
197
+ } ) ;
198
+ } ) ;
199
+
200
+ context ( 'when the value is negative' , function ( ) {
201
+ const options = { keepAliveInitialDelay : - 100 } ;
202
+ let client ;
203
+ let spy ;
204
+
205
+ beforeEach ( async function ( ) {
206
+ spy = sinon . spy ( net , 'createConnection' ) ;
207
+ const uri = this . configuration . url ( ) ;
208
+ client = new MongoClient ( uri , options ) ;
209
+ await client . connect ( ) ;
210
+ } ) ;
211
+
212
+ afterEach ( async function ( ) {
213
+ await client ?. close ( ) ;
214
+ spy . restore ( ) ;
215
+ } ) ;
216
+
217
+ it ( 'the Node.js runtime sets the option to 0' , {
218
+ metadata : { requires : { apiVersion : false } } ,
219
+ test : function ( ) {
220
+ expect ( spy ) . to . have . been . calledWith (
221
+ sinon . match ( {
222
+ keepAlive : true ,
223
+ keepAliveInitialDelay : 0
224
+ } )
225
+ ) ;
226
+ }
227
+ } ) ;
228
+ } ) ;
229
+
230
+ context ( 'when the value is mistyped' , function ( ) {
231
+ // Set server selection timeout to get the error quicker.
232
+ const options = { keepAliveInitialDelay : 'test' , serverSelectionTimeoutMS : 1000 } ;
233
+ let client ;
234
+ let spy ;
235
+
236
+ beforeEach ( async function ( ) {
237
+ spy = sinon . spy ( net , 'createConnection' ) ;
238
+ const uri = this . configuration . url ( ) ;
239
+ client = new MongoClient ( uri , options ) ;
240
+ } ) ;
241
+
242
+ afterEach ( async function ( ) {
243
+ await client ?. close ( ) ;
244
+ spy . restore ( ) ;
245
+ } ) ;
246
+
247
+ it ( 'throws an error' , {
248
+ metadata : { requires : { apiVersion : false } } ,
249
+ test : async function ( ) {
250
+ const error = await client . connect ( ) . catch ( error => error ) ;
251
+ expect ( error . message ) . to . include (
252
+ 'property must be of type number. Received type string'
253
+ ) ;
254
+ }
255
+ } ) ;
256
+ } ) ;
257
+ } ) ;
258
+
259
+ context ( 'when keepAliveInitialDelay is not provided' , function ( ) {
260
+ let client ;
261
+ let spy ;
262
+
263
+ beforeEach ( async function ( ) {
264
+ spy = sinon . spy ( net , 'createConnection' ) ;
265
+ client = this . configuration . newClient ( ) ;
266
+ await client . connect ( ) ;
267
+ } ) ;
268
+
269
+ afterEach ( async function ( ) {
270
+ await client ?. close ( ) ;
271
+ spy . restore ( ) ;
272
+ } ) ;
273
+
274
+ it ( 'sets keepalive to 120000' , function ( ) {
275
+ expect ( spy ) . to . have . been . calledWith (
276
+ sinon . match ( {
277
+ keepAlive : true ,
278
+ keepAliveInitialDelay : 120000
279
+ } )
280
+ ) ;
281
+ } ) ;
282
+ } ) ;
283
+
284
+ context ( 'when noDelay is not provided' , function ( ) {
285
+ let client ;
286
+ let spy ;
287
+
288
+ beforeEach ( async function ( ) {
289
+ spy = sinon . spy ( net , 'createConnection' ) ;
290
+ client = this . configuration . newClient ( ) ;
291
+ await client . connect ( ) ;
292
+ } ) ;
293
+
294
+ afterEach ( async function ( ) {
295
+ await client ?. close ( ) ;
296
+ spy . restore ( ) ;
297
+ } ) ;
298
+
299
+ it ( 'sets noDelay to true' , function ( ) {
300
+ expect ( spy ) . to . have . been . calledWith (
301
+ sinon . match ( {
302
+ noDelay : true
303
+ } )
304
+ ) ;
305
+ } ) ;
306
+ } ) ;
307
+
308
+ context ( 'when noDelay is provided' , function ( ) {
309
+ let client ;
310
+ let spy ;
311
+
312
+ beforeEach ( async function ( ) {
313
+ const options = { noDelay : false } ;
314
+ spy = sinon . spy ( net , 'createConnection' ) ;
315
+ const uri = this . configuration . url ( ) ;
316
+ client = new MongoClient ( uri , options ) ;
317
+ await client . connect ( ) ;
318
+ } ) ;
319
+
320
+ afterEach ( async function ( ) {
321
+ await client ?. close ( ) ;
322
+ spy . restore ( ) ;
323
+ } ) ;
324
+
325
+ it ( 'sets noDelay' , {
326
+ metadata : { requires : { apiVersion : false } } ,
327
+ test : function ( ) {
328
+ expect ( spy ) . to . have . been . calledWith (
329
+ sinon . match ( {
330
+ noDelay : false
331
+ } )
332
+ ) ;
333
+ }
334
+ } ) ;
335
+ } ) ;
336
+ } ) ;
337
+
138
338
it ( 'Should correctly pass through appname' , {
139
339
metadata : {
140
340
requires : {
@@ -889,12 +1089,12 @@ describe('class MongoClient', function () {
889
1089
metadata : { requires : { topology : [ 'single' ] } } ,
890
1090
test : async function ( ) {
891
1091
await client . connect ( ) ;
892
- expect ( netSpy ) . to . have . been . calledWith ( {
893
- autoSelectFamily : false ,
894
- autoSelectFamilyAttemptTimeout : 100 ,
895
- host : 'localhost' ,
896
- port : 27017
897
- } ) ;
1092
+ expect ( netSpy ) . to . have . been . calledWith (
1093
+ sinon . match ( {
1094
+ autoSelectFamily : false ,
1095
+ autoSelectFamilyAttemptTimeout : 100
1096
+ } )
1097
+ ) ;
898
1098
}
899
1099
} ) ;
900
1100
} ) ;
@@ -908,11 +1108,11 @@ describe('class MongoClient', function () {
908
1108
metadata : { requires : { topology : [ 'single' ] } } ,
909
1109
test : async function ( ) {
910
1110
await client . connect ( ) ;
911
- expect ( netSpy ) . to . have . been . calledWith ( {
912
- autoSelectFamily : true ,
913
- host : 'localhost' ,
914
- port : 27017
915
- } ) ;
1111
+ expect ( netSpy ) . to . have . been . calledWith (
1112
+ sinon . match ( {
1113
+ autoSelectFamily : true
1114
+ } )
1115
+ ) ;
916
1116
}
917
1117
} ) ;
918
1118
} ) ;
0 commit comments