r8239: - added testing of LookupDomain, OpenDomain and EnumDomainUsers
authorAndrew Tridgell <tridge@samba.org>
Fri, 8 Jul 2005 10:30:50 +0000 (10:30 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:19:23 +0000 (13:19 -0500)
- used SEC_FLAG_MAXIMUM_ALLOWED for access mask. This gets the samr.js
  test working with w2k3 as the server
(This used to be commit a929a90ed78ceb00729cc2c20bce6f2f3d34abd6)

testprogs/ejs/samr.js

index dd3abe00613de4d3d4ad02269755ac6767cb4baa..fb444fb4b53d28234258db171eb708deee81e89a 100644 (file)
@@ -24,6 +24,16 @@ function check_status_ok(status)
        assert(status.is_ok == true);
 }
 
+/*
+  form a lsa_String
+*/
+function lsaString(s)
+{
+       var o = new Object();
+       o.string = s;
+       return o;
+}
+
 /*
   test the samr_Connect interface
 */
@@ -32,7 +42,7 @@ function test_Connect(conn)
        var io = irpcObj();
        print("Testing samr_Connect\n");
        io.input.system_name = NULL;
-       io.input.access_mask = 0;
+       io.input.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
        status = dcerpc_samr_Connect(conn, io);
        check_status_ok(status);
        return io.output.connect_handle;
@@ -44,12 +54,73 @@ function test_Connect(conn)
 function test_Close(conn, handle)
 {
        var io = irpcObj();
-       print("Testing samr_Close\n");
        io.input.handle = handle;
        status = dcerpc_samr_Close(conn, io);
        check_status_ok(status);
 }
 
+/*
+  test the samr_LookupDomain interface
+*/
+function test_LookupDomain(conn, handle, domain)
+{
+       var io = irpcObj();
+       print("Testing samr_LookupDomain\n");
+       io.input.connect_handle = handle;
+       io.input.domain_name = lsaString(domain);
+       status = dcerpc_samr_LookupDomain(conn, io);
+       check_status_ok(status);
+       return io.output.sid;
+}
+
+/*
+  test the samr_OpenDomain interface
+*/
+function test_OpenDomain(conn, handle, sid)
+{
+       var io = irpcObj();
+       print("Testing samr_OpenDomain\n");
+       io.input.connect_handle = handle;
+       io.input.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
+       io.input.sid = sid;
+       status = dcerpc_samr_OpenDomain(conn, io);
+       check_status_ok(status);
+       return io.output.domain_handle;
+}
+
+/*
+  test the samr_EnumDomainUsers interface
+*/
+function test_EnumDomainUsers(conn, dom_handle)
+{
+       var io = irpcObj();
+       print("Testing samr_EnumDomainUsers\n");
+       io.input.domain_handle = dom_handle;
+       io.input.resume_handle = 0;
+       io.input.acct_flags = 0;
+       io.input.max_size = -1;
+       status = dcerpc_samr_EnumDomainUsers(conn, io);
+       check_status_ok(status);
+       print("Found " + io.output.num_entries + " users\n");
+       if (io.output.num_entries == 0) {
+               return;
+       }
+       entries = io.output.sam.entries;
+       for (i=0;i<io.output.num_entries;i++) {
+               print("\t" + entries[i].name.string + "\n");
+       }
+}
+
+/*
+  test domain specific ops
+*/
+function test_domain_ops(conn, dom_handle)
+{
+       test_EnumDomainUsers(conn, dom_handle);
+}
+
+
+
 /*
   test the samr_EnumDomains interface
 */
@@ -59,7 +130,7 @@ function test_EnumDomains(conn, handle)
        print("Testing samr_EnumDomains\n");
        io.input.connect_handle = handle;
        io.input.resume_handle = 0;
-       io.input.buf_size = 0;
+       io.input.buf_size = -1;
        status = dcerpc_samr_EnumDomains(conn, io);
        check_status_ok(status);
        print("Found " + io.output.num_entries + " domains\n");
@@ -67,6 +138,14 @@ function test_EnumDomains(conn, handle)
        for (i=0;i<io.output.num_entries;i++) {
                print("\t" + entries[i].name.string + "\n");
        }
+       for (i=0;i<io.output.num_entries;i++) {
+               domain = entries[i].name.string;
+               print("Testing domain " + domain + "\n");
+               sid = test_LookupDomain(conn, handle, domain);
+               dom_handle = test_OpenDomain(conn, handle, sid);
+               test_domain_ops(conn, dom_handle);
+               test_Close(conn, dom_handle);
+       }
 }