Kai Blin : netapi32: Add test for adding/deleting users.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Mar 20 08:11:03 CDT 2007
Module: wine
Branch: master
Commit: ce6a7595c3910f528332547b077049ad8205e69f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce6a7595c3910f528332547b077049ad8205e69f
Author: Kai Blin <kai.blin at gmail.com>
Date: Mon Mar 19 16:48:39 2007 +0100
netapi32: Add test for adding/deleting users.
---
dlls/netapi32/tests/access.c | 56 +++++++++++++++++++++++++++++++++++++++++-
include/lmaccess.h | 5 +++
2 files changed, 60 insertions(+), 1 deletions(-)
diff --git a/dlls/netapi32/tests/access.c b/dlls/netapi32/tests/access.c
index 92d5d3b..7dd5855 100644
--- a/dlls/netapi32/tests/access.c
+++ b/dlls/netapi32/tests/access.c
@@ -20,7 +20,6 @@
#include <stdarg.h>
-#include <wine/test.h>
#include <windef.h>
#include <winbase.h>
#include <winerror.h>
@@ -28,6 +27,8 @@
#include <lmerr.h>
#include <lmapibuf.h>
+#include "wine/test.h"
+
WCHAR user_name[UNLEN + 1];
WCHAR computer_name[MAX_COMPUTERNAME_LENGTH + 1];
@@ -36,6 +37,9 @@ static const WCHAR sAdminUserName[] = {'A','d','m','i','n','i','s','t','r','a','
static const WCHAR sGuestUserName[] = {'G','u','e','s','t',0};
static const WCHAR sNonexistentUser[] = {'N','o','n','e','x','i','s','t','e','n','t',' ',
'U','s','e','r',0};
+static const WCHAR sTestUserName[] = {'t', 'e', 's', 't', 'u', 's', 'e', 'r', 0};
+static const WCHAR sTestUserOldPass[] = {'o', 'l', 'd', 'p', 'a', 's', 's', 0};
+static const WCHAR sTestUserNewPass[] = {'n', 'e', 'w', 'p', 'a', 's', 's', 0};
static const WCHAR sBadNetPath[] = {'\\','\\','B','a',' ',' ','p','a','t','h',0};
static const WCHAR sInvalidName[] = {'\\',0};
static const WCHAR sInvalidName2[] = {'\\','\\',0};
@@ -46,6 +50,9 @@ static NET_API_STATUS (WINAPI *pNetApiBufferSize)(LPVOID,LPDWORD)=NULL;
static NET_API_STATUS (WINAPI *pNetQueryDisplayInformation)(LPWSTR,DWORD,DWORD,DWORD,DWORD,LPDWORD,PVOID*)=NULL;
static NET_API_STATUS (WINAPI *pNetUserGetInfo)(LPCWSTR,LPCWSTR,DWORD,LPBYTE*)=NULL;
static NET_API_STATUS (WINAPI *pNetUserModalsGet)(LPCWSTR,DWORD,LPBYTE*)=NULL;
+static NET_API_STATUS (WINAPI *pNetUserAdd)(LPCWSTR,DWORD,LPBYTE,LPDWORD)=NULL;
+static NET_API_STATUS (WINAPI *pNetUserChangePassword)(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR)=NULL;
+static NET_API_STATUS (WINAPI *pNetUserDel)(LPCWSTR,LPCWSTR)=NULL;
static int init_access_tests(void)
{
@@ -192,6 +199,49 @@ static void run_usermodalsget_tests(void)
pNetApiBufferFree(umi2);
}
+static void run_userhandling_tests(void)
+{
+ NET_API_STATUS ret;
+ USER_INFO_1 usri;
+
+ if(!pNetUserAdd || !pNetUserChangePassword || !pNetUserDel)
+ {
+ skip("Functions for modifying the user database missing. Skipping test.\n");
+ return;
+ }
+
+ usri.usri1_name = (LPWSTR) sTestUserName;
+ usri.usri1_password = (LPWSTR) sTestUserOldPass;
+ usri.usri1_priv = USER_PRIV_USER;
+ usri.usri1_home_dir = NULL;
+ usri.usri1_comment = NULL;
+ usri.usri1_flags = UF_SCRIPT;
+ usri.usri1_script_path = NULL;
+
+ ret = pNetUserAdd(NULL, 1, (LPBYTE)&usri, NULL);
+ if(ret == ERROR_ACCESS_DENIED)
+ {
+ skip("Insufficient permissions to add users. Skipping test.\n");
+ return;
+ }
+ if(ret == NERR_UserExists)
+ {
+ skip("User already exists, skipping test to not mess up the system\n");
+ return;
+ }
+
+ ok(ret == NERR_Success, "Adding user failed with error 0x%08x\n", ret);
+ if(ret != NERR_Success)
+ return;
+
+ ret = pNetUserChangePassword(NULL, sTestUserName, sTestUserOldPass,
+ sTestUserNewPass);
+ todo_wine ok(ret == NERR_Success, "Changing the password failed.\n");
+
+ ret = pNetUserDel(NULL, sTestUserName);
+ todo_wine ok(ret == NERR_Success, "Deleting the user failed.\n");
+}
+
START_TEST(access)
{
HMODULE hnetapi32=LoadLibraryA("netapi32.dll");
@@ -200,6 +250,9 @@ START_TEST(access)
pNetQueryDisplayInformation=(void*)GetProcAddress(hnetapi32,"NetQueryDisplayInformation");
pNetUserGetInfo=(void*)GetProcAddress(hnetapi32,"NetUserGetInfo");
pNetUserModalsGet=(void*)GetProcAddress(hnetapi32,"NetUserModalsGet");
+ pNetUserAdd=(void*)GetProcAddress(hnetapi32, "NetUserAdd");
+ pNetUserChangePassword=(void*)GetProcAddress(hnetapi32, "NetUserChangePassword");
+ pNetUserDel=(void*)GetProcAddress(hnetapi32, "NetUserDel");
if (!pNetApiBufferSize)
trace("It appears there is no netapi32 functionality on this platform\n");
@@ -208,5 +261,6 @@ START_TEST(access)
run_usergetinfo_tests();
run_querydisplayinformation1_tests();
run_usermodalsget_tests();
+ run_userhandling_tests();
}
}
diff --git a/include/lmaccess.h b/include/lmaccess.h
index 41e1826..1c7c37c 100644
--- a/include/lmaccess.h
+++ b/include/lmaccess.h
@@ -440,6 +440,11 @@ typedef struct _LOCALGROUP_USERS_INFO_0 {
LPWSTR lgrui0_name;
} LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0, *LPLOCALGROUP_USERS_INFO_0;
+#define USER_PRIV_GUEST 0
+#define USER_PRIV_USER 1
+#define USER_PRIV_ADMIN 2
+#define USER_PRIV_MASK 3
+
#define LOCALGROUP_NAME_PARMNUM 1
#define LOCALGROUP_COMMENT_PARMNUM 2
More information about the wine-cvs
mailing list