libnet-radius-perl/t/bundled.t

194 lines
7.3 KiB
Perl

#!/usr/bin/perl
# Test the parsing of the bundled dictionary files...
# $Id: bundled.t 98 2009-10-14 15:26:33Z lem $
use Test::Warn;
use Test::More;
use Net::Radius::Dictionary;
my %dict =
(
'dicts/dictionary.base'
=> { attr => 39, vendor => undef, vsa => 0 },
'dicts/dictionary.3com-o'
=> { attr => 3, vendor => 'USR', vsa => 259 },
'dicts/dictionary'
=> { attr => 78, vendor => undef, vsa => 0 },
'dicts/dictionary.3com'
=> { attr => 0, vendor => '3com', vsa => 1 },
'dicts/dictionary.3gpp2'
=> { attr => 0, vendor => '3GPP2', vsa => 74 },
'dicts/dictionary.3gpp'
=> { attr => 0, vendor => '3GPP', vsa => 17 },
'dicts/dictionary.acc'
=> { attr => 0, vendor => 'Acc', vsa => 47 },
'dicts/dictionary.alcatel'
=> { attr => 0, vendor => 'Alcatel', vsa => 21 },
'dicts/dictionary.alteon'
=> { attr => 0, vendor => 'Alteon', vsa => 1 },
'dicts/dictionary.altiga'
=> { attr => 0, vendor => 'Altiga', vsa => 29},
'dicts/dictionary.aptis'
=> { attr => 0, vendor => 'Aptis', vsa => 36 },
'dicts/dictionary.ascend'
=> { attr => 137, vendor => 'Ascend',vsa => 249 },
'dicts/dictionary.bay'
=> { attr=>0,vendor=>'Bay-Networks',vsa => 65 },
'dicts/dictionary.bintec'
=> { attr => 0, vendor => 'BinTec', vsa => 17 },
'dicts/dictionary.bristol'
=> { attr => 0, vendor => 'Bristol', vsa => 5 },
'dicts/dictionary.broadsoft'
=> { attr => 0, vendor => 'BroadSoft', vsa => 132 },
'dicts/dictionary.cablelabs'
=> { attr => 0, vendor => 'CableLabs', vsa => 62 },
'dicts/dictionary.cabletron'
=> { attr => 0, vendor => 'Cabletron', vsa => 2 },
'dicts/dictionary.cisco'
=> { attr => 0, vendor => 'Cisco', vsa => 83 },
'dicts/dictionary.cisco.bbsm'
=> { attr => 0, vendor => 'Cisco-BBSM', vsa => 1 },
'dicts/dictionary.cisco.vpn3000'
=> { attr => 0, vendor => 'Cisco-VPN3000', vsa => 74 },
'dicts/dictionary.cisco.vpn5000'
=> { attr => 0, vendor => 'Cisco-VPN5000', vsa => 7 },
'dicts/dictionary.colubris'
=> { attr => 0, vendor => 'Colubris', vsa => 1 },
'dicts/dictionary.columbia_university'
=> { attr => 0, vendor => 'Columbia-University', vsa => 4 },
'dicts/dictionary.compat'
=> { attr => 21, vendor => undef, vsa => 0 },
'dicts/dictionary.cosine'
=> { attr => 0, vendor => 'Cosine', vsa => 8 },
'dicts/dictionary.erx'
=> { attr => 0, vendor => 'ERX', vsa => 51 },
'dicts/dictionary.extreme'
=> { attr => 0, vendor => 'Extreme', vsa => 4 },
'dicts/dictionary.foundry'
=> { attr => 0, vendor => 'Foundry', vsa => 4 },
'dicts/dictionary.freeradius'
=> { attr => 0, vendor => 'FreeRADIUS', vsa => 1 },
'dicts/dictionary.gandalf'
=> { attr => 0, vendor => 'Gandalf', vsa => 33 },
'dicts/dictionary.garderos'
=> { attr => 0, vendor => 'Garderos', vsa => 2 },
'dicts/dictionary.gemtek'
=> { attr => 0, vendor => 'Gemtek', vsa => 6 },
'dicts/dictionary.huawei'
=> { attr => 0, vendor => 'Huawei', vsa => 52 },
'dicts/dictionary.itk'
=> { attr => 0, vendor => 'ITK', vsa => 32 },
'dicts/dictionary.juniper'
=> { attr => 0, vendor => 'Juniper', vsa => 5 },
'dicts/dictionary.karlnet'
=> { attr => 0, vendor => 'KarlNet', vsa => 4 },
'dicts/dictionary.livingston'
=> { attr => 0, vendor => 'Livingston', vsa => 21 },
'dicts/dictionary.localweb'
=> { attr => 0, vendor => 'Local-Web', vsa => 15 },
'dicts/dictionary.merit'
=> { attr => 0, vendor => 'Merit', vsa => 3 },
'dicts/dictionary.microsoft'
=> { attr => 0, vendor => 'Microsoft', vsa => 33 },
'dicts/dictionary.mikrotik'
=> { attr => 0, vendor => 'Mikrotik', vsa => 3 },
'dicts/dictionary.navini'
=> { attr => 0, vendor => 'Navini', vsa => 1 },
'dicts/dictionary.netscreen'
=> { attr => 0, vendor => 'Netscreen', vsa => 7 },
'dicts/dictionary.nokia'
=> { attr => 5, vendor => undef, vsa => 0 },
'dicts/dictionary.nomadix'
=> { attr => 0, vendor => 'Nomadix', vsa => 13 },
'dicts/dictionary.propel'
=> { attr => 0, vendor => 'Propel', vsa => 5 },
'dicts/dictionary.quintum'
=> { attr => 0, vendor => 'Quintum', vsa => 23 },
'dicts/dictionary.redback'
=> { attr => 0, vendor => 'Redback', vsa => 170 },
'dicts/dictionary.redcreek'
=> { attr => 0, vendor => 'RedCreek', vsa => 9 },
'dicts/dictionary.shasta'
=> { attr => 0, vendor => 'Shasta', vsa => 3 },
'dicts/dictionary.shiva'
=> { attr => 0, vendor => 'Shiva', vsa => 16 },
'dicts/dictionary.sonicwall'
=> { attr => 0, vendor => 'SonicWall', vsa => 4 },
'dicts/dictionary.springtide'
=> { attr => 0, vendor => 'SpringTide', vsa => 8 },
'dicts/dictionary.t_systems_nova'
=> { attr => 0, vendor => 'T-Systems-Nova', vsa => 15 },
'dicts/dictionary.telebit'
=> { attr => 0, vendor => 'Telebit', vsa => 4 },
'dicts/dictionary.trapeze'
=> { attr => 0, vendor => 'Trapeze', vsa => 8 },
'dicts/dictionary.tunnel'
=> { attr => 12, vendor => undef, vsa => 0 },
'dicts/dictionary.unisphere'
=> { attr => 0, vendor => 'Unisphere', vsa => 49 },
'dicts/dictionary.unix'
=> { attr => 0, vendor => 'Unix', vsa => 6 },
'dicts/dictionary.usr'
=> { attr => 2, vendor => 'USR', vsa => 259 },
'dicts/dictionary.valemount'
=> { attr => 0, vendor => 'ValemountNetworks', vsa => 5 },
'dicts/dictionary.versanet'
=> { attr => 0, vendor => 'Versanet', vsa => 1 },
'dicts/dictionary.wispr'
=> { attr => 0, vendor => 'WISPr', vsa => 11 },
'dicts/dictionary.xedia'
=> { attr => 0, vendor => 'Xedia', vsa => 6 },
);
plan tests => 6 * keys %dict;
# Determine which dicts are not readable and produce the appropiate skip
for my $d (keys %dict)
{
unless (-f $d)
{
delete $dict{$d};
fail "Access $d: $!";
SKIP: { skip "(Consequence of previous failure)", 5 };
next;
}
$dict{$d}->{dict} = new Net::Radius::Dictionary;
isa_ok($dict{$d}->{dict}, 'Net::Radius::Dictionary');
}
# Verify what happens upon reading the dictionary - Check for warnings
# if the proper module is available
while (my ($dict, $h) = each %dict)
{
warning_is { $h->{dict}->readfile($dict) } undef,
"No warning to readfile('$dict')";
}
# Now check the dictionary contents...
# XXX - These tests peek inside the object. Probably their methods should
# be encapsulated through adequate accessors. However, these functions
# are never required for real use
while (my ($d, $h) = each %dict)
{
my $dict = $h->{dict};
my $attr = $dict->{attr};
is(keys %{$attr}, $dict{$d}->{attr}, "Correct number of attributes in $d");
my $num = undef;
SKIP: {
skip "No vendors defined in $d", 3
if not defined $dict{$d}->{vendor};
warning_is {$num = $dict->vendor_num($dict{$d}->{vendor})} undef,
"No warn fetching vendor " . $dict{$d}->{vendor} . " in $d" ;
ok(defined $num, "Vendor " . $dict{$d}->{vendor} . " in $d");
is(scalar(keys %{$dict->{vsattr}->{$num}}),
$dict{$d}->{vsa},
"Correct number of VSAs for " . $dict{$d}->{vendor} . " in $d");
# print "$_\n" for keys %{$dict->{vsattr}->{$num}};
};
}