@@ -11,20 +11,33 @@ const baseURL = `${SCHEME}://${HOST}:${PORT}`
1111
1212const 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
2429tap . 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