# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
use Test;
BEGIN { plan tests => 10 };
use Authen::TacacsPlus;
ok(1);
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
# You will have to change these to suit yourself:
my $host = $ENV{AUTHEN_TACACSPLUS_TEST_HOST} || 'zulu.open.com.au';
my $key = $ENV{AUTHEN_TACACSPLUS_TEST_KEY} || 'mysecret';
my $timeout = 15;
my $port = 49;
my $username = $ENV{AUTHEN_TACACSPLUS_TEST_USERNAME} || 'mikem';
my $password = $ENV{AUTHEN_TACACSPLUS_TEST_PASSWORD} || 'fred';
# This is the CHAP encrypted password, including the challenge
# and identifier
my $chap_password = $ENV{AUTHEN_TACACSPLUS_TEST_CHAP_PASSWORD}
|| 'djfhafghlkdlkfjasgljksgljkdsjsdfshdfgsdfkjglgh';
my $tac = new Authen::TacacsPlus(Host=>$host,
Key=>$key,
Timeout=>$timeout,
Port=>$port);
if ($tac)
{
ok(1);
}
else
{
foreach (2..10)
{
skip('Unable to complete tests because the test Tacacs server could not be contacted');
}
exit;
}
# test default type (ASCII), backwards compatible
ok($tac->authen($username, $password));
ok($tac->close() == 0);
my $tac = new Authen::TacacsPlus(Host=>$host,
Key=>$key,
Timeout=>$timeout,
Port=>$port);
ok($tac);
# test default PAP type
ok($tac->authen($username, $password, &Authen::TacacsPlus::TAC_PLUS_AUTHEN_TYPE_PAP));
ok($tac->close() == 0);
$tac = new Authen::TacacsPlus(Host=>$host,
Key=>$key,
Timeout=>$timeout,
Port=>$port);
ok($tac);
# test CHAP auth type
require Digest::MD5;
$chap_id = '5';
$chap_challenge = '1234567890123456';
# This is the CHAP response from the NAS. We will fake it here
# by calculating it in the same way th eNAS does:
$chap_response = Digest::MD5::md5($chap_id . $password . $chap_challenge);
$chap_string = $chap_id . $chap_challenge . $chap_response;
ok($tac->authen($username, $chap_string, &Authen::TacacsPlus::TAC_PLUS_AUTHEN_TYPE_CHAP));
ok($tac->close() == 0);