mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
390 lines
10 KiB
390 lines
10 KiB
///**************************************************************
|
|
/// Microsoft LAN Manager *
|
|
/// Copyright(c) Microsoft Corp., 1990-1992 *
|
|
///**************************************************************
|
|
//
|
|
// This program is designed to do functional testing on the following
|
|
// APIs:
|
|
// NetUserModalsGet
|
|
// NetUserModalsSet
|
|
//
|
|
// This test can be run independently of other tests.
|
|
//
|
|
//
|
|
|
|
#include <nt.h> // TIME definition
|
|
#include <ntrtl.h> // TIME definition
|
|
#include <nturtl.h> // TIME definition
|
|
#define NOMINMAX // Avoid redefinition of min and max in stdlib.h
|
|
#include <windef.h>
|
|
#include <winbase.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <lmcons.h>
|
|
#include <lmapibuf.h>
|
|
#include <netlib.h>
|
|
#include <netdebug.h>
|
|
#include <lmaccess.h>
|
|
#include <lmerr.h>
|
|
#include <ntsam.h>
|
|
|
|
#include "uastest.h"
|
|
#include "accessp.h"
|
|
#include "netlogon.h"
|
|
#include "logonp.h"
|
|
|
|
#define TEST_MIN_PWLEN 2
|
|
#define TEST_MAX_PWAGE 0xDDDDDDDD
|
|
#define TEST_MIN_PWAGE 0x00000222
|
|
#define TEST_FORCE_LOGOFF 0xEEEEEEEE
|
|
#define TEST_MAX_PWHIST 7
|
|
#define COMPUTERNAME "STAND_ALONE"
|
|
#define DEF_COMPNAME "COMPNAME"
|
|
|
|
|
|
char rbuf[1024];
|
|
char ibuf[1024];
|
|
char obuf[1024];
|
|
char ibuf2[1024];
|
|
char obuf2[1024];
|
|
|
|
|
|
|
|
|
|
void
|
|
test_init_modals()
|
|
{
|
|
PUSER_MODALS_INFO_0 um0p;
|
|
|
|
//
|
|
// test with invalid level
|
|
//
|
|
|
|
if (err = NetUserModalsGet(server, 3, (LPBYTE *) &um0p)) {
|
|
if (err != ERROR_INVALID_LEVEL) {
|
|
error_exit( FAIL, "UserModalsGet invalid level wrong", NULL);
|
|
} else {
|
|
error_exit( PASS, "UserModalsGet invalid level OK", NULL);
|
|
}
|
|
} else {
|
|
error_exit( FAIL, "UserModalsGet with invalid level succeeded", NULL);
|
|
NetApiBufferFree( um0p );
|
|
}
|
|
|
|
//
|
|
// get valid level
|
|
//
|
|
|
|
if (err = NetUserModalsGet(server, 0, (LPBYTE *) &um0p))
|
|
error_exit( FAIL, "First UserModalsGet failed", NULL);
|
|
else {
|
|
error_exit( PASS, "First UserModalsGet successful", NULL);
|
|
|
|
//
|
|
// verify initial settings
|
|
//
|
|
|
|
TestDiffDword( "Min password default mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_len, DEF_MIN_PWLEN );
|
|
|
|
TestDiffDword( "Max password age default mismatch", NULL,
|
|
um0p->usrmod0_max_passwd_age, DEF_MAX_PWAGE );
|
|
|
|
TestDiffDword( "Min password age default mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_age, DEF_MIN_PWAGE );
|
|
|
|
TestDiffDword( "Force logooff default mismatch", NULL,
|
|
um0p->usrmod0_force_logoff, DEF_FORCE_LOGOFF );
|
|
|
|
TestDiffDword( "Password history length default mismatch", NULL,
|
|
um0p->usrmod0_password_hist_len, DEF_MAX_PWHIST );
|
|
|
|
NetApiBufferFree( um0p );
|
|
}
|
|
|
|
}
|
|
|
|
VOID
|
|
restore_original_modals( VOID )
|
|
{
|
|
PUSER_MODALS_INFO_0 um0p;
|
|
USER_MODALS_INFO_0 um0;
|
|
|
|
|
|
//
|
|
// attempt to restore original (default) settings
|
|
//
|
|
|
|
um0.usrmod0_min_passwd_len = DEF_MIN_PWLEN;
|
|
um0.usrmod0_max_passwd_age = DEF_MAX_PWAGE;
|
|
um0.usrmod0_min_passwd_age = DEF_MIN_PWAGE;
|
|
um0.usrmod0_force_logoff = DEF_FORCE_LOGOFF;
|
|
um0.usrmod0_password_hist_len = DEF_MAX_PWHIST;
|
|
|
|
if (err = NetUserModalsSet(server, 0, (LPBYTE) &um0, &ParmError ))
|
|
error_exit( FAIL, "UserModalsSet (restore) Failed", NULL);
|
|
|
|
//
|
|
// verify reset
|
|
//
|
|
|
|
if (err = NetUserModalsGet(server, 0, (LPBYTE *) &um0p)) {
|
|
error_exit( FAIL, "Verify UserModalsGet failed", NULL);
|
|
} else {
|
|
|
|
TestDiffDword( "Min password default mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_len, DEF_MIN_PWLEN );
|
|
|
|
TestDiffDword( "Max password age default mismatch", NULL,
|
|
um0p->usrmod0_max_passwd_age, DEF_MAX_PWAGE );
|
|
|
|
TestDiffDword( "Min password age default mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_age, DEF_MIN_PWAGE );
|
|
|
|
TestDiffDword( "Force logooff default mismatch", NULL,
|
|
um0p->usrmod0_force_logoff, DEF_FORCE_LOGOFF );
|
|
|
|
TestDiffDword( "Password history length default mismatch", NULL,
|
|
um0p->usrmod0_password_hist_len, DEF_MAX_PWHIST );
|
|
|
|
NetApiBufferFree( um0p );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void
|
|
test_set_modals()
|
|
{
|
|
PUSER_MODALS_INFO_0 um0p = (PUSER_MODALS_INFO_0 ) ibuf;
|
|
USER_MODALS_INFO_0 um0;
|
|
|
|
|
|
//
|
|
// set with invalid level
|
|
//
|
|
|
|
if (err = NetUserModalsSet(server, 3, (LPBYTE) &um0, &ParmError )) {
|
|
if (err != ERROR_INVALID_LEVEL)
|
|
error_exit(FAIL, "UserModalsSet invalid level wrong", NULL);
|
|
} else
|
|
error_exit(FAIL, "UserModalsSet with invalid level succeeded", NULL);
|
|
|
|
//
|
|
// setup data for update
|
|
//
|
|
|
|
um0.usrmod0_min_passwd_len = TEST_MIN_PWLEN;
|
|
um0.usrmod0_max_passwd_age = TEST_MAX_PWAGE;
|
|
um0.usrmod0_min_passwd_age = TEST_MIN_PWAGE;
|
|
um0.usrmod0_force_logoff = TEST_FORCE_LOGOFF;
|
|
um0.usrmod0_password_hist_len = TEST_MAX_PWHIST;
|
|
|
|
|
|
//
|
|
// set with valid level
|
|
//
|
|
|
|
if (err = NetUserModalsSet(server, 0, (LPBYTE) &um0, &ParmError ))
|
|
error_exit(FAIL, "UserModalsSet invalid", NULL);
|
|
else {
|
|
error_exit( PASS, "NetUserModalsSet level 0 OK", NULL);
|
|
|
|
//
|
|
// verify set data
|
|
//
|
|
|
|
if (err = NetUserModalsGet(server, 0, (LPBYTE *) &um0p)) {
|
|
error_exit(FAIL, "Verify UserModalsGet failed", NULL);
|
|
} else {
|
|
|
|
|
|
//
|
|
// verify initial settings
|
|
//
|
|
|
|
TestDiffDword( "Min password test mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_len, TEST_MIN_PWLEN );
|
|
|
|
TestDiffDword( "Max password age test mismatch", NULL,
|
|
um0p->usrmod0_max_passwd_age, TEST_MAX_PWAGE );
|
|
|
|
TestDiffDword( "Min password age test mismatch", NULL,
|
|
um0p->usrmod0_min_passwd_age, TEST_MIN_PWAGE );
|
|
|
|
TestDiffDword( "Force logooff test mismatch", NULL,
|
|
um0p->usrmod0_force_logoff, TEST_FORCE_LOGOFF );
|
|
|
|
TestDiffDword( "Password history length test mismatch", NULL,
|
|
um0p->usrmod0_password_hist_len, TEST_MAX_PWHIST );
|
|
|
|
NetApiBufferFree( um0p );
|
|
}
|
|
}
|
|
|
|
|
|
//
|
|
// attempt to restore original (default) settings
|
|
//
|
|
|
|
restore_original_modals( );
|
|
|
|
}
|
|
|
|
|
|
//
|
|
// test_set_modals_1(parmnum)
|
|
//
|
|
|
|
void
|
|
test_set_modals_1(parmnum)
|
|
short parmnum;
|
|
{
|
|
PUSER_MODALS_INFO_0 um0p;
|
|
USER_MODALS_INFO_1001 um1001;
|
|
USER_MODALS_INFO_1002 um1002;
|
|
USER_MODALS_INFO_1003 um1003;
|
|
USER_MODALS_INFO_1004 um1004;
|
|
USER_MODALS_INFO_1005 um1005;
|
|
LPBYTE Parameter;
|
|
LPWSTR LevelText;
|
|
|
|
//
|
|
// setup data for update
|
|
//
|
|
|
|
switch (parmnum) {
|
|
case 1001:
|
|
um1001.usrmod1001_min_passwd_len = TEST_MIN_PWLEN;
|
|
LevelText = L"Parmnum 1001";
|
|
Parameter = (LPBYTE) &um1001;
|
|
break;
|
|
|
|
case 1002:
|
|
um1002.usrmod1002_max_passwd_age = TEST_MAX_PWAGE;
|
|
LevelText = L"Parmnum 1002";
|
|
Parameter = (LPBYTE) &um1002;
|
|
break;
|
|
|
|
|
|
case 1003:
|
|
um1003.usrmod1003_min_passwd_age = TEST_MIN_PWAGE;
|
|
LevelText = L"Parmnum 1003";
|
|
Parameter = (LPBYTE) &um1003;
|
|
break;
|
|
|
|
|
|
case 1004:
|
|
um1004.usrmod1004_force_logoff = TEST_FORCE_LOGOFF;
|
|
LevelText = L"Parmnum 1004";
|
|
Parameter = (LPBYTE) &um1004;
|
|
break;
|
|
|
|
|
|
case 1005:
|
|
um1005.usrmod1005_password_hist_len = TEST_MAX_PWHIST;
|
|
LevelText = L"Parmnum 1005";
|
|
Parameter = (LPBYTE) &um1005;
|
|
break;
|
|
|
|
|
|
default:
|
|
error_exit(FAIL, "Invalid parmnum internal error", NULL);
|
|
return;
|
|
}
|
|
|
|
if (err = NetUserModalsSet(server, parmnum, Parameter, &ParmError)) {
|
|
error_exit(FAIL, "UserModalsSet invalid", LevelText);
|
|
} else {
|
|
error_exit(PASS, "UserModalsSet successful", LevelText);
|
|
|
|
//
|
|
// verify set data
|
|
//
|
|
|
|
if (err = NetUserModalsGet(server, 0, (LPBYTE *) &um0p)) {
|
|
error_exit(FAIL, "Verify UserModalsGet failed", NULL);
|
|
|
|
} else {
|
|
|
|
//
|
|
// verify initial settings
|
|
//
|
|
|
|
switch (parmnum) {
|
|
case 1001:
|
|
TestDiffDword( "Min password test mismatch", LevelText,
|
|
um0p->usrmod0_min_passwd_len, TEST_MIN_PWLEN );
|
|
break;
|
|
case 1002:
|
|
TestDiffDword( "Max password age test mismatch", LevelText,
|
|
um0p->usrmod0_max_passwd_age, TEST_MAX_PWAGE );
|
|
break;
|
|
case 1003:
|
|
TestDiffDword( "Min password age test mismatch", LevelText,
|
|
um0p->usrmod0_min_passwd_age, TEST_MIN_PWAGE );
|
|
break;
|
|
case 1004:
|
|
TestDiffDword( "Force logooff test mismatch", LevelText,
|
|
um0p->usrmod0_force_logoff, TEST_FORCE_LOGOFF );
|
|
break;
|
|
case 1005:
|
|
TestDiffDword( "Password history length test mismatch", LevelText,
|
|
um0p->usrmod0_password_hist_len, TEST_MAX_PWHIST );
|
|
break;
|
|
default:
|
|
printf("uastest1:Invalid Parmnum %d\n", parmnum);
|
|
}
|
|
|
|
NetApiBufferFree( um0p );
|
|
|
|
}
|
|
}
|
|
|
|
//
|
|
// attempt to restore original (default) settings
|
|
//
|
|
|
|
restore_original_modals( );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
main(argc, argv)
|
|
int argc;
|
|
char **argv;
|
|
{
|
|
short i;
|
|
testname = "UASTEST3";
|
|
|
|
if (argv[1] != NULL)
|
|
server = NetpLogonOemToUnicode(argv[1]);
|
|
|
|
if (argc > 1)
|
|
exit_flag = 1;
|
|
|
|
#ifdef UASP_LIBRARY
|
|
printf( "Calling UaspInitialize\n");
|
|
if (err = UaspInitialize()) {
|
|
error_exit(FAIL, "UaspInitiailize failed", NULL );
|
|
}
|
|
#endif // UASP_LIBRARY
|
|
|
|
error_exit(ACTION, "test_init_modals()", NULL );
|
|
test_init_modals();
|
|
|
|
error_exit(ACTION, "test_set_modals()", NULL );
|
|
test_set_modals();
|
|
|
|
error_exit(ACTION, "test_set_modals_1()", NULL );
|
|
for (i = 1001; i < 1005; i++) {
|
|
test_set_modals_1(i);
|
|
}
|
|
|
|
}
|
|
|