r12324: use command line credentials if available in ldap.js
[metze/samba/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 = 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 libinclude("base.js");
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         var 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         ok = ldb.del(res[0].dn);
51         assert(ok);
52 }
53
54 function find_basedn(ldb)
55 {
56     var attrs = new Array("defaultNamingContext");
57     var res = ldb.search("", "", ldb.SCOPE_BASE, attrs);
58     assert(res.length == 1);
59     return res[0].defaultNamingContext;
60 }
61
62 /* use command line creds if available */
63 ldb.credentials = options.get_credentials();
64
65 var ok = ldb.connect("ldap://" + host);
66 var base_dn = find_basedn(ldb);
67
68 printf("baseDN: %s\n", base_dn);
69
70 basic_tests(ldb, base_dn)
71
72 return 0;