|
Packit |
ae5a87 |
#!perl
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
use Test::More tests => 75;
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
use Authen::SASL qw(Perl);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my %order = qw(
|
|
Packit |
ae5a87 |
ANONYMOUS 0
|
|
Packit |
ae5a87 |
LOGIN 1
|
|
Packit |
ae5a87 |
PLAIN 1
|
|
Packit |
ae5a87 |
CRAM-MD5 2
|
|
Packit |
ae5a87 |
EXTERNAL 2
|
|
Packit |
ae5a87 |
DIGEST-MD5 3
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
my $skip3 = !eval { require Digest::MD5 and $Digest::MD5::VERSION || $Digest::MD5::VERSION };
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
foreach my $level (reverse 0..3) {
|
|
Packit |
ae5a87 |
my @mech = grep { $order{$_} <= $level } keys %order;
|
|
Packit |
ae5a87 |
foreach my $n (1..@mech) {
|
|
Packit |
ae5a87 |
push @mech, shift @mech; # rotate
|
|
Packit |
ae5a87 |
my $mech = join(" ",@mech);
|
|
Packit |
ae5a87 |
print "# $level $mech\n";
|
|
Packit |
ae5a87 |
if ($level == 3 and $skip3) {
|
|
Packit |
ae5a87 |
SKIP: {
|
|
Packit |
ae5a87 |
skip "requires Digest::MD5", 5;
|
|
Packit |
ae5a87 |
}
|
|
Packit |
ae5a87 |
next;
|
|
Packit |
ae5a87 |
}
|
|
Packit |
ae5a87 |
my $sasl = Authen::SASL->new(
|
|
Packit |
ae5a87 |
mechanism => $mech,
|
|
Packit |
ae5a87 |
callback => {
|
|
Packit |
ae5a87 |
user => 'gbarr',
|
|
Packit |
ae5a87 |
pass => 'fred',
|
|
Packit |
ae5a87 |
authname => 'none'
|
|
Packit |
ae5a87 |
},
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
ok($sasl, "new");
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is($sasl->mechanism, $mech, "sasl mechanism");
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $conn = $sasl->client_new("ldap","localhost");
|
|
Packit |
ae5a87 |
ok($conn, 'client_new');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $chosen = $conn->mechanism;
|
|
Packit |
ae5a87 |
ok($chosen, 'conn mechanism ' . ($chosen || '?'));
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is($order{$chosen}, $level, 'mechanism level');
|
|
Packit |
ae5a87 |
}
|
|
Packit |
ae5a87 |
}
|