testprogs: Pass configuration to test_password_settings.sh
authorAndreas Schneider <asn@samba.org>
Mon, 13 Mar 2023 13:32:50 +0000 (14:32 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 6 Apr 2023 13:45:35 +0000 (13:45 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15336

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/selftest/tests.py
testprogs/blackbox/test_password_settings.sh

index c2099e4fc43cfd7f0d2e5d6b777e79da99c1b1ec..3f3e9d97738e5528cc22e37634dbd1b3c4f832aa 100755 (executable)
@@ -894,7 +894,8 @@ plantestsuite("samba4.blackbox.password_settings",
                   '$PASSWORD',
                   '$REALM',
                   '$DOMAIN',
-                  "$PREFIX"
+                  "$PREFIX",
+                  configuration
               ])
 plantestsuite("samba4.blackbox.trust_user_account", "fl2008r2dc:local", [os.path.join(bbdir, "test_trust_user_account.sh"), '$PREFIX', '$REALM', '$DOMAIN', '$TRUST_REALM', '$TRUST_DOMAIN'])
 plantestsuite("samba4.blackbox.cifsdd(ad_dc_ntvfs)", "ad_dc_ntvfs", [os.path.join(samba4srcdir, "client/tests/test_cifsdd.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "$DOMAIN"])
index 609e26dee740cd717aa761d246c6b03ef84a6370..99be54261d7c5b7d6eed094abc9139ea1cf56091 100755 (executable)
@@ -5,9 +5,9 @@
 # Copyright (c) 2006-2008 Andrew Bartlett <abartlet@samba.org>
 # Copyright (c) 2016      Andreas Schneider <asn@samba.org>
 
-if [ $# -lt 6 ]; then
+if [ $# -lt 7 ]; then
        cat <<EOF
-Usage: test_passwords_settings.sh SERVER USERNAME PASSWORD REALM DOMAIN PREFIX
+Usage: test_passwords_settings.sh SERVER USERNAME PASSWORD REALM DOMAIN PREFIX CONFIGURATION
 EOF
        exit 1
 fi
@@ -18,7 +18,8 @@ PASSWORD=$3
 REALM=$4
 DOMAIN=$5
 PREFIX=$6
-shift 6
+CONFIGURATION=${7}
+shift 7
 failed=0
 
 samba_bindir="$BINDIR"
@@ -49,6 +50,7 @@ test_smbpasswd()
 {
        user=$1
        newpass=$2
+       _config="$(echo "${CONFIGURATION}" | cut -d '=' -f 2)"
 
        tmpfile=$PREFIX/smbpasswd_change_password_script
        cat >$tmpfile <<EOF
@@ -58,7 +60,7 @@ expect Retype new SMB password:
 send ${newpass}\n
 EOF
 
-       cmd='UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $texpect $tmpfile $smbpasswd -L -c $PREFIX/etc/smb.conf $user'
+       cmd='UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $texpect $tmpfile $smbpasswd -L -c ${_config} $user'
        eval echo "$cmd"
        out=$(eval $cmd)
        ret=$?
@@ -73,11 +75,9 @@ EOF
 UID_WRAPPER_ROOT=1
 export UID_WRAPPER_ROOT
 
-CONFIG="--configfile=$PREFIX/etc/smb.conf"
-export CONFIG
-
 testit "reset password policies beside of minimum password age of 0 days" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings set $CONFIG --complexity=default --history-length=default --min-pwd-length=default --min-pwd-age=0 --max-pwd-age=default || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings set \
+       "${CONFIGURATION}" --complexity=default --history-length=default --min-pwd-length=default --min-pwd-age=0 --max-pwd-age=default || failed=$(expr $failed + 1)
 
 TEST_USERNAME="$(mktemp -u alice-XXXXXX)"
 TEST_PASSWORD="testPaSS@00%"
@@ -88,7 +88,8 @@ TEST_PASSWORD_WEAK="Supersecret"
 TEST_PRINCIPAL="$TEST_USERNAME@$REALM"
 
 testit "create user locally" \
-       $VALGRIND $PYTHON $newuser $CONFIG $TEST_USERNAME $TEST_PASSWORD || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $newuser $TEST_USERNAME $TEST_PASSWORD \
+       "${CONFIGURATION}" || failed=$(expr $failed + 1)
 
 ###########################################################
 ### Test normal operation as user
@@ -113,7 +114,7 @@ rm -f $KRB5CCNAME_PATH
 ###########################################################
 
 testit "change user password with 'samba-tool user password' (unforced)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN -U$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NEW || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN -U$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NEW || failed=$(expr $failed + 1)
 
 TEST_PASSWORD_OLD=$TEST_PASSWORD
 TEST_PASSWORD=$TEST_PASSWORD_NEW
@@ -130,7 +131,7 @@ test_smbclient "Test login with user kerberos ccache" \
 ###########################################################
 
 testit "change user (non-ascii) password with 'samba-tool user password' (unforced)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN -U$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NON_ASCII || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN -U$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NON_ASCII || failed=$(expr $failed + 1)
 
 TEST_PASSWORD_OLD=$TEST_PASSWORD_NEW
 TEST_PASSWORD=$TEST_PASSWORD_NON_ASCII
@@ -167,7 +168,7 @@ TEST_PASSWORD_NEW="testPaSS@03%"
 test_smbclient "Test login with user (ntlm)" \
        "ls" "$SMB_UNC" --use-kerberos=disabled -U$TEST_PRINCIPAL%$TEST_PASSWORD || failed=$(expr $failed + 1)
 
-testit "set password on user locally" $VALGRIND $PYTHON $samba_tool user setpassword $TEST_USERNAME $CONFIG --newpassword=$TEST_PASSWORD_NEW --must-change-at-next-login || failed=$(expr $failed + 1)
+testit "set password on user locally" $VALGRIND $PYTHON $samba_tool user setpassword $TEST_USERNAME "${CONFIGURATION}" --newpassword=$TEST_PASSWORD_NEW --must-change-at-next-login || failed=$(expr $failed + 1)
 
 TEST_PASSWORD=$TEST_PASSWORD_NEW
 TEST_PASSWORD_NEW="testPaSS@04%"
@@ -176,7 +177,7 @@ test_smbclient_expect_failure "Test login with user (NT_STATUS_PASSWORD_MUST_CHA
        "ls" "$SMB_UNC" --use-kerberos=disabled -U$TEST_PRINCIPAL%$TEST_PASSWORD && failed=$(expr $failed + 1)
 
 testit "change user password with 'samba-tool user password' (after must change flag set)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN -U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NEW || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN -U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD -k no --newpassword=$TEST_PASSWORD_NEW || failed=$(expr $failed + 1)
 
 TEST_PASSWORD=$TEST_PASSWORD_NEW
 TEST_PASSWORD_NEW="testPaSS@05%"
@@ -194,8 +195,9 @@ expect Retype new SMB password:
 send ${TEST_PASSWORD_NEW}\n
 EOF
 
+config="$(echo "${CONFIGURATION}" | cut -d '=' -f 2)"
 testit "change user password with smbpasswd (after must change flag set)" \
-       $texpect $PREFIX/tmpsmbpasswdscript $smbpasswd -r $SERVER -c $PREFIX/etc/smb.conf -U $TEST_USERNAME || failed=$(expr $failed + 1)
+       $texpect $PREFIX/tmpsmbpasswdscript $smbpasswd -r $SERVER -c ${config} -U $TEST_USERNAME || failed=$(expr $failed + 1)
 
 TEST_PASSWORD=$TEST_PASSWORD_NEW
 TEST_PASSWORD_NEW="testPaSS@06%"
@@ -206,13 +208,13 @@ test_smbclient "Test login with user kerberos" \
 rm -f $KRB5CCNAME_PATH
 
 testit_expect_failure "try to set a non-complex password (command should not succeed)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_WEAK" && failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_WEAK" && failed=$(expr $failed + 1)
 
 testit "allow non-complex passwords" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings set $CONFIG --complexity=off || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings set "${CONFIGURATION}" --complexity=off || failed=$(expr $failed + 1)
 
 testit "try to set a non-complex password (command should succeed)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_WEAK" || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_WEAK" || failed=$(expr $failed + 1)
 
 TEST_PASSWORD=$TEST_PASSWORD_WEAK
 
@@ -220,31 +222,31 @@ test_smbclient "test login with non-complex password" \
        "ls" "$SMB_UNC" --use-kerberos=disabled -U$TEST_PRINCIPAL%$TEST_PASSWORD || failed=$(expr $failed + 1)
 
 testit_expect_failure "try to set a short password (command should not succeed)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_SHORT" && failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_SHORT" && failed=$(expr $failed + 1)
 
 testit "allow short passwords (length 1)" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings set $CONFIG --min-pwd-length=1 || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings set "${CONFIGURATION}" --min-pwd-length=1 || failed=$(expr $failed + 1)
 
 testit "try to set a short password (command should succeed)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_SHORT" || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_SHORT" || failed=$(expr $failed + 1)
 
 TEST_PASSWORD=$TEST_PASSWORD_SHORT
 TEST_PASSWORD_NEW="testPaSS@07%"
 
 testit "require minimum password age of 1 day" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings set $CONFIG --min-pwd-age=1 || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings set "${CONFIGURATION}" --min-pwd-age=1 || failed=$(expr $failed + 1)
 
 testit "show password settings" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings show $CONFIG || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings show "${CONFIGURATION}" || failed=$(expr $failed + 1)
 
 testit_expect_failure "try to change password too quickly (command should not succeed)" \
-       $VALGRIND $PYTHON $samba_tool user password -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_NEW" && failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user password "${CONFIGURATION}" -W$DOMAIN "-U$DOMAIN/$TEST_USERNAME%$TEST_PASSWORD" -k no --newpassword="$TEST_PASSWORD_NEW" && failed=$(expr $failed + 1)
 
 testit "reset password policies" \
-       $VALGRIND $PYTHON $samba_tool domain passwordsettings set $CONFIG --complexity=default --history-length=default --min-pwd-length=default --min-pwd-age=default --max-pwd-age=default || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool domain passwordsettings set "${CONFIGURATION}" --complexity=default --history-length=default --min-pwd-length=default --min-pwd-age=default --max-pwd-age=default || failed=$(expr $failed + 1)
 
 testit "delete user $TEST_USERNAME" \
-       $VALGRIND $PYTHON $samba_tool user delete $TEST_USERNAME -U"$USERNAME%$PASSWORD" $CONFIG -k no || failed=$(expr $failed + 1)
+       $VALGRIND $PYTHON $samba_tool user delete $TEST_USERNAME -U"$USERNAME%$PASSWORD" "${CONFIGURATION}" -k no || failed=$(expr $failed + 1)
 
 rm -f $PREFIX/tmpuserpassfile $PREFIX/tmpsmbpasswdscript
 rm -f $KRB5CCNAME_PATH