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 (res.length != 1) {
164 println("Could not find (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))");
165 assert(res.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 ok = ldb.del(res[0].dn);
224 println(ldb.errstring());
228 println("Testing ldb.search for (&(cn=ldaptestUSer2)(objectClass=user))");
229 var res = ldb.search("(&(cn=ldaptestUSer2)(objectClass=user))");
230 if (res.length != 1) {
231 println("Could not find (&(cn=ldaptestUSer2)(objectClass=user))");
232 assert(res.length == 1);
235 assert(res[0].dn == "cn=ldaptestuser2,cn=users," + base_dn);
236 assert(res[0].cn == "ldaptestuser2");
237 assert(res[0].name == "ldaptestuser2");
238 assert(res[0].objectClass[0] == "top");
239 assert(res[0].objectClass[1] == "person");
240 assert(res[0].objectClass[2] == "organizationalPerson");
241 assert(res[0].objectClass[3] == "user");
242 assert(res[0].objectGUID != undefined);
243 assert(res[0].whenCreated != undefined);
245 ok = ldb.del(res[0].dn);
247 println(ldb.errstring());
251 println("Testing ldb.search for (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
252 var res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
254 if (res.length != 1) {
255 println("Could not find (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
256 assert(res.length == 1);
259 assert(res[0].dn == "cn=ldaptestutf8user èùéìòà,cn=users," + base_dn);
260 assert(res[0].cn == "ldaptestutf8user èùéìòà");
261 assert(res[0].name == "ldaptestutf8user èùéìòà");
262 assert(res[0].objectClass[0] == "top");
263 assert(res[0].objectClass[1] == "person");
264 assert(res[0].objectClass[2] == "organizationalPerson");
265 assert(res[0].objectClass[3] == "user");
266 assert(res[0].objectGUID != undefined);
267 assert(res[0].whenCreated != undefined);
269 ok = ldb.del(res[0].dn);
271 println(ldb.errstring());
275 println("Testing ldb.search for (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))");
276 var res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))");
278 if (res.length != 1) {
279 println("Could not find (expect space collapse, win2k3 fails) (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))");
281 assert(res[0].dn == "cn=ldaptestutf8user2 èùéìòà,cn=users," + base_dn);
282 assert(res[0].cn == "ldaptestutf8user2 èùéìòà");
287 function find_basedn(ldb)
289 var attrs = new Array("defaultNamingContext");
290 var res = ldb.search("", "", ldb.SCOPE_BASE, attrs);
291 assert(res.length == 1);
292 return res[0].defaultNamingContext;
295 /* use command line creds if available */
296 ldb.credentials = options.get_credentials();
298 var ok = ldb.connect("ldap://" + host);
299 var base_dn = find_basedn(ldb);
301 printf("baseDN: %s\n", base_dn);
303 basic_tests(ldb, base_dn)