diff options
-rwxr-xr-x | source3/script/tests/test_net_registry.sh | 378 | ||||
-rwxr-xr-x | source3/script/tests/tests_all.sh | 7 |
2 files changed, 385 insertions, 0 deletions
diff --git a/source3/script/tests/test_net_registry.sh b/source3/script/tests/test_net_registry.sh new file mode 100755 index 0000000000..927882b703 --- /dev/null +++ b/source3/script/tests/test_net_registry.sh @@ -0,0 +1,378 @@ +#!/bin/sh + +# tests for the "net registry" command - local access to the registry db + + +NET="$VALGRIND ${NET:-$BINDIR/net} $CONFIGURATION" + +NETREG="${NET} registry" + +incdir=`dirname $0` +. $incdir/test_functions.sh + +failed=0 + +test_enumerate() +{ + KEY="$1" + + ${NETREG} enumerate ${KEY} +} + +test_getsd() +{ + KEY="$1" + + ${NETREG} getsd ${KEY} +} + +test_enumerate_nonexisting() +{ + KEY="$1" + ${NETREG} enumerate ${KEY} + if test "x$?" = "x0" ; then + echo "ERROR: enumerate succeeded with key '${KEY}'" + false + else + true + fi +} + +test_enumerate_no_key() +{ + ${NETREG} enumerate + if test "x$?" = "x0" ; then + echo "ERROR: enumerate succeeded without any key spcified" + false + else + true + fi +} + +test_create_existing() +{ + KEY="HKLM" + EXPECTED="createkey opened existing ${KEY}" + OUTPUT=`${NETREG} createkey ${KEY}` + if test "x$?" = "x0" ; then + if test "$OUTPUT" = "$EXPECTED" ; then + true + else + echo "got '$OUTPUT', expected '$EXPECTED'" + false; + fi + else + echo -e "$OUTPUT" + false + fi +} + +test_createkey() +{ + KEY="$1" + BASEKEY=`dirname $KEY` + SUBKEY=`basename $KEY` + + ${NETREG} createkey ${KEY} + if test "x$?" != "x0" ; then + false + return + fi + + # check enumerate of basekey lists new key: + OUTPUT=`${NETREG} enumerate ${BASEKEY}` + if test "x$?" != "x0" ; then + echo "ERROR: failed to enumerate key '${BASEKEY}'" + echo "output:" + echo -e "$OUTPUT" + false + return + fi + + EXPECTED="Keyname = ${SUBKEY}" + echo -e "$OUTPUT" | grep ^Keyname | grep ${SUBKEY} + if test "x$?" != "x0" ; then + echo "ERROR: did not find expexted '$EXPECTED' in output" + echo "output:" + echo -e "$OUTPUT" + false + fi + + # check enumerate of new key works: + ${NETREG} enumerate ${KEY} +} + +test_deletekey() +{ + KEY="$1" + BASEKEY=`dirname ${KEY}` + SUBKEY=`basename ${KEY}` + + test_createkey "${KEY}" + + if test "x$?" != "x0" ; then + false + return + fi + + ${NETREG} deletekey ${KEY} + + # check enumerate of basekey does not show key anymore: + OUTPUT=`${NETREG} enumerate ${BASEKEY}` + if test "x$?" != "x0" ; then + echo -e "$OUTPUT" + false + return + fi + + UNEXPECTED="Keyname = ${SUBKEY}" + echo -e "$OUTPUT" | grep ^Keyname | grep ${SUBKEY} + if test "x$?" = "x0" ; then + echo "ERROR: found '$UNEXPECTED' after delete in output" + echo "output:" + echo -e "$OUTPUT" + false + fi + + # check enumerate of key itself does not work anymore: + ${NETREG} enumerate ${KEY} + if test "x$?" = "x0" ; then + echo "ERROR: 'enumerate ${KEY}' works after 'deletekey ${KEY}'" + false + else + true + fi +} + +test_deletekey_nonexisting() +{ + KEY="$1" + + test_deletekey "${KEY}" + + if test "x$?" != "x0" ; then + false + return + fi + + ${NETREG} deletekey "${KEY}" + if test "x$?" = "x0" ; then + echo "ERROR: delete after delete succeeded for key '${KEY}'" + false + fi +} + +test_createkey_with_subkey() +{ + KEY="$1" + KEY2=`dirname ${KEY}` + SUBKEYNAME2=`basename ${KEY}` + BASENAME=`dirname ${KEY2}` + SUBKEYNAME1=`basename ${KEY2}` + + ${NETREG} createkey ${KEY} + + if test "x$?" != "x0" ; then + false + return + fi + + # check we can enumerate to level key + ${NETREG} enumerate ${KEY} + if test "x$?" != "x0" ; then + echo "ERROR: failed to enumerate '${KEY}' after creation" + false + return + fi + + # clear: + ${NETREG} deletekey ${KEY} && ${NETREG} deletekey ${KEY2} +} + +test_deletekey_with_subkey() +{ + KEY="$1" + KEY2=`dirname ${KEY}` + + ${NETREG} createkey ${KEY} + + if test "x$?" != "x0" ; then + false + return + fi + + OUTPUT=`${NETREG} deletekey ${KEY2}` + + if test "x$?" = "x0" ; then + echo "ERROR: delete of key with subkey succeeded" + echo "output:" + echo -e "$OUTPUT" + false + return + fi + + ${NETREG} deletekey ${KEY} && ${NETREG} deletekey ${KEY2} +} + +test_setvalue() +{ + KEY="$1" + VALNAME="$2" + VALTYPE="$3" + VALVALUE="$4" + + test_createkey ${KEY} + if test "x$?" != "x0" ; then + false + return + fi + + ${NETREG} setvalue ${KEY} ${VALNAME} ${VALTYPE} ${VALVALUE} + if test "x$?" != "x0" ; then + echo "ERROR: failed to set value testval in key ${KEY}" + false + return + fi + + OUTPUT=`${NETREG} enumerate ${KEY}` + if test "x$?" != "x0" ; then + echo "ERROR: failure calling enumerate for key ${KEY}" + echo output: + echo -e "${OUTPUT}" + false + return + fi + + echo -e "$OUTPUT" | { + FOUND=0 + while read LINE ; do + SEARCH1=`echo $LINE | grep ^Valuename | grep ${VALNAME}` + if test "x$?" = "x0" ; then + read LINE + read LINE + SEARCH2=`echo $LINE | grep "^Value " | grep ${VALVALUE}` + if test "x$?" = "x0" ; then + FOUND=1 + break + fi + fi + done + + if test "x$FOUND" != "x1" ; then + echo "ERROR: did not find value '${VALNAME}' with enumerate" + echo "enumerate output:" + echo -e "$OUTPUT" + false + return + fi + } +} + +test_deletevalue() +{ + KEY="$1" + VALNAME="$2" + + ${NETREG} deletevalue ${KEY} ${VALNAME} +} + +test_deletevalue_nonexisting() +{ + KEY="$1" + VALNAME="$2" + + ${NETREG} deletevalue ${KEY} ${VALNAME} + if test "x$?" = "x0" ; then + echo "ERROR: succeeded deleting value ${VALNAME}" + false + else + true + fi +} + +test_setvalue_twice() +{ + KEY="$1" + VALNAME="$2" + VALTYPE1="$3" + VALVALUE1="$4" + VALTYPE2="$5" + VALVALUE2="$6" + + OUTPUT=`test_setvalue ${KEY} ${VALNAME} ${VALTYPE1} ${VALVALUE1}` + if test "x$?" != "x0" ; then + echo -e "$OUTPUT" + false + return + fi + + ${NETREG} setvalue ${KEY} ${VALNAME} ${VALTYPE2} ${VALVALUE2} +} + + +testit "enumerate HKLM" \ + test_enumerate HKLM || \ + failed=`expr $failed + 1` + +testit "enumerate nonexisting hive" \ + test_enumerate_nonexisting XYZ || \ + failed=`expr $failed + 1` + +testit "enumerate without key" \ + test_enumerate_no_key || \ + failed=`expr $failed + 1` + +testit "getsd HKLM" \ + test_getsd HKLM || \ + failed=`expr $failed + 1` + +testit "create existing HKLM" \ + test_create_existing || \ + failed=`expr $failed + 1` + +testit "create key" \ + test_createkey HKLM/testkey || \ + failed=`expr $failed + 1` + +testit "delete key" \ + test_deletekey HKLM/testkey || \ + failed=`expr $failed + 1` + +testit "delete^2 key" \ + test_deletekey_nonexisting HKLM/testkey || \ + failed=`expr $failed + 1` + +testit "enumerate nonexisting key" \ + test_enumerate_nonexisting HKLM/testkey || \ + failed=`expr $failed +1` + +testit "create key with subkey" \ + test_createkey_with_subkey HKLM/testkey/subkey || \ + failed=`expr $failed + 1` + +testit "delete key with subkey" \ + test_deletekey_with_subkey HKLM/testkey/subkey || \ + failed=`expr $failed + 1` + +testit "set value" \ + test_setvalue HKLM/testkey testval sz moin || \ + failed=`expr $failed + 1` + +testit "delete value" \ + test_deletevalue HKLM/testkey testval || \ + failed=`expr $failed + 1` + +testit "delete nonexisting value" \ + test_deletevalue_nonexisting HKLM/testkey testval || \ + failed=`expr $failed + 1` + +testit "set value to different type" + test_setvalue_twice HKLM/testkey testval sz moin dword 42 || \ + failed=`expr $failed + 1` + +testit "delete key with value" \ + test_deletekey HKLM/testkey || \ + failed=`expr $failed + 1` + +testok $0 $failed + diff --git a/source3/script/tests/tests_all.sh b/source3/script/tests/tests_all.sh index e2cfad6648..5e215379f7 100755 --- a/source3/script/tests/tests_all.sh +++ b/source3/script/tests/tests_all.sh @@ -42,6 +42,12 @@ ntlm_auth_s3() { || failed=`expr $failed + $?` } +net_registry() { + echo "RUNNING SUBTESTS net_registry" + $SCRIPTDIR/test_net_registry.sh \ + || failed=`expr $failed + $?` +} + posix_s3() { echo "RUNNING SUBTESTS posix_s3" eval "$LIB_PATH_VAR="\$SAMBA4SHAREDDIR:\$$LIB_PATH_VAR"; export $LIB_PATH_VAR" @@ -66,6 +72,7 @@ if test "x$RUNTESTS" = "x" ; then smbclient_s3_encrypted wbinfo_s3 ntlm_auth_s3 + net_registry posix_s3 else for THIS_TEST in $RUNTESTS; do |