r22566: add a simple test of libnet_DomainList function.
authorRafal Szczesniak <mimir@samba.org>
Sun, 29 Apr 2007 12:32:17 +0000 (12:32 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:51:44 +0000 (14:51 -0500)
rafal
(This used to be commit a1ca08b05b804021aa829c737aeb66b4e283940c)

source4/torture/libnet/libnet.c
source4/torture/libnet/libnet_domain.c

index 9a8d61e98edb0de94a7d6a486c16c58ef7c007d8..58fc3d480aa48b5d9f62cad91099ecd2953ec2ab 100644 (file)
@@ -52,6 +52,7 @@ NTSTATUS torture_net_init(void)
        torture_suite_add_simple_test(suite, "API-DOMOPENSAMR", torture_domain_open_samr);
        torture_suite_add_simple_test(suite, "API-DOMCLOSESAMR", torture_domain_close_samr);
        torture_suite_add_simple_test(suite, "API-BECOME-DC", torture_net_become_dc);
+       torture_suite_add_simple_test(suite, "API-DOMLIST", torture_domain_list);
 
        suite->description = talloc_strdup(suite, "libnet convenience interface tests");
 
index 86dfe97ced4a701bbe2621c70f076e67acf7b53f..beeafa3753797206a5198a02686a9f1f6cc7b645 100644 (file)
@@ -312,7 +312,7 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
 {
        BOOL ret = True;
        NTSTATUS status;
-       TALLOC_CTX *mem_ctx=NULL;
+       TALLOC_CTX *mem_ctx = NULL;
        struct libnet_context *ctx;
        struct lsa_String domain_name;
        struct dcerpc_binding *binding;
@@ -340,7 +340,7 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
 
        mem_ctx = talloc_init("torture_domain_close_samr");
        status = dcerpc_pipe_connect(mem_ctx, &p, bindstr, &dcerpc_table_samr,
-                                    cmdline_credentials, NULL);
+                                    ctx->cred, NULL);
        if (!NT_STATUS_IS_OK(status)) {
                d_printf("failed to connect to server %s: %s\n", bindstr,
                         nt_errstr(status));
@@ -361,7 +361,8 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
        ctx->samr.access_mask = access_mask;
        ctx->samr.handle      = h;
        /* we have to use pipe's event context, otherwise the call will
-          hang indefinately */
+          hang indefinitely - this wouldn't be the case if pipe was opened
+          by means of libnet call */
        ctx->event_ctx       = p->conn->event_ctx;
 
        ZERO_STRUCT(r);
@@ -379,3 +380,56 @@ done:
        talloc_free(ctx);
        return ret;
 }
+
+
+BOOL torture_domain_list(struct torture_context *torture)
+{
+       BOOL ret = True;
+       NTSTATUS status;
+       TALLOC_CTX *mem_ctx = NULL;
+       const char *bindstr;
+       struct dcerpc_binding *binding;
+       struct libnet_context *ctx;
+       struct libnet_DomainList r;
+       int i;
+
+       bindstr = torture_setting_string(torture, "binding", NULL);
+       status = dcerpc_parse_binding(torture, bindstr, &binding);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_printf("failed to parse binding string\n");
+               return False;
+       }
+
+       ctx = libnet_context_init(NULL);
+       if (ctx == NULL) {
+               d_printf("failed to create libnet context\n");
+               ret = False;
+               goto done;
+       }
+
+       ctx->cred = cmdline_credentials;
+       
+       mem_ctx = talloc_init("torture_domain_close_samr");
+
+       ZERO_STRUCT(r);
+       r.in.hostname = binding->host;
+
+       status = libnet_DomainList(ctx, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               ret = False;
+               goto done;
+       }
+
+       d_printf("Received list or domains:\n");
+       
+       for (i = 0; i < r.out.count; i++) {
+               d_printf("Name[%d]: %s\n", i, r.out.domains[i].name);
+       }
+
+done:
+       d_printf("\nStatus: %s\n", nt_errstr(status));
+
+       talloc_free(mem_ctx);
+       talloc_free(ctx);
+       return ret;
+}