# 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.) BEGIN { $| = 1; print "1..7\n"; } END {print "not ok 1\n" unless $loaded;} use Authen::TacacsPlus; $loaded = 1; print "ok 1\n"; ######################### 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 = 'oscar.open.com.au'; my $key = 'mysecret'; my $timeout = 15; my $port = 49; my $username = 'mikem'; my $password = 'fred'; # This is the CHAP encrypted password, including the challenge # and identifier my $chap_password = 'djfhafghlkdlkfjasgljksgljkdsjsdfshdfgsdfkjglgh'; my $tac = new Authen::TacacsPlus(Host=>$host, Key=>$key, Timeout=>$timeout, Port=>$port); if ($tac) { print "ok 2\n"; } else { print "Could not connect to TACACSPLUS Host $self->{Host}: " . Authen::TacacsPlus::errmsg() . "\n"; print "not ok 2\n" ; } # test default type (ASCII), backwards compatible if ($tac->authen($username, $password)) { print "ok 3\n"; } else { my $reason = Authen::TacacsPlus::errmsg(); print "authen failed: $reason\n"; print "not ok 3\n" } $tac->close(); my $tac = new Authen::TacacsPlus(Host=>$host, Key=>$key, Timeout=>$timeout, Port=>$port); if ($tac) { print "ok 4\n"; } else { print "Could not connect to TACACSPLUS Host $self->{Host}: " . Authen::TacacsPlus::errmsg() . "\n"; print "not ok 4\n" ; } # test default PAP type if ($tac->authen($username, $password, &Authen::TacacsPlus::TAC_PLUS_AUTHEN_TYPE_PAP)) { print "ok 5\n"; } else { my $reason = Authen::TacacsPlus::errmsg(); print "authen failed: $reason\n"; print "not ok 5\n" } $tac->close(); $tac = new Authen::TacacsPlus(Host=>$host, Key=>$key, Timeout=>$timeout, Port=>$port); if ($tac) { print "ok 6\n"; } else { print "Could not connect to TACACSPLUS Host $self->{Host}: " . Authen::TacacsPlus::errmsg() . "\n"; print "not ok 6\n" ; } # test CHAP auth type require 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 = MD5->hash($chap_id . $password . $chap_challenge); $chap_string = $chap_id . $chap_challenge . $chap_response; if ($tac->authen($username, $chap_string, &Authen::TacacsPlus::TAC_PLUS_AUTHEN_TYPE_CHAP)) { print "ok 7\n"; } else { my $reason = Authen::TacacsPlus::errmsg(); print "authen failed: $reason\n"; print "not ok 7\n" } $tac->close();