@@ -367,7 +367,7 @@ tap.test('createClient', t => {
367
367
)
368
368
} )
369
369
370
- tap . test ( 'exception from bad createClient parameter (issue #418)' , t => {
370
+ t . test ( 'exception from bad createClient parameter (issue #418)' , t => {
371
371
try {
372
372
// This port number is totally invalid. It will cause the URL parser
373
373
// to throw an exception that should be caught.
@@ -387,6 +387,9 @@ tap.test('createClient', t => {
387
387
] ,
388
388
connectTimeout : 1
389
389
} )
390
+ client . on ( 'connectTimeout' , ( ) => { } )
391
+ client . on ( 'connectError' , ( ) => { } )
392
+ client . on ( 'connectRefused' , ( ) => { } )
390
393
391
394
t . equal ( client . urls . length , 2 )
392
395
} )
@@ -1513,6 +1516,8 @@ tap.test('connection refused', function (t) {
1513
1516
url : `ldap://0.0.0.0:${ unusedPortNumber } `
1514
1517
} )
1515
1518
1519
+ client . on ( 'connectRefused' , ( ) => { } )
1520
+
1516
1521
client . bind ( 'cn=root' , 'secret' , function ( err , res ) {
1517
1522
t . true ( err )
1518
1523
t . type ( err , Error )
@@ -1531,6 +1536,8 @@ tap.test('connection timeout', function (t) {
1531
1536
timeout : 1
1532
1537
} )
1533
1538
1539
+ client . on ( 'connectTimeout' , ( ) => { } )
1540
+
1534
1541
let done = false
1535
1542
1536
1543
setTimeout ( function ( ) {
@@ -1549,3 +1556,97 @@ tap.test('connection timeout', function (t) {
1549
1556
} )
1550
1557
} )
1551
1558
} )
1559
+
1560
+ tap . only ( 'emitError' , function ( t ) {
1561
+ t . test ( 'connectTimeout' , function ( t ) {
1562
+ getPort ( ) . then ( function ( unusedPortNumber ) {
1563
+ const client = ldap . createClient ( {
1564
+ url : `ldap://example.org:${ unusedPortNumber } ` ,
1565
+ connectTimeout : 1 ,
1566
+ timeout : 1
1567
+ } )
1568
+
1569
+ const timeout = setTimeout ( function ( ) {
1570
+ throw new Error ( 'LDAPJS waited for the server for too long' )
1571
+ } , 2000 )
1572
+
1573
+ client . on ( 'error' , ( err ) => {
1574
+ t . fail ( err )
1575
+ } )
1576
+ client . on ( 'connectTimeout' , ( err ) => {
1577
+ t . true ( err )
1578
+ t . type ( err , Error )
1579
+ t . equals ( err . message , 'connection timeout' )
1580
+ clearTimeout ( timeout )
1581
+ t . end ( )
1582
+ } )
1583
+
1584
+ client . bind ( 'cn=root' , 'secret' , ( ) => { } )
1585
+ } )
1586
+ } )
1587
+
1588
+ t . test ( 'connectTimeout to error' , function ( t ) {
1589
+ getPort ( ) . then ( function ( unusedPortNumber ) {
1590
+ const client = ldap . createClient ( {
1591
+ url : `ldap://example.org:${ unusedPortNumber } ` ,
1592
+ connectTimeout : 1 ,
1593
+ timeout : 1
1594
+ } )
1595
+
1596
+ const timeout = setTimeout ( function ( ) {
1597
+ throw new Error ( 'LDAPJS waited for the server for too long' )
1598
+ } , 2000 )
1599
+
1600
+ client . on ( 'error' , ( err ) => {
1601
+ t . true ( err )
1602
+ t . type ( err , Error )
1603
+ t . equals ( err . message , 'connectTimeout: connection timeout' )
1604
+ clearTimeout ( timeout )
1605
+ t . end ( )
1606
+ } )
1607
+
1608
+ client . bind ( 'cn=root' , 'secret' , ( ) => { } )
1609
+ } )
1610
+ } )
1611
+
1612
+ t . test ( 'connectRefused' , function ( t ) {
1613
+ getPort ( ) . then ( function ( unusedPortNumber ) {
1614
+ const client = ldap . createClient ( {
1615
+ url : `ldap://0.0.0.0:${ unusedPortNumber } `
1616
+ } )
1617
+
1618
+ client . on ( 'error' , ( err ) => {
1619
+ t . fail ( err )
1620
+ } )
1621
+ client . on ( 'connectRefused' , ( err ) => {
1622
+ t . true ( err )
1623
+ t . type ( err , Error )
1624
+ t . equals ( err . message , `connect ECONNREFUSED 0.0.0.0:${ unusedPortNumber } ` )
1625
+ t . equals ( err . code , 'ECONNREFUSED' )
1626
+ t . end ( )
1627
+ } )
1628
+
1629
+ client . bind ( 'cn=root' , 'secret' , ( ) => { } )
1630
+ } )
1631
+ } )
1632
+
1633
+ t . test ( 'connectRefused to error' , function ( t ) {
1634
+ getPort ( ) . then ( function ( unusedPortNumber ) {
1635
+ const client = ldap . createClient ( {
1636
+ url : `ldap://0.0.0.0:${ unusedPortNumber } `
1637
+ } )
1638
+
1639
+ client . on ( 'error' , ( err ) => {
1640
+ t . true ( err )
1641
+ t . type ( err , Error )
1642
+ t . equals ( err . message , `connectRefused: connect ECONNREFUSED 0.0.0.0:${ unusedPortNumber } ` )
1643
+ t . equals ( err . code , 'ECONNREFUSED' )
1644
+ t . end ( )
1645
+ } )
1646
+
1647
+ client . bind ( 'cn=root' , 'secret' , ( ) => { } )
1648
+ } )
1649
+ } )
1650
+
1651
+ t . end ( )
1652
+ } )
0 commit comments