@@ -11,20 +11,33 @@ const baseURL = `${SCHEME}://${HOST}:${PORT}`
11
11
12
12
const client = ldapjs . createClient ( { url : baseURL } )
13
13
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
+ } )
21
24
22
- const baseDN = parseDN ( 'ou=テスト,dc=planetexpress,dc=com' )
25
+ tap . teardown ( ( ) => {
26
+ client . unbind ( )
27
+ } )
23
28
24
29
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' )
28
41
29
42
client . search ( baseDN . toString ( ) , opts , ( err , res ) => {
30
43
t . error ( err , 'search error' )
@@ -42,7 +55,41 @@ tap.test('can search OUs with Japanese characters', t => {
42
55
t . error ( err , 'search entry error' )
43
56
} )
44
57
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 ( )
46
93
} )
47
94
} )
48
95
} )
0 commit comments