r8317: convert the example scripts over to the new GetOptions() call
[ab/samba.git/.git] / testprogs / ejs / samr.js
1 #!/usr/bin/env smbscript
2 /*
3   test samr calls from ejs
4 */      
5
6 var options = new Object();
7
8 ok = GetOptions(ARGV, options,
9                 "POPT_AUTOHELP",
10                 "POPT_COMMON_SAMBA",
11                 "POPT_COMMON_CREDENTIALS");
12 if (ok == false) {
13    println("Failed to parse options: " + options.ERROR);
14    return -1;
15 }
16
17 libinclude("base.js");
18 libinclude("samr.js");
19
20
21 /*
22   test the samr_Connect interface
23 */
24 function test_Connect(conn)
25 {
26         print("Testing samr_Connect\n");
27         return samrConnect(conn);
28 }
29
30
31 /*
32   test the samr_LookupDomain interface
33 */
34 function test_LookupDomain(conn, handle, domain)
35 {
36         print("Testing samr_LookupDomain\n");
37         return samrLookupDomain(conn, handle, domain);
38 }
39
40 /*
41   test the samr_OpenDomain interface
42 */
43 function test_OpenDomain(conn, handle, sid)
44 {
45         print("Testing samr_OpenDomain\n");
46         return samrOpenDomain(conn, handle, sid);
47 }
48
49 /*
50   test the samr_EnumDomainUsers interface
51 */
52 function test_EnumDomainUsers(conn, dom_handle)
53 {
54         var i, users;
55         print("Testing samr_EnumDomainUsers\n");
56         users = samrEnumDomainUsers(conn, dom_handle);
57         print("Found " + users.length + " users\n");
58         for (i=0;i<users.length;i++) {
59                 println("\t" + users[i].name + "\t(" + users[i].idx + ")");
60         }
61 }
62
63 /*
64   test the samr_EnumDomainGroups interface
65 */
66 function test_EnumDomainGroups(conn, dom_handle)
67 {
68         print("Testing samr_EnumDomainGroups\n");
69         var i, groups = samrEnumDomainGroups(conn, dom_handle);
70         print("Found " + groups.length + " groups\n");
71         for (i=0;i<groups.length;i++) {
72                 println("\t" + groups[i].name + "\t(" + groups[i].idx + ")");
73         }
74 }
75
76 /*
77   test domain specific ops
78 */
79 function test_domain_ops(conn, dom_handle)
80 {
81         test_EnumDomainUsers(conn, dom_handle);
82         test_EnumDomainGroups(conn, dom_handle);
83 }
84
85
86
87 /*
88   test the samr_EnumDomains interface
89 */
90 function test_EnumDomains(conn, handle)
91 {
92         var i, domains;
93         print("Testing samr_EnumDomains\n");
94
95         domains = samrEnumDomains(conn, handle);
96         print("Found " + domains.length + " domains\n");
97         for (i=0;i<domains.length;i++) {
98                 print("\t" + domains[i].name + "\n");
99         }
100         for (i=0;i<domains.length;i++) {
101                 print("Testing domain " + domains[i].name + "\n");
102                 sid = samrLookupDomain(conn, handle, domains[i].name);
103                 dom_handle = test_OpenDomain(conn, handle, sid);
104                 test_domain_ops(conn, dom_handle);
105                 samrClose(conn, dom_handle);
106         }
107 }
108
109 if (options.ARGV.length != 1) {
110    println("Usage: samr.js <BINDING>");
111    return -1;
112 }
113 var binding = options.ARGV[0];
114 var conn = new Object();
115
116 print("Connecting to " + binding + "\n");
117 status = rpc_connect(conn, binding, "samr");
118 if (status.is_ok != true) {
119    print("Failed to connect to " + binding + " - " + status.errstr + "\n");
120    return -1;
121 }
122
123 handle = test_Connect(conn);
124 test_EnumDomains(conn, handle);
125 samrClose(conn, handle);
126
127 print("All OK\n");
128 return 0;