#!/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
{
KEY="$1"
${NETREG} enumerate ${KEY}
+
if test "x$?" = "x0" ; then
echo "ERROR: enumerate succeeded with key '${KEY}'"
false
{
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
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
fi
}
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
if test "x$?" != "x0" ; then
echo "ERROR: failed to enumerate key '${BASEKEY}'"
echo "output:"
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
return
fi
EXPECTED="Keyname = ${SUBKEY}"
- echo -e "$OUTPUT" | grep ^Keyname | grep ${SUBKEY}
+ printf "%s\n" "$OUTPUT" | grep '^Keyname' | grep ${SUBKEY}
if test "x$?" != "x0" ; then
echo "ERROR: did not find expexted '$EXPECTED' in output"
echo "output:"
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
fi
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}`
if test "x$?" != "x0" ; then
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
return
fi
UNEXPECTED="Keyname = ${SUBKEY}"
- echo -e "$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:"
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
fi
{
KEY="$1"
- test_deletekey "${KEY}"
-
+ OUTPUT=`test_deletekey "${KEY}"`
if test "x$?" != "x0" ; then
+ printf "%s\n" "${OUTPUT}"
false
return
fi
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
KEY="$1"
KEY2=`dirname ${KEY}`
- ${NETREG} createkey ${KEY}
-
+ OUTPUT=`${NETREG} createkey ${KEY}`
if test "x$?" != "x0" ; then
+ printf "%s\n" "${OUTPUT}"
false
return
fi
if test "x$?" = "x0" ; then
echo "ERROR: delete of key with subkey succeeded"
echo "output:"
- echo -e "$OUTPUT"
+ printf "%s\n" "$OUTPUT"
false
return
fi
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:
- echo -e "${OUTPUT}"
+ printf "%s\n" "${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"
+ 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
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 -e "$OUTPUT"
+ 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}
}
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 || \
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 || \
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