]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
test: add test script for testing "net registry".
authorMichael Adam <obnox@samba.org>
Mon, 31 Mar 2008 11:54:39 +0000 (13:54 +0200)
committerMichael Adam <obnox@samba.org>
Mon, 31 Mar 2008 22:09:59 +0000 (00:09 +0200)
Michael

source/script/tests/test_net_registry.sh [new file with mode: 0755]
source/script/tests/tests_all.sh

diff --git a/source/script/tests/test_net_registry.sh b/source/script/tests/test_net_registry.sh
new file mode 100755 (executable)
index 0000000..927882b
--- /dev/null
@@ -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
+
index e2cfad6648357c28d196a23d63515fa8987810c4..5e215379f7ba060d5664053bb02335dc04b46f7c 100755 (executable)
@@ -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