Author: mimir
Date: 2007-12-19 00:44:01 +0000 (Wed, 19 Dec 2007)
New Revision: 26530

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26530

Log:
Add NET-API-GROUPLIST test.


Modified:
   branches/SAMBA_4_0/source/torture/libnet/libnet.c
   branches/SAMBA_4_0/source/torture/libnet/libnet_group.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/libnet/libnet.c
===================================================================
--- branches/SAMBA_4_0/source/torture/libnet/libnet.c   2007-12-19 00:39:27 UTC 
(rev 26529)
+++ branches/SAMBA_4_0/source/torture/libnet/libnet.c   2007-12-19 00:44:01 UTC 
(rev 26530)
@@ -42,6 +42,7 @@
        torture_suite_add_simple_test(suite, "API-USERINFO", 
torture_userinfo_api);
        torture_suite_add_simple_test(suite, "API-USERLIST", torture_userlist);
        torture_suite_add_simple_test(suite, "API-GROUPINFO", 
torture_groupinfo_api);
+       torture_suite_add_simple_test(suite, "API-GROUPLIST", 
torture_grouplist);
        torture_suite_add_simple_test(suite, "API-RPCCONN-BIND", 
torture_rpc_connect_binding);
        torture_suite_add_simple_test(suite, "API-RPCCONN-SRV", 
torture_rpc_connect_srv);
        torture_suite_add_simple_test(suite, "API-RPCCONN-PDC", 
torture_rpc_connect_pdc);

Modified: branches/SAMBA_4_0/source/torture/libnet/libnet_group.c
===================================================================
--- branches/SAMBA_4_0/source/torture/libnet/libnet_group.c     2007-12-19 
00:39:27 UTC (rev 26529)
+++ branches/SAMBA_4_0/source/torture/libnet/libnet_group.c     2007-12-19 
00:44:01 UTC (rev 26530)
@@ -202,6 +202,25 @@
 }
 
 
+static bool test_lsa_close(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+                          struct policy_handle *domain_handle)
+{
+       NTSTATUS status;
+       struct lsa_Close r;
+
+       r.in.handle = domain_handle;
+       r.out.handle = domain_handle;
+       
+       status = dcerpc_lsa_Close(p, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Close lsa domain failed - %s\n", nt_errstr(status));
+               return false;
+       }
+
+       return true;
+}
+
+
 bool torture_groupinfo_api(struct torture_context *torture)
 {
        const char *name = TEST_GROUPNAME;
@@ -269,3 +288,64 @@
        talloc_free(mem_ctx);
        return ret;
 }
+
+
+bool torture_grouplist(struct torture_context *torture)
+{
+       bool ret = true;
+       NTSTATUS status;
+       TALLOC_CTX *mem_ctx = NULL;
+       struct libnet_context *ctx;
+       struct lsa_String domain_name;
+       struct libnet_GroupList req;
+       int i;
+
+       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx->cred = cmdline_credentials;
+
+       domain_name.string = lp_workgroup(torture->lp_ctx);
+       mem_ctx = talloc_init("torture group list");
+
+       ZERO_STRUCT(req);
+
+       printf("listing group accounts:\n");
+       
+       do {
+               req.in.domain_name  = domain_name.string;
+               req.in.page_size    = 128;
+               req.in.resume_index = req.out.resume_index;
+
+               status = libnet_GroupList(ctx, mem_ctx, &req);
+               if (!NT_STATUS_IS_OK(status) &&
+                   !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) break;
+
+               for (i = 0; i < req.out.count; i++) {
+                       printf("\tgroup: %s, sid=%s\n",
+                              req.out.groups[i].groupname, 
req.out.groups[i].sid);
+               }
+
+       } while (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES));
+
+       if (!(NT_STATUS_IS_OK(status) ||
+             NT_STATUS_EQUAL(status, NT_STATUS_NO_MORE_ENTRIES))) {
+               printf("libnet_GroupList call failed: %s\n", nt_errstr(status));
+               ret = false;
+               goto done;
+       }
+
+       if (!test_samr_close(ctx->samr.pipe, mem_ctx, &ctx->samr.handle)) {
+               printf("domain close failed\n");
+               ret = false;
+       }
+
+       if (!test_lsa_close(ctx->lsa.pipe, mem_ctx, &ctx->lsa.handle)) {
+               printf("lsa domain close failed\n");
+               ret = false;
+       }
+
+       talloc_free(ctx);
+
+done:
+       talloc_free(mem_ctx);
+       return ret;
+}

Reply via email to