# -*- mode: cperl; -*-
use Test::Base;
use Net::Scan::SSH::Server::SupportedAuth qw(:flag);
plan tests => 3 + 5 * blocks;
sub numeric { $_ = +($_[0] || 0); }
filters {
map { $_ => ['numeric'] } qw(publickey_2 password_2 password_1 publickey_1)
};
run {
my $block = shift;
my $scanner = Net::Scan::SSH::Server::SupportedAuth->new(
host => $block->host,
port => $block->port,
);
my $result = $scanner->scan;
is($scanner->dump,
$block->dump,
$block->name . ' dump'
);
for my $v (2,1) {
for my $auth (qw(publickey password)) {
my $auth_v = "${auth}_${v}";
is($result->{$v} & $AUTH_IF{$auth} ? 1 : 0,
$block->$auth_v,
$block->name . " $auth_v"
);
}
}
if ($block->name eq 'key') {
is($result->{2} == $AUTH_IF{publickey} ? 1 : 0,
1,
$block->name . " bit 2 key only"
);
is($result->{2} & ($AUTH_IF{publickey} | $AUTH_IF{password}) ? 1 : 0,
1,
$block->name . " bit 2 key or pw"
);
is(($result->{2} & $AUTH_IF{publickey} || $result->{1} & $AUTH_IF{publickey}) ? 1 : 0,
1,
$block->name . " bit 2 key or 1 key"
);
}
};
__END__
=== key
--- host: localhost
--- port: 22
--- dump: {"1":{"password":0,"publickey":0},"2":{"password":0,"publickey":1}}
--- publickey_2: 1
--- password_2 : 0
--- publickey_1: 0
--- password_1 : 0
=== no port
--- host: localhost
--- port: 2
--- dump: {"1":{"password":0,"publickey":0},"2":{"password":0,"publickey":0}}
--- publickey_2: 0
--- password_2 : 0
--- publickey_1: 0
--- password_1 : 0