mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
s4-smbtorture: add test for rap_NetUserAdd().
Guenther
This commit is contained in:
parent
980ceb2f70
commit
249340c9c8
@ -9,3 +9,4 @@ samba3.posix_s3.smb2.lock.*.rw-exclusive # another intermittent failure
|
||||
samba3.raw.mux.* #This test is flaky on the async lock time
|
||||
samba3.smbtorture_s3.*OPLOCK4 # fails sometimes on sn-devel
|
||||
samba3.posix_s3.nbt.dgram.*netlogon2
|
||||
samba3.*rap.sam.*.useradd # Not provided by Samba 3
|
||||
|
@ -2,7 +2,7 @@
|
||||
Unix SMB/CIFS implementation.
|
||||
test suite for RAP sam operations
|
||||
|
||||
Copyright (C) Guenther Deschner 2010
|
||||
Copyright (C) Guenther Deschner 2010-2011
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -235,6 +235,70 @@ static bool test_usergetinfo(struct torture_context *tctx,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool test_useradd(struct torture_context *tctx,
|
||||
struct smbcli_state *cli)
|
||||
{
|
||||
|
||||
struct rap_NetUserAdd r;
|
||||
struct rap_NetUserInfo1 info1;
|
||||
int i;
|
||||
uint16_t levels[] = { 1 };
|
||||
const char *username = TEST_RAP_USER;
|
||||
|
||||
for (i=0; i < ARRAY_SIZE(levels); i++) {
|
||||
|
||||
const char *pwd;
|
||||
|
||||
pwd = generate_random_password(tctx, 9, 16);
|
||||
|
||||
r.in.level = levels[i];
|
||||
r.in.bufsize = 0xffff;
|
||||
r.in.pwdlength = strlen(pwd);
|
||||
r.in.unknown = 0;
|
||||
|
||||
switch (r.in.level) {
|
||||
case 1:
|
||||
ZERO_STRUCT(info1);
|
||||
|
||||
info1.Name = username;
|
||||
memcpy(info1.Password, pwd, MIN(strlen(pwd), 16));
|
||||
info1.Priv = USER_PRIV_USER;
|
||||
info1.Flags = 0x21;
|
||||
info1.HomeDir = "home_dir";
|
||||
info1.Comment = "comment";
|
||||
info1.ScriptPath = "logon_script";
|
||||
|
||||
r.in.info.info1 = info1;
|
||||
break;
|
||||
}
|
||||
|
||||
torture_comment(tctx,
|
||||
"Testing rap_NetUserAdd(%s) level %d\n", username, r.in.level);
|
||||
|
||||
torture_assert_ntstatus_ok(tctx,
|
||||
smbcli_rap_netuseradd(cli->tree, tctx, &r),
|
||||
"smbcli_rap_netuseradd failed");
|
||||
torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
|
||||
"smbcli_rap_netuseradd failed");
|
||||
|
||||
torture_assert_ntstatus_ok(tctx,
|
||||
smbcli_rap_netuseradd(cli->tree, tctx, &r),
|
||||
"2nd smbcli_rap_netuseradd failed");
|
||||
torture_assert_werr_equal(tctx, W_ERROR(r.out.status), WERR_USEREXISTS,
|
||||
"2nd smbcli_rap_netuseradd failed");
|
||||
|
||||
{
|
||||
struct rap_NetUserDelete d;
|
||||
|
||||
d.in.UserName = username;
|
||||
|
||||
smbcli_rap_netuserdelete(cli->tree, tctx, &d);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
struct torture_suite *torture_rap_sam(TALLOC_CTX *mem_ctx)
|
||||
{
|
||||
struct torture_suite *suite = torture_suite_create(mem_ctx, "sam");
|
||||
@ -242,6 +306,7 @@ struct torture_suite *torture_rap_sam(TALLOC_CTX *mem_ctx)
|
||||
torture_suite_add_1smb_test(suite, "userpasswordset2", test_userpasswordset2);
|
||||
torture_suite_add_1smb_test(suite, "oemchangepassword", test_oemchangepassword);
|
||||
torture_suite_add_1smb_test(suite, "usergetinfo", test_usergetinfo);
|
||||
torture_suite_add_1smb_test(suite, "useradd", test_useradd);
|
||||
|
||||
return suite;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user