s3-selftest convert tests.sh to python
[bbaumbach/samba-autobuild/.git] / source3 / script / tests / test_net_registry.sh
index 4c6dd1910055523d82e625025d1419e49279fa65..21c452d6e1aaad7518af41337ea9718967a1d574 100755 (executable)
@@ -1,14 +1,36 @@
 #!/bin/sh
-
-# tests for the "net registry" command - local access to the registry db
-
+#
+# Blackbox tests for the "net registry" and "net rpc registry" commands.
+#
+# Copyright (C) 2010-2011 Michael Adam <obnox@samba.org>
+# Copyright (C) 2010 Gregor Beck <gbeck@sernet.de>
+#
+# rpc tests are chose by specifying "rpc" as commandline parameter.
+
+if [ $# -lt 3 ]; then
+cat <<EOF
+Usage: test_net_registry.sh SCRIPTDIR SERVERCONFFILE CONFIGURATION RPC
+EOF
+exit 1;
+fi
+
+SCRIPTDIR="$1"
+SERVERCONFFILE="$2"
+CONFIGURATION="$3"
+RPC="$4"
 
 NET="$VALGRIND ${NET:-$BINDIR/net} $CONFIGURATION"
 
-NETREG="${NET} registry"
+if test "x${RPC}" = "xrpc" ; then
+       NETREG="${NET} -U${USERNAME}%${PASSWORD} -I ${SERVER_IP} rpc registry"
+else
+       NETREG="${NET} registry"
+fi
 
-incdir=`dirname $0`
-. $incdir/test_functions.sh
+test x"$TEST_FUNCTIONS_SH" != x"INCLUDED" && {
+incdir=`dirname $0`/../../../testprogs/blackbox
+. $incdir/subunit.sh
+}
 
 failed=0
 
@@ -30,6 +52,7 @@ test_enumerate_nonexisting()
 {
        KEY="$1"
        ${NETREG} enumerate ${KEY}
+
        if test "x$?" = "x0" ; then
                echo "ERROR: enumerate succeeded with key '${KEY}'"
                false
@@ -53,13 +76,14 @@ 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;
+                       false
                fi
        else
                printf "%s\n" "$OUTPUT"
@@ -73,8 +97,11 @@ test_createkey()
        BASEKEY=`dirname $KEY`
        SUBKEY=`basename $KEY`
 
-       ${NETREG} createkey ${KEY}
+       OUTPUT=`${NETREG} createkey ${KEY}`
        if test "x$?" != "x0" ; then
+               echo "ERROR: createkey ${KEY} failed"
+               echo "output:"
+               printf "%s\n" "$OUTPUT"
                false
                return
        fi
@@ -108,14 +135,19 @@ test_deletekey()
        BASEKEY=`dirname ${KEY}`
        SUBKEY=`basename ${KEY}`
 
-       test_createkey "${KEY}"
-
+       OUTPUT=`test_createkey "${KEY}"`
        if test "x$?" != "x0" ; then
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
 
-       ${NETREG} deletekey ${KEY}
+       OUTPUT=`${NETREG} deletekey ${KEY}`
+       if test "x$?" != "x0" ; then
+               printf "%s\n" "${OUTPUT}"
+               false
+               return
+       fi
 
        # check enumerate of basekey does not show key anymore:
        OUTPUT=`${NETREG} enumerate ${BASEKEY}`
@@ -126,7 +158,7 @@ test_deletekey()
        fi
 
        UNEXPECTED="Keyname = ${SUBKEY}"
-       printf "%s\n" "$OUTPUT" | 'grep ^Keyname' | grep ${SUBKEY}
+       printf "%s\n" "$OUTPUT" | grep '^Keyname' | grep ${SUBKEY}
        if test "x$?" = "x0" ; then
                echo "ERROR: found '$UNEXPECTED' after delete in output"
                echo "output:"
@@ -148,9 +180,9 @@ test_deletekey_nonexisting()
 {
        KEY="$1"
 
-       test_deletekey "${KEY}"
-
+       OUTPUT=`test_deletekey "${KEY}"`
        if test "x$?" != "x0" ; then
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
@@ -170,17 +202,19 @@ test_createkey_with_subkey()
        BASENAME=`dirname ${KEY2}`
        SUBKEYNAME1=`basename ${KEY2}`
 
-       ${NETREG} createkey ${KEY}
-
+       OUTPUT=`${NETREG} createkey ${KEY}`
        if test "x$?" != "x0" ; then
+               echo "ERROR: createkey ${KEY} failed"
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
 
        # check we can enumerate to level key
-       ${NETREG} enumerate ${KEY}
+       OUTPUT=`${NETREG} enumerate ${KEY}`
        if test "x$?" != "x0" ; then
                echo "ERROR: failed to enumerate '${KEY}' after creation"
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
@@ -194,9 +228,9 @@ test_deletekey_with_subkey()
        KEY="$1"
        KEY2=`dirname ${KEY}`
 
-       ${NETREG} createkey ${KEY}
-
+       OUTPUT=`${NETREG} createkey ${KEY}`
        if test "x$?" != "x0" ; then
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
@@ -217,71 +251,57 @@ test_deletekey_with_subkey()
 test_setvalue()
 {
        KEY="$1"
-       VALNAME="$2"
+       VALNAME="${2#_}"
        VALTYPE="$3"
        VALVALUE="$4"
 
-       test_createkey ${KEY}
+       OUTPUT=`test_createkey ${KEY}`
        if test "x$?" != "x0" ; then
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
 
-       ${NETREG} setvalue ${KEY} ${VALNAME} ${VALTYPE} ${VALVALUE}
+       OUTPUT=`${NETREG} setvalue ${KEY} "${VALNAME}" ${VALTYPE} ${VALVALUE}`
        if test "x$?" != "x0" ; then
                echo "ERROR: failed to set value testval in key ${KEY}"
+               printf "%s\n" "${OUTPUT}"
                false
                return
        fi
 
-       OUTPUT=`${NETREG} enumerate ${KEY}`
+       OUTPUT=`${NETREG} getvalueraw ${KEY} "${VALNAME}"`
        if test "x$?" != "x0" ; then
-               echo "ERROR: failure calling enumerate for key ${KEY}"
+               echo "ERROR: failure calling getvalueraw for key ${KEY}"
                echo output:
                printf "%s\n" "${OUTPUT}"
                false
                return
        fi
 
-       printf "%s\n" "$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:"
-               printf "%s\n" "$OUTPUT"
+       if test "x${OUTPUT}" != "x${VALVALUE}" ; then
+               echo "ERROR: failure retrieving value ${VALNAME} for key ${KEY}"
+               printf "expected: %s\ngot: %s\n" "${VALVALUE}" "${OUTPUT}"
                false
                return
        fi
-       }
+
 }
 
 test_deletevalue()
 {
        KEY="$1"
-       VALNAME="$2"
+       VALNAME="${2#_}"
 
-       ${NETREG} deletevalue ${KEY} ${VALNAME}
+       ${NETREG} deletevalue ${KEY} "${VALNAME}"
 }
 
 test_deletevalue_nonexisting()
 {
        KEY="$1"
-       VALNAME="$2"
+       VALNAME="${2#_}"
 
-       ${NETREG} deletevalue ${KEY} ${VALNAME}
+       ${NETREG} deletevalue ${KEY} "${VALNAME}"
        if test "x$?" = "x0" ; then
                echo "ERROR: succeeded deleting value ${VALNAME}"
                false
@@ -293,20 +313,21 @@ test_deletevalue_nonexisting()
 test_setvalue_twice()
 {
        KEY="$1"
-       VALNAME="$2"
+       VALNAME="${2#_}"
        VALTYPE1="$3"
        VALVALUE1="$4"
        VALTYPE2="$5"
        VALVALUE2="$6"
 
-       OUTPUT=`test_setvalue ${KEY} ${VALNAME} ${VALTYPE1} ${VALVALUE1}`
+       OUTPUT=`test_setvalue ${KEY} _"${VALNAME}" ${VALTYPE1} ${VALVALUE1}`
        if test "x$?" != "x0" ; then
+               echo "ERROR: first setvalue call failed"
                printf "%s\n" "$OUTPUT"
                false
                return
        fi
 
-       ${NETREG} setvalue ${KEY} ${VALNAME} ${VALTYPE2} ${VALVALUE2}
+       ${NETREG} setvalue ${KEY} "${VALNAME}" ${VALTYPE2} ${VALVALUE2}
 }
 
 
@@ -322,9 +343,12 @@ testit "enumerate without key" \
        test_enumerate_no_key || \
        failed=`expr $failed + 1`
 
+# skip getsd test for registry currently: it fails
+if test "x${RPC}" != "xrpc" ; then
 testit "getsd HKLM" \
        test_getsd HKLM || \
        failed=`expr $failed + 1`
+fi
 
 testit "create existing HKLM" \
        test_create_existing || \
@@ -344,7 +368,7 @@ testit "delete^2 key" \
 
 testit "enumerate nonexisting key" \
        test_enumerate_nonexisting HKLM/testkey || \
-       failed=`expr $failed +1`
+       failed=`expr $failed + 1`
 
 testit "create key with subkey" \
        test_createkey_with_subkey HKLM/testkey/subkey || \
@@ -355,24 +379,37 @@ testit "delete key with subkey" \
        failed=`expr $failed + 1`
 
 testit "set value" \
-       test_setvalue HKLM/testkey testval sz moin || \
+       test_setvalue HKLM/testkey _testval sz moin || \
        failed=`expr $failed + 1`
 
 testit "delete value" \
-       test_deletevalue HKLM/testkey testval || \
+       test_deletevalue HKLM/testkey _testval || \
        failed=`expr $failed + 1`
 
 testit "delete nonexisting value" \
-       test_deletevalue_nonexisting HKLM/testkey testval || \
+       test_deletevalue_nonexisting HKLM/testkey _testval || \
        failed=`expr $failed + 1`
 
-testit "set value to different type"
+testit "set value to different type" \
        test_setvalue_twice HKLM/testkey testval sz moin dword 42 || \
        failed=`expr $failed + 1`
 
+testit "set default value" \
+       test_setvalue HKLM/testkey _"" sz 42 || \
+       failed=`expr $failed + 1`
+
+testit "delete default value" \
+       test_deletevalue HKLM/testkey _"" || \
+       failed=`expr $failed + 1`
+
+testit "delete nonexisting default value" \
+       test_deletevalue_nonexisting HKLM/testkey _"" || \
+       failed=`expr $failed + 1`
+
 testit "delete key with value" \
        test_deletekey HKLM/testkey || \
        failed=`expr $failed + 1`
 
+
 testok $0 $failed