2 exec smbscript "$0" ${1+"$@"}
4 test certin LDAP behaviours
9 var options = GetOptions(ARGV,
12 "POPT_COMMON_CREDENTIALS");
13 if (options == undefined) {
14 println("Failed to parse options");
18 libinclude("base.js");
20 if (options.ARGV.length != 1) {
21 println("Usage: ldap.js <HOST>");
25 var host = options.ARGV[0];
27 function basic_tests(ldb, base_dn)
29 println("Running basic tests");
31 ldb.del("cn=ldaptestuser,cn=users," + base_dn);
34 dn: cn=ldaptestuser,cn=users," + base_dn + "
40 ok = ldb.del("cn=ldaptestuser,cn=users," + base_dn);
42 println(ldb.errstring());
46 dn: cn=ldaptestuser,cn=users," + base_dn + "
52 println(ldb.errstring());
58 dn: cn=ldaptestcomputer,cn=computers," + base_dn + "
63 ok = ldb.del("cn=ldaptestcomputer,cn=computers," + base_dn);
65 println(ldb.errstring());
69 dn: cn=ldaptestcomputer,cn=computers," + base_dn + "
74 println(ldb.errstring());
80 dn: cn=ldaptestuser2,cn=users," + base_dn + "
86 ok = ldb.del("cn=ldaptestuser2,cn=users," + base_dn);
88 println(ldb.errstring());
92 dn: cn=ldaptestuser2,cn=users," + base_dn + "
98 println(ldb.errstring());
104 dn: cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn + "
108 ok = ldb.del("cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn);
110 println(ldb.errstring());
114 dn: cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn + "
118 println(ldb.errstring());
124 dn: cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn + "
128 ok = ldb.del("cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn);
130 println(ldb.errstring());
134 dn: cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn + "
138 println(ldb.errstring());
143 println("Testing ldb.search for (&(cn=ldaptestuser)(objectClass=user))");
144 var res = ldb.search("(&(cn=ldaptestuser)(objectClass=user))");
145 if (res.length != 1) {
146 println("Could not find (&(cn=ldaptestuser)(objectClass=user))");
147 assert(res.length == 1);
150 assert(res[0].dn == "cn=ldaptestuser,cn=users," + base_dn);
151 assert(res[0].cn == "ldaptestuser");
152 assert(res[0].name == "ldaptestuser");
153 assert(res[0].objectClass[0] == "top");
154 assert(res[0].objectClass[1] == "person");
155 assert(res[0].objectClass[2] == "organizationalPerson");
156 assert(res[0].objectClass[3] == "user");
157 assert(res[0].objectGUID != undefined);
158 assert(res[0].whenCreated != undefined);
159 assert(res[0].objectCategory == "cn=Person,cn=Schema,cn=Configuration," + base_dn);
161 println("Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))");
162 var res2 = ldb.search("(&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))");
163 if (res2.length != 1) {
164 println("Could not find (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))");
165 assert(res2.length == 1);
168 assert(res[0].dn == res2[0].dn);
170 println("Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon))");
171 var res3 = ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))");
172 if (res.length != 1) {
173 println("Could not find (&(cn=ldaptestuser)(objectCategory=PerSon))");
174 assert(res.length == 1);
177 assert(res[0].dn == res3[0].dn);
179 ok = ldb.del(res[0].dn);
181 println(ldb.errstring());
185 println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectClass=user))");
186 var res = ldb.search("(&(cn=ldaptestcomputer)(objectClass=user))");
187 if (res.length != 1) {
188 println("Could not find (&(cn=ldaptestuser)(objectClass=user))");
189 assert(res.length == 1);
192 assert(res[0].dn == "cn=ldaptestcomputer,cn=computers," + base_dn);
193 assert(res[0].cn == "ldaptestcomputer");
194 assert(res[0].name == "ldaptestcomputer");
195 assert(res[0].objectClass[0] == "top");
196 assert(res[0].objectClass[1] == "person");
197 assert(res[0].objectClass[2] == "organizationalPerson");
198 assert(res[0].objectClass[3] == "user");
199 assert(res[0].objectClass[4] == "computer");
200 assert(res[0].objectGUID != undefined);
201 assert(res[0].whenCreated != undefined);
202 assert(res[0].objectCategory == "cn=Computer,cn=Schema,cn=Configuration," + base_dn);
204 println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))");
205 var res2 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))");
206 if (res2.length != 1) {
207 println("Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))");
208 assert(res2.length == 1);
211 assert(res[0].dn == res2[0].dn);
213 println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER))");
214 var res3 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))");
215 if (res3.length != 1) {
216 println("Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER))");
217 assert(res3.length == 1);
220 assert(res[0].dn == res3[0].dn);
222 println("Testing ldb.search for (&(cn=ldaptest*computer)(objectCategory=compuTER))");
223 var res4 = ldb.search("(&(cn=ldaptest*computer)(objectCategory=compuTER))");
224 if (res4.length != 1) {
225 println("Could not find (&(cn=ldaptest*computer)(objectCategory=compuTER))");
226 assert(res4.length == 1);
229 assert(res[0].dn == res4[0].dn);
231 println("Testing ldb.search for (&(cn=ldaptestcomput*)(objectCategory=compuTER))");
232 var res5 = ldb.search("(&(cn=ldaptestcomput*)(objectCategory=compuTER))");
233 if (res5.length != 1) {
234 println("Could not find (&(cn=ldaptestcomput*)(objectCategory=compuTER))");
235 assert(res5.length == 1);
238 assert(res[0].dn == res5[0].dn);
240 println("Testing ldb.search for (&(cn=*daptestcomputer)(objectCategory=compuTER))");
241 var res6 = ldb.search("(&(cn=*daptestcomputer)(objectCategory=compuTER))");
242 if (res6.length != 1) {
243 println("Could not find (&(cn=*daptestcomputer)(objectCategory=compuTER))");
244 assert(res6.length == 1);
247 assert(res[0].dn == res6[0].dn);
249 ok = ldb.del(res[0].dn);
251 println(ldb.errstring());
255 println("Testing ldb.search for (&(cn=ldaptestUSer2)(objectClass=user))");
256 var res = ldb.search("(&(cn=ldaptestUSer2)(objectClass=user))");
257 if (res.length != 1) {
258 println("Could not find (&(cn=ldaptestUSer2)(objectClass=user))");
259 assert(res.length == 1);
262 assert(res[0].dn == "cn=ldaptestuser2,cn=users," + base_dn);
263 assert(res[0].cn == "ldaptestuser2");
264 assert(res[0].name == "ldaptestuser2");
265 assert(res[0].objectClass[0] == "top");
266 assert(res[0].objectClass[1] == "person");
267 assert(res[0].objectClass[2] == "organizationalPerson");
268 assert(res[0].objectClass[3] == "user");
269 assert(res[0].objectGUID != undefined);
270 assert(res[0].whenCreated != undefined);
272 ok = ldb.del(res[0].dn);
274 println(ldb.errstring());
278 println("Testing ldb.search for (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
279 var res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
281 if (res.length != 1) {
282 println("Could not find (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
283 assert(res.length == 1);
286 assert(res[0].dn == "cn=ldaptestutf8user èùéìòà,cn=users," + base_dn);
287 assert(res[0].cn == "ldaptestutf8user èùéìòà");
288 assert(res[0].name == "ldaptestutf8user èùéìòà");
289 assert(res[0].objectClass[0] == "top");
290 assert(res[0].objectClass[1] == "person");
291 assert(res[0].objectClass[2] == "organizationalPerson");
292 assert(res[0].objectClass[3] == "user");
293 assert(res[0].objectGUID != undefined);
294 assert(res[0].whenCreated != undefined);
296 ok = ldb.del(res[0].dn);
298 println(ldb.errstring());
302 println("Testing ldb.search for (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))");
303 var res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
305 if (res.length != 1) {
306 println("Could not find (expect space collapse, win2k3 fails) (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))");
308 assert(res[0].dn == "cn=ldaptestutf8user2 èùéìòà,cn=users," + base_dn);
309 assert(res[0].cn == "ldaptestutf8user2 èùéìòà");
314 function find_basedn(ldb)
316 var attrs = new Array("defaultNamingContext");
317 var res = ldb.search("", "", ldb.SCOPE_BASE, attrs);
318 assert(res.length == 1);
319 return res[0].defaultNamingContext;
322 /* use command line creds if available */
323 ldb.credentials = options.get_credentials();
325 var ok = ldb.connect("ldap://" + host);
326 var base_dn = find_basedn(ldb);
328 printf("baseDN: %s\n", base_dn);
330 basic_tests(ldb, base_dn)