#!perl -T
use strict;
use warnings;
BEGIN {
our %ips = ('1.2.3.4' => '1.2.3.4',
'012.034.01.055' => '10.28.1.45',
'0x12.0x43.0x44.0x01' => '18.67.68.1',
'167838211' => '10.1.2.3',
'12.0x12.01234' => '12.18.2.156',
'276.2.3' => '20.2.3.0',
'0x10000000b' => '0.0.0.11');
our %uris = ('http://google.com/' => 'http://google.com/',
'http://GOOgle.com' => 'http://google.com/',
'http://..google..com../' => 'http://google.com/',
'http://google.com/%25%34%31%25%31%46' => 'http://google.com/A%1F',
'http://google^.com/' => 'http://google%5E.com/',
'http://google.com/1/../2/././' => 'http://google.com/2/',
'http://google.com/1//2?3//4' => 'http://google.com/1/2?3//4');
};
our (%ips, %uris);
use Test::More tests => scalar(keys(%ips) + 2 * keys(%uris));
use Net::Google::SafeBrowsing::Blocklist;
diag("Testing IP address canonicalization...");
while (my($in, $exp) = each(%ips)) {
diag("Canonicalize IP '$in' => '$exp'");
is(Net::Google::SafeBrowsing::Blocklist::canonicalized_ip($in), $exp);
}
while (my($in, $exp) = each(%uris)) {
diag("URI escape '$in' => '$exp'");
my ($ip, @host_parts, @path, $qry);
ok(Net::Google::SafeBrowsing::Blocklist::canonicalized_http_uri(
$in, \$ip, \@host_parts, \@path, \$qry));
my $res = 'http://' . join('.', @host_parts) . join('', @path);
if (defined($qry)) {
$res .= '?' . $qry;
}
is($res, $exp);
}