Клиентский API ldap js не выдает правильную ошибку при передаче неправильных данных фильтра.
Ниже приведен фрагмент кода:
var ldap = require('ldapjs')
var client = ldap.createClient({
url: 'ldap://<<ldap host>>:389'
})
client.bind(<<LDAP Admin User>>, <<Password>>, function(err) {
if (err) {
console.log('Error : ', err)
} else {
let searchOpts = {
scope: 'sub',
filter: 'cn',
attributes: []
}
client.search('dc=test,dc=com', searchOpts, function(err, res) {
if (err) {
console.log('error***************', err)
} else {
let count = 1
res.on('searchEntry', function(entry) {
console.log('entry : ' + JSON.stringify(entry.object))
})
res.on('page', function(result, cb) {
console.log('page end', result.controls)
})
res.on('error', function(err) {
console.error('error: ' + err.message)
})
res.on('end', function(result) {
console.log('result: ' + result)
client.unbind(function(err) {
if (err) {
console.log('error unbind : ', err)
} else {
console.log('unbind is success')
}
})
})
}
})
}
})
Здесь мы передаем неверный параметр фильтра.
D:\node_modules\ldap-filter\lib\index.js:200
throw new Error(expr + ' is invalid');
^
Error: cn is invalid
at _buildFilterTree (D:\node_modules\ldap-filter\lib\index.js:200:13)
at _parseString (D:\node_modules\ldap-filter\lib\index.js:411:17)
at Object.parse (D:\node_modules\ldap-filter\lib\index.js:422:12)
at Object.parseString (D:\node_modules\ldapjs\lib\filters\index.js:176:25)
at Client.search (D:\node_modules\ldapjs\lib\client\client.js:769:30)
at D:\ApacheDS\apacheds_test_retrieve.js:29:12
at sendResult (D:\node_modules\ldapjs\lib\client\client.js:1395:12)
at messageCallback (D:\node_modules\ldapjs\lib\client\client.js:1421:16)
at Parser.onMessage (D:\node_modules\ldapjs\lib\client\client.js:1089:14)
at Parser.emit (events.js:198:13)
Здесь не возникает никаких ошибок из-за ldap js error http://ldapjs.org/errors.html. Кажется, обработка ошибок реализована неправильно.