summaryrefslogtreecommitdiffstats
path: root/t/ssh-authkeys.t
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xt/ssh-authkeys.t77
1 files changed, 77 insertions, 0 deletions
diff --git a/t/ssh-authkeys.t b/t/ssh-authkeys.t
new file mode 100755
index 0000000..46b9413
--- /dev/null
+++ b/t/ssh-authkeys.t
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# this is hardcoded; change it if needed
+use lib "src/lib";
+use Gitolite::Test;
+
+# testing the (separate) authkeys handler
+# ----------------------------------------------------------------------
+
+$ENV{GL_BINDIR} = "$ENV{PWD}/src";
+
+my $ak = "$ENV{HOME}/.ssh/authorized_keys";
+mkdir("$ENV{HOME}/.ssh", 0700) if not -d "$ENV{HOME}/.ssh";
+my $kd = `gitolite query-rc -n GL_ADMIN_BASE` . "/keydir";
+
+try "plan 49";
+
+my $pgm = "gitolite ../triggers/post-compile/ssh-authkeys";
+
+try "
+ # prep
+ rm -rf $ak; ok
+
+ $pgm; ok
+ mkdir $kd; ok
+ cd $kd; ok
+ $pgm; ok; /authorized_keys missing/
+ /creating/
+ wc < $ak; ok; /2 *6 *32/
+ # some gl keys
+ ssh-keygen -N '' -q -f alice -C alice
+ ssh-keygen -N '' -q -f bob -C bob
+ ssh-keygen -N '' -q -f carol -C carol
+ ssh-keygen -N '' -q -f dave -C dave
+ ssh-keygen -N '' -q -f eve -C eve
+ rm alice bob carol dave eve
+ ls -a; ok; /alice.pub/; /bob.pub/; /carol.pub/; /dave.pub/; /eve.pub/
+ $pgm; ok;
+ wc < $ak; ok; /^ *7 .*/;
+ grep gitolite $ak; ok; /start/
+ /end/
+
+ # some normal keys
+ mv alice.pub $ak; ok
+ cat carol.pub >> $ak; ok
+ $pgm; ok; /carol.pub duplicates.*non-gitolite key/
+ wc < $ak; ok; /^ *8 .*/;
+
+ # moving normal keys up
+ mv dave.pub dave
+ $pgm; ok
+ cat dave >> $ak; ok
+ grep -n dave $ak; ok; /8:ssh-rsa/
+ mv dave dave.pub
+ $pgm; ok; /carol.pub duplicates.*non-gitolite key/
+ /dave.pub duplicates.*non-gitolite key/
+ grep -n dave $ak; ok; /3:ssh-rsa/
+
+ # a bad key
+ ls -al > bad.pub
+ $pgm; !ok; /fingerprinting failed for \\'keydir/bad.pub\\'/
+ wc < $ak; ok; /^ *9 .*/;
+ # a good key doesn't get added
+ ssh-keygen -N '' -q -f good
+ $pgm; !ok; /fingerprinting failed for \\'keydir/bad.pub\\'/
+ wc < $ak; ok; /^ *9 .*/;
+ # till the bad key is removed
+ rm bad.pub
+ $pgm; ok;
+ wc < $ak; ok; /^ *10 .*/;
+
+ # duplicate gl key
+ cp bob.pub robert.pub
+ $pgm; ok; /robert.pub duplicates.*bob.pub/
+";