#!/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/ ";