+echo "##################################################"
+echo "### make .monkeysphere directory an absolute symlink and updating..."
+mv "$TESTHOME"/.monkeysphere{,.bak}
+ln -s "$TESTHOME"/.monkeysphere{.linktest,}
+monkeysphere-authentication update-users $(whoami)
+echo
+echo "##################################################"
+echo "### ssh connection test for success..."
+ssh_test
+echo
+echo "##################################################"
+echo "### create bad permissions on link dir and updating..."
+chmod o+w "$TESTHOME"/.monkeysphere.linktest
+monkeysphere-authentication update-users $(whoami)
+echo
+echo "##################################################"
+echo "### ssh connection test for failure..."
+ssh_good_perm_test 255
+chmod o-w "$TESTHOME"/.monkeysphere.linktest
+echo
+echo "##################################################"
+echo "### make .monkeysphere directory a relative symlink and updating..."
+ln -sfn .monkeysphere.linktest "$TESTHOME"/.monkeysphere
+monkeysphere-authentication update-users $(whoami)
+echo
+echo "##################################################"
+echo "### ssh connection test for success..."
+ssh_test
+echo
+echo "##################################################"
+echo "### create bad permissions on link dir updating..."
+chmod o+w "$TESTHOME"/.monkeysphere.linktest
+monkeysphere-authentication update-users $(whoami)
+echo
+echo "##################################################"
+echo "### ssh connection test for failure..."
+ssh_good_perm_test 255
+chmod o-w "$TESTHOME"/.monkeysphere.linktest
+rm "$TESTHOME"/.monkeysphere
+mv "$TESTHOME"/.monkeysphere{.bak,}
+
+# ensure we're back to normal:
+echo
+echo "##################################################"
+echo "### making sure we are back to normal..."
+monkeysphere-authentication update-users $(whoami)
+ssh_test
+
+
+echo
+echo "##################################################"
+echo "### ssh connection test directly to 'testhost2.example' without new name..."
+target_hostname=testhost2.example ssh_test 255
+echo
+echo "##################################################"
+echo "### add servicename, certify by admin, import by user..."
+monkeysphere-host add-servicename ssh://testhost2.example
+<"$HOST_KEY_FILE" gpgadmin --import
+printf "y\ny\n" | gpgadmin --command-fd 0 --sign-key "$SSHHOSTKEYID"
+
+echo
+echo "##################################################"
+echo "### ssh connection test with hostname 'testhost2.example' added..."
+gpgadmin --export "$SSHHOSTKEYID" | gpg --import
+gpg --check-trustdb
+ssh_test
+
+echo
+echo "##################################################"
+echo "### ssh connection test directly to 'testhost2.example' ..."
+gpg --import <"$HOST_KEY_FILE"
+gpg --check-trustdb
+target_hostname=testhost2.example ssh_test
+
+echo
+echo "##################################################"
+echo "### ssh connection test for failure with 'testhost2.example' revoked..."
+monkeysphere-host revoke-servicename ssh://testhost2.example
+gpg --import <"$HOST_KEY_FILE"
+gpg --check-trustdb
+target_hostname=testhost2.example ssh_test 255
+
+# FIXME: addtest: remove admin as id-certifier and check ssh failure
+
+# FIXME: addtest: how do we test that set-expire makes sense after new
+# servicenames have been added?
+
+# test to make sure things are OK after the previous tests:
+echo
+echo "##################################################"
+echo "### settings reset, updating..."
+monkeysphere-authentication update-users $(whoami)
+echo
+echo "##################################################"
+echo "### ssh connection test for success..."
+ssh_test
+
+echo
+echo "##################################################"
+echo "### Testing TLS setup..."
+
+openssl req -config "$TESTDIR"/openssl.cnf -x509 -newkey rsa:1024 -subj '/DC=example/DC=testhost/CN=testhost.example/' -days 3 -keyout "$TEMPDIR"/tls_key.pem -nodes >"$TEMPDIR"/tls_cert.pem
+monkeysphere-host import-key "$TEMPDIR"/tls_key.pem https://testhost.example
+
+# FIXME: how can we test this via an https client?
+# We don't currently provide one.
+
+# FIXME: should we test other monkeysphere-host operations somehow now
+# that we have more than one key in the host keyring?
+
+echo
+echo "##################################################"
+echo "### revoking ssh host key..."
+# generate the revocation certificate and feed it directly to the test
+# user's keyring (we're not publishing to the keyservers)
+monkeysphere-host revoke-key "$SSHHOSTKEYID" | gpg --import
+echo
+echo "##################################################"
+echo "### ssh connection test for failure..."
+ssh_test 255
+
+
+######################################################################
+
+trap - EXIT
+