Since this is a trivial variation of the general pserver
authentication, there is really no reason not to support
it.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Frank Lichtenheld 2007-05-27 14:33:10 +02:00 коммит произвёл Junio C Hamano
Родитель b3c81cff02
Коммит 24a97d84ad
2 изменённых файлов: 34 добавлений и 3 удалений

Просмотреть файл

@ -95,9 +95,10 @@ $state->{method} = 'ext';
if (@ARGV && $ARGV[0] eq 'pserver') { if (@ARGV && $ARGV[0] eq 'pserver') {
$state->{method} = 'pserver'; $state->{method} = 'pserver';
my $line = <STDIN>; chomp $line; my $line = <STDIN>; chomp $line;
unless( $line eq 'BEGIN AUTH REQUEST') { unless( $line =~ /^BEGIN (AUTH|VERIFICATION) REQUEST$/) {
die "E Do not understand $line - expecting BEGIN AUTH REQUEST\n"; die "E Do not understand $line - expecting BEGIN AUTH REQUEST\n";
} }
my $request = $1;
$line = <STDIN>; chomp $line; $line = <STDIN>; chomp $line;
req_Root('root', $line) # reuse Root req_Root('root', $line) # reuse Root
or die "E Invalid root $line \n"; or die "E Invalid root $line \n";
@ -109,10 +110,11 @@ if (@ARGV && $ARGV[0] eq 'pserver') {
} }
$line = <STDIN>; chomp $line; # validate the password? $line = <STDIN>; chomp $line; # validate the password?
$line = <STDIN>; chomp $line; $line = <STDIN>; chomp $line;
unless ($line eq 'END AUTH REQUEST') { unless ($line eq "END $request REQUEST") {
die "E Do not understand $line -- expecting END AUTH REQUEST\n"; die "E Do not understand $line -- expecting END $request REQUEST\n";
} }
print "I LOVE YOU\n"; print "I LOVE YOU\n";
exit if $request eq 'VERIFICATION'; # cvs login
# and now back to our regular programme... # and now back to our regular programme...
} }

Просмотреть файл

@ -67,6 +67,22 @@ git
END AUTH REQUEST END AUTH REQUEST
EOF EOF
cat >login-anonymous <<EOF
BEGIN VERIFICATION REQUEST
$SERVERDIR
anonymous
END VERIFICATION REQUEST
EOF
cat >login-git <<EOF
BEGIN VERIFICATION REQUEST
$SERVERDIR
git
END VERIFICATION REQUEST
EOF
test_expect_success 'pserver authentication' \ test_expect_success 'pserver authentication' \
'cat request-anonymous | git-cvsserver pserver >log 2>&1 && 'cat request-anonymous | git-cvsserver pserver >log 2>&1 &&
tail -n1 log | grep -q "^I LOVE YOU$"' tail -n1 log | grep -q "^I LOVE YOU$"'
@ -80,6 +96,19 @@ test_expect_success 'pserver authentication failure (non-anonymous user)' \
fi && fi &&
tail -n1 log | grep -q "^I HATE YOU$"' tail -n1 log | grep -q "^I HATE YOU$"'
test_expect_success 'pserver authentication (login)' \
'cat login-anonymous | git-cvsserver pserver >log 2>&1 &&
tail -n1 log | grep -q "^I LOVE YOU$"'
test_expect_success 'pserver authentication failure (login/non-anonymous user)' \
'if cat login-git | git-cvsserver pserver >log 2>&1
then
false
else
true
fi &&
tail -n1 log | grep -q "^I HATE YOU$"'
#-------------- #--------------
# CONFIG TESTS # CONFIG TESTS