r8743: automatically find the basedn in ldap.js
[ira/wip.git] / testprogs / ejs / ldap.js
1 #!/bin/sh
2 exec smbscript "$0" ${1+"$@"}
3 /*
4         test certin LDAP behaviours
5 */
6
7 var ldb = ldb_init();
8
9 var options = new Object();
10
11 ok = GetOptions(ARGV, options,
12                 "POPT_AUTOHELP",
13                 "POPT_COMMON_SAMBA",
14                 "POPT_COMMON_CREDENTIALS");
15 if (ok == false) {
16    println("Failed to parse options: " + options.ERROR);
17    return -1;
18 }
19
20 if (options.ARGV.length != 1) {
21    println("Usage: ldap.js <HOST>");
22    return -1;
23 }
24
25 var host = options.ARGV[0];
26
27 function basic_tests(ldb, base_dn)
28 {
29         println("Running basic tests");
30
31         ldb.del("cn=ldaptestuser,cn=users," + base_dn);
32
33         ok = ldb.add("
34 dn: cn=ldaptestuser,cn=users," + base_dn + "
35 objectClass: user
36 objectClass: person
37 cn: LDAPtestUSER
38 ");
39         assert(ok);
40
41         println("Testing ldb.search");
42         var res = ldb.search("(&(cn=ldaptestuser)(objectClass=user))");
43
44         assert(res[0].dn == "cn=ldaptestuser,cn=users," + base_dn);
45         assert(res[0].cn == "ldaptestuser");
46         assert(res[0].name == "ldaptestuser");
47         assert(res[0].objectGUID != undefined);
48         assert(res[0].whenCreated != undefined);
49
50 }
51
52 function find_basedn(ldb)
53 {
54     var attrs = new Array("defaultNamingContext");
55     var res = ldb.search("", "", ldb.SCOPE_BASE, attrs);
56     assert(res.length == 1);
57     return res[0].defaultNamingContext;
58 }
59
60 var ok = ldb.connect("ldap://" + host);
61 var base_dn = find_basedn(ldb);
62
63 basic_tests(ldb, base_dn)
64
65 return 0;