///************************************************************** /// 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 // TIME definition #include // TIME definition #include // TIME definition #define NOMINMAX // Avoid redefinition of min and max in stdlib.h #include #include #include #include #include #include #include #include #include #include #include #include #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); } }