testing: adding temporary monkeysphere config and ssh config.
[monkeysphere.git] / tests / basic
index 81f3b91cbf7c53d302163896e09d3039ea0a69aa..23146840bf0e7288f8c0192e3cb3dafc7f60e337 100755 (executable)
 # fail on fail
 set -e
 
-# these tests assume a commonly-trusted "Admin's key", a fake key
-# permanently stored in ./home/admin/.gnupg:
+# gpg command for test admin user
 gpgadmin() {
-    GNUPGHOME="$TESTDIR"/home/admin/.gnupg gpg "$@"
+    GNUPGHOME="$TEMPDIR"/admin/.gnupg gpg "$@"
 }
 
 # cleanup:
 cleanup() {
 
+    echo
     read -p "press enter to cleanup and remove tmp:"
 
-    # FIXME: stop the sshd process
+    echo "### stop sshd..."
+    kill "$SSHD_PID"
 
-    echo
     echo "### removing temp dir..."
     rm -rf "$TEMPDIR"
-
-    # FIXME: how should we clear out the temporary $VARLIB?
-
-    # FIXME: clear out ssh client config file and known hosts.
 }
 
 ## setup trap
@@ -66,6 +62,19 @@ export MONKEYSPHERE_CHECK_KEYSERVER=false
 SSHD_CONFIG="$TEMPDIR"/sshd_config
 export SOCKET="$TEMPDIR"/ssh-socket
 
+# copy in admin and testuser home to tmp
+echo "### copying admin and testuser homes..."
+cp -a "$TESTDIR"/home/admin "$TEMPDIR"/
+cp -a "$TESTDIR"/home/testuser "$TEMPDIR"/
+
+cat <<EOF > "$TEMPDIR"/testuser/.ssh/config
+UserKnownHosts $TEMPDIR/testuser/.ssh/known_hosts
+EOF
+
+cat <<EOF > "$TEMPDIR"/testuser/.monkeysphere/monkeysphere.conf
+KNOWN_HOSTS=$TEMPDIR/testuser/.ssh/known_hosts
+EOF
+
 
 ### SERVER TESTS
 
@@ -96,11 +105,9 @@ echo y | gpgadmin --command-fd 0 --sign-key "$HOSTKEYID"
 # FIXME: how can we test publish-key without flooding junk into the
 # keyservers?
 
-# indicate that the "Admin's" key is an identity certifier for the
-# host
-
+# add admin as identity certifier for testhost
 echo "### adding admin as certifier..."
-echo y | monkeysphere-server add-identity-certifier "$TESTDIR"/home/admin/.gnupg/pubkey.gpg
+echo y | monkeysphere-server add-identity-certifier "$TEMPDIR"/admin/.gnupg/pubkey.gpg
 
 # initialize base sshd_config
 cp etc/ssh/sshd_config "$SSHD_CONFIG"
@@ -113,17 +120,15 @@ EOF
 # launch test sshd with the new host key.
 echo "### starting sshd..."
 socat EXEC:"/usr/sbin/sshd -f ${SSHD_CONFIG} -i -d -d -d -D -e" "UNIX-LISTEN:${SOCKET}" 2> "$TEMPDIR"/sshd.log &
+export SSHD_PID=$!
 
 
 ### TESTUSER TESTS
 
-# copy testuser home directory into temp dir
-echo "### seting up testuser home..."
-cp -r "$TESTDIR"/home/testuser "$TEMPDIR"/
-
 # generate an auth subkey for the test user
 echo "### generating key for testuser..."
 MONKEYSPHERE_GNUPGHOME="$TEMPDIR"/testuser/.gnupg \
+SSH_ASKPASS=echo \
     monkeysphere gen-subkey --expire 0
 
 # add server key to testuser keychain
@@ -131,15 +136,10 @@ echo "### export server key to testuser..."
 gpgadmin --armor --export "$HOSTKEYID" | \
     GNUPGHOME="$TEMPDIR"/testuser/.gnupg gpg --import
 
-#GNUPGHOME="$TEMPDIR"/testuser/.gnupg gpg --list-keys
-#read -p "?"
-
-# connect to test sshd, using monkeysphere to verify the identity
-# before connection.
+# connect to test sshd, using monkeysphere-ssh-proxycommand to verify
+# the identity before connection.  This should work in both directions!
 echo "### testuser connecting to sshd socket..."
 PROXY_COMMAND="monkeysphere-ssh-proxycommand --no-connect %h && socat STDIO UNIX:${SOCKET}"
-GNUPGHOME="$TEMPDIR"/testuser/.gnupg ssh -oProxyCommand="$PROXY_COMMAND" testhost
-
-# create a new client side key, certify it with the "CA", use it to
-# log in.
-## FIXME: implement!
+GNUPGHOME="$TEMPDIR"/testuser/.gnupg \
+MONKEYSPHERE_HOME="$TEMPDIR"/testuser/.monkeysphere \
+ ssh -F "$TEMPDIR"/testuser/.ssh/config -v -v -v -oProxyCommand="$PROXY_COMMAND" testhost