s4-torture: ran minimal_includes.pl over source4/torture
[ira/wip.git] / source4 / torture / libnet / libnet_user.c
index 6ea670629e92e216496eb16b2118dafd95b959d1..3bb962c2fadfde96e888b44cb3443ecc204c6b29 100644 (file)
@@ -24,7 +24,6 @@
 #include "libnet/libnet.h"
 #include "librpc/gen_ndr/ndr_samr_c.h"
 #include "librpc/gen_ndr/ndr_lsa_c.h"
-#include "torture/torture.h"
 #include "torture/rpc/rpc.h"
 #include "torture/libnet/usertest.h"
 #include "param/param.h"
@@ -40,12 +39,15 @@ static bool test_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
        struct lsa_String names[2];
        uint32_t rid;
        struct policy_handle user_handle;
+       struct samr_Ids rids, types;
 
        names[0].string = username;
 
        r1.in.domain_handle  = domain_handle;
        r1.in.num_names      = 1;
        r1.in.names          = names;
+       r1.out.rids          = &rids;
+       r1.out.types         = &types;
        
        printf("user account lookup '%s'\n", username);
 
@@ -55,7 +57,7 @@ static bool test_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
                return false;
        }
 
-       rid = r1.out.rids.ids[0];
+       rid = r1.out.rids->ids[0];
        
        r2.in.domain_handle  = domain_handle;
        r2.in.access_mask    = SEC_FLAG_MAXIMUM_ALLOWED;
@@ -92,6 +94,7 @@ static bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
        struct policy_handle h, domain_handle;
        struct samr_Connect r1;
        struct samr_LookupDomain r2;
+       struct dom_sid2 *sid = NULL;
        struct samr_OpenDomain r3;
        
        printf("connecting\n");
@@ -108,6 +111,7 @@ static bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
        
        r2.in.connect_handle = &h;
        r2.in.domain_name = domname;
+       r2.out.sid = &sid;
 
        printf("domain lookup on %s\n", domname->string);
 
@@ -119,7 +123,7 @@ static bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 
        r3.in.connect_handle = &h;
        r3.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
-       r3.in.sid = r2.out.sid;
+       r3.in.sid = *r2.out.sid;
        r3.out.domain_handle = &domain_handle;
 
        printf("opening domain\n");
@@ -241,7 +245,7 @@ bool torture_createuser(struct torture_context *torture)
 
        mem_ctx = talloc_init("test_createuser");
 
-       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx = libnet_context_init(torture->ev, torture->lp_ctx);
        ctx->cred = cmdline_credentials;
 
        req.in.user_name = TEST_USERNAME;
@@ -287,7 +291,7 @@ bool torture_deleteuser(struct torture_context *torture)
 
        prep_mem_ctx = talloc_init("prepare test_deleteuser");
 
-       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx = libnet_context_init(torture->ev, torture->lp_ctx);
        ctx->cred = cmdline_credentials;
 
        req.in.user_name = TEST_USERNAME;
@@ -339,12 +343,13 @@ static void set_test_changes(TALLOC_CTX *mem_ctx, struct libnet_ModifyUser *r,
        const char* logon_scripts[] = { "start_login.cmd", "login.bat", "start.cmd" };
        const char* home_dirs[] = { "\\\\srv\\home", "\\\\homesrv\\home\\user", "\\\\pdcsrv\\domain" };
        const char* home_drives[] = { "H:", "z:", "I:", "J:", "n:" };
+       const uint32_t flags[] = { (ACB_DISABLED | ACB_NORMAL | ACB_PW_EXPIRED),
+                                  (ACB_NORMAL | ACB_PWNOEXP),
+                                  (ACB_NORMAL | ACB_PW_EXPIRED) };
        const char *homedir, *homedrive, *logonscript;
        struct timeval now;
        int i, testfld;
 
-       srandom((unsigned)time(NULL));
-
        printf("Fields to change: [");
 
        for (i = 0; i < num_changes && i < FIELDS_NUM; i++) {
@@ -382,14 +387,14 @@ static void set_test_changes(TALLOC_CTX *mem_ctx, struct libnet_ModifyUser *r,
 
                case home_directory:
                        continue_if_field_set(r->in.home_directory);
-                       homedir = home_dirs[random() % (sizeof(home_dirs)/sizeof(char*))];
+                       homedir = home_dirs[random() % ARRAY_SIZE(home_dirs)];
                        r->in.home_directory = talloc_strdup(mem_ctx, homedir);
                        fldname = "home_dir";
                        break;
 
                case home_drive:
                        continue_if_field_set(r->in.home_drive);
-                       homedrive = home_drives[random() % (sizeof(home_drives)/sizeof(char*))];
+                       homedrive = home_drives[random() % ARRAY_SIZE(home_drives)];
                        r->in.home_drive = talloc_strdup(mem_ctx, homedrive);
                        fldname = "home_drive";
                        break;
@@ -403,7 +408,7 @@ static void set_test_changes(TALLOC_CTX *mem_ctx, struct libnet_ModifyUser *r,
 
                case logon_script:
                        continue_if_field_set(r->in.logon_script);
-                       logonscript = logon_scripts[random() % (sizeof(logon_scripts)/sizeof(char*))];
+                       logonscript = logon_scripts[random() % ARRAY_SIZE(logon_scripts)];
                        r->in.logon_script = talloc_strdup(mem_ctx, logonscript);
                        fldname = "logon_script";
                        break;
@@ -422,6 +427,12 @@ static void set_test_changes(TALLOC_CTX *mem_ctx, struct libnet_ModifyUser *r,
                        fldname = "acct_expiry";
                        break;
 
+               case acct_flags:
+                       continue_if_field_set(r->in.acct_flags);
+                       r->in.acct_flags = flags[random() % ARRAY_SIZE(flags)];
+                       fldname = "acct_flags";
+                       break;
+
                default:
                        fldname = "unknown_field";
                }
@@ -475,7 +486,7 @@ bool torture_modifyuser(struct torture_context *torture)
 
        prep_mem_ctx = talloc_init("prepare test_deleteuser");
 
-       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx = libnet_context_init(torture->ev, torture->lp_ctx);
        ctx->cred = cmdline_credentials;
 
        status = torture_rpc_connection(torture,
@@ -523,7 +534,8 @@ bool torture_modifyuser(struct torture_context *torture)
 
                ZERO_STRUCT(user_req);
                user_req.in.domain_name = lp_workgroup(torture->lp_ctx);
-               user_req.in.user_name = name;
+               user_req.in.data.user_name = name;
+               user_req.in.level = USER_INFO_BY_NAME;
 
                status = libnet_UserInfo(ctx, torture, &user_req);
                if (!NT_STATUS_IS_OK(status)) {
@@ -609,7 +621,7 @@ bool torture_userinfo_api(struct torture_context *torture)
 
        prep_mem_ctx = talloc_init("prepare torture user info");
 
-       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx = libnet_context_init(torture->ev, torture->lp_ctx);
        ctx->cred = cmdline_credentials;
 
        status = torture_rpc_connection(torture,
@@ -635,7 +647,8 @@ bool torture_userinfo_api(struct torture_context *torture)
        ZERO_STRUCT(req);
        
        req.in.domain_name = domain_name.string;
-       req.in.user_name   = name;
+       req.in.data.user_name   = name;
+       req.in.level = USER_INFO_BY_NAME;
 
        status = libnet_UserInfo(ctx, mem_ctx, &req);
        if (!NT_STATUS_IS_OK(status)) {
@@ -674,7 +687,7 @@ bool torture_userlist(struct torture_context *torture)
        struct libnet_UserList req;
        int i;
 
-       ctx = libnet_context_init(NULL, torture->lp_ctx);
+       ctx = libnet_context_init(torture->ev, torture->lp_ctx);
        ctx->cred = cmdline_credentials;
 
        domain_name.string = lp_workgroup(torture->lp_ctx);