r9915: Some more mappings. Fix weird sAMAccountName values.
[samba.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 = GetOptions(ARGV, 
10                 "POPT_AUTOHELP",
11                 "POPT_COMMON_SAMBA",
12                 "POPT_COMMON_CREDENTIALS");
13 if (options == undefined) {
14    println("Failed to parse options");
15    return -1;
16 }
17
18 if (options.ARGV.length != 1) {
19    println("Usage: ldap.js <HOST>");
20    return -1;
21 }
22
23 var host = options.ARGV[0];
24
25 function basic_tests(ldb, base_dn)
26 {
27         println("Running basic tests");
28
29         ldb.del("cn=ldaptestuser,cn=users," + base_dn);
30
31         var ok = ldb.add("
32 dn: cn=ldaptestuser,cn=users," + base_dn + "
33 objectClass: user
34 objectClass: person
35 cn: LDAPtestUSER
36 ");
37         assert(ok);
38
39         println("Testing ldb.search");
40         var res = ldb.search("(&(cn=ldaptestuser)(objectClass=user))");
41
42         assert(res[0].dn == "cn=ldaptestuser,cn=users," + base_dn);
43         assert(res[0].cn == "ldaptestuser");
44         assert(res[0].name == "ldaptestuser");
45         assert(res[0].objectGUID != undefined);
46         assert(res[0].whenCreated != undefined);
47
48         ok = ldb.del(res[0].dn);
49         assert(ok);
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;