# first argument is expected return code from ssh connection
ssh_test() {
local RETURN=0
+ local remote_command=${1:-true}
umask 0077
- CODE=${1:-0}
+ CODE=${2:-0}
# start the ssh daemon on the socket
echo "##### starting ssh server..."
# make a client connection to the socket
echo "##### starting ssh client..."
ssh-agent bash -c \
- "monkeysphere subkey-to-ssh-agent && ssh -F $TEMPDIR/testuser/.ssh/config ${target_hostname:-testhost.example} true" \
+ "monkeysphere subkey-to-ssh-agent && ssh -F $TEMPDIR/testuser/.ssh/config ${target_hostname:-testhost.example} $remote_command" \
|| RETURN="$?"
# kill the sshd process if it's still running
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
# Make sure it works if there is "armor" written in gpg.conf
# add other weirdnesses here as they come up.
echo "##################################################"
echo "### testing functionality in the face of unusual gpg.conf settings..."
echo 'armor' >> "$GNUPGHOME"/gpg.conf
-ssh_test
+ssh_test true
# remove the testuser's authorized_user_ids file, update, and make
# sure that the ssh authentication FAILS
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_test 255
+ssh_test true 255
mv "$TESTHOME"/.monkeysphere/authorized_user_ids{.bak,}
# put improper permissions on authorized_user_ids file, update, and
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod g-w "$TESTHOME"/.monkeysphere/authorized_user_ids
echo
echo "##################################################"
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod o-w "$TESTHOME"/.monkeysphere/authorized_user_ids
monkeysphere-authentication update-users $(whoami)
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### create bad permissions on link dir and updating..."
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod o-w "$TESTHOME"/.monkeysphere.linktest
echo
echo "##################################################"
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### create bad permissions on link dir updating..."
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod o-w "$TESTHOME"/.monkeysphere.linktest
# FIXME: implement check of link path, and uncomment this test
# echo
# echo
# echo "##################################################"
# echo "### ssh connection test for failure..."
-# ssh_good_perm_test 255
+# ssh_good_perm_test true 255
# chmod o-w "$TESTHOME"/.monkeysphere
rm "$TESTHOME"/.monkeysphere/authorized_user_ids
mv "$TESTHOME"/.monkeysphere/authorized_user_ids{.bak,}
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### create bad permissions on link dir and updating..."
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod o-w "$TESTHOME"/.monkeysphere.linktest
echo
echo "##################################################"
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### create bad permissions on link dir updating..."
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_good_perm_test 255
+ssh_good_perm_test true 255
chmod o-w "$TESTHOME"/.monkeysphere.linktest
rm "$TESTHOME"/.monkeysphere
mv "$TESTHOME"/.monkeysphere{.bak,}
echo "##################################################"
echo "### making sure we are back to normal..."
monkeysphere-authentication update-users $(whoami)
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### ssh connection test directly to 'testhost2.example' without new name..."
-target_hostname=testhost2.example ssh_test 255
+target_hostname=testhost2.example ssh_test true 255
echo
echo "##################################################"
echo "### add servicename, certify by admin, import by user..."
echo "### ssh connection test with hostname 'testhost2.example' added..."
gpgadmin --export "$SSHHOSTKEYID" | gpg --import
gpg --check-trustdb
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo "### ssh connection test directly to 'testhost2.example' ..."
gpg --import <"$HOST_KEY_FILE"
gpg --check-trustdb
-target_hostname=testhost2.example ssh_test
+target_hostname=testhost2.example ssh_test true
echo
echo "##################################################"
monkeysphere-host revoke-servicename ssh://testhost2.example
gpg --import <"$HOST_KEY_FILE"
gpg --check-trustdb
-target_hostname=testhost2.example ssh_test 255
+target_hostname=testhost2.example ssh_test true 255
# FIXME: addtest: remove admin as id-certifier and check ssh failure
echo
echo "##################################################"
echo "### ssh connection test for success..."
-ssh_test
+ssh_test true
echo
echo "##################################################"
echo
echo "##################################################"
echo "### ssh connection test for failure..."
-ssh_test 255
+ssh_test true 255
######################################################################