Skip to content
This repository was archived by the owner on May 14, 2024. It is now read-only.

Commit 971f1bb

Browse files
committed
Resolve issue #860
1 parent 7b869f4 commit 971f1bb

File tree

2 files changed

+66
-19
lines changed

2 files changed

+66
-19
lines changed

package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
},
1212
"main": "lib/index.js",
1313
"dependencies": {
14-
"@ldapjs/asn1": "2.0.0",
15-
"@ldapjs/attribute": "1.0.0",
16-
"@ldapjs/change": "1.0.0",
17-
"@ldapjs/controls": "2.0.0",
18-
"@ldapjs/dn": "1.1.0",
19-
"@ldapjs/filter": "2.1.0",
20-
"@ldapjs/messages": "^1.2.0",
14+
"@ldapjs/asn1": "^2.0.0",
15+
"@ldapjs/attribute": "^1.0.0",
16+
"@ldapjs/change": "^1.0.0",
17+
"@ldapjs/controls": "^2.0.0",
18+
"@ldapjs/dn": "^1.1.0",
19+
"@ldapjs/filter": "^2.1.1",
20+
"@ldapjs/messages": "^1.2.1",
2121
"@ldapjs/protocol": "^1.2.1",
2222
"abstract-logging": "^2.0.1",
2323
"assert-plus": "^1.0.0",

test-integration/client/issue-860.test.js

+59-12
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,33 @@ const baseURL = `${SCHEME}://${HOST}:${PORT}`
1111

1212
const client = ldapjs.createClient({ url: baseURL })
1313

14-
const opts = {
15-
filter: '(&(objectClass=person))',
16-
scope: 'sub',
17-
paged: true,
18-
sizeLimit: 100,
19-
attributes: ['cn', 'employeeID']
20-
}
14+
tap.before(() => {
15+
return new Promise((resolve, reject) => {
16+
client.bind('cn=admin,dc=planetexpress,dc=com', 'GoodNewsEveryone', (err) => {
17+
if (err) {
18+
return reject(err)
19+
}
20+
resolve()
21+
})
22+
})
23+
})
2124

22-
const baseDN = parseDN('ou=テスト,dc=planetexpress,dc=com')
25+
tap.teardown(() => {
26+
client.unbind()
27+
})
2328

2429
tap.test('can search OUs with Japanese characters', t => {
25-
client.bind('cn=admin,dc=planetexpress,dc=com', 'GoodNewsEveryone', (err) => {
26-
t.error(err, 'bind error')
27-
})
30+
t.plan(2)
31+
32+
const opts = {
33+
filter: '(&(objectClass=person))',
34+
scope: 'sub',
35+
paged: true,
36+
sizeLimit: 100,
37+
attributes: ['cn', 'employeeID']
38+
}
39+
40+
const baseDN = parseDN('ou=テスト,dc=planetexpress,dc=com')
2841

2942
client.search(baseDN.toString(), opts, (err, res) => {
3043
t.error(err, 'search error')
@@ -42,7 +55,41 @@ tap.test('can search OUs with Japanese characters', t => {
4255
t.error(err, 'search entry error')
4356
})
4457
res.on('end', () => {
45-
client.unbind(t.end)
58+
t.end()
59+
})
60+
})
61+
})
62+
63+
tap.test('can search with non-ascii chars in filter', t => {
64+
t.plan(3)
65+
66+
const opts = {
67+
filter: '(&(sn=Rodríguez))',
68+
scope: 'sub',
69+
attributes: ['dn', 'sn', 'cn'],
70+
type: 'user'
71+
}
72+
73+
let searchEntryCount = 0
74+
client.search('dc=planetexpress,dc=com', opts, (err, res) => {
75+
t.error(err, 'search error')
76+
res.on('searchEntry', (entry) => {
77+
searchEntryCount += 1
78+
t.match(entry.pojo, {
79+
type: 'SearchResultEntry',
80+
objectName: 'cn=Bender Bending Rodr\\c3\\adguez,ou=people,dc=planetexpress,dc=com',
81+
attributes: [{
82+
type: 'cn',
83+
values: ['Bender Bending Rodríguez']
84+
}]
85+
})
86+
})
87+
res.on('error', (err) => {
88+
t.error(err, 'search entry error')
89+
})
90+
res.on('end', () => {
91+
t.equal(searchEntryCount, 1, 'should have found 1 entry')
92+
t.end()
4693
})
4794
})
4895
})

0 commit comments

Comments
 (0)