|
Packit |
8bbd3c |
#!/usr/bin/perl
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
use strict;
|
|
Packit |
8bbd3c |
use warnings;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
use Test::More;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
use IO::Socket::IP;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
sub arguments_is {
|
|
Packit |
8bbd3c |
my ($arg, $exp, $name) = @_;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
$arg = [$arg]
|
|
Packit |
8bbd3c |
unless ref $arg;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
$name ||= join ' ', map { defined $_ ? $_ : 'undef' } @$arg;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
my $got = do {
|
|
Packit |
8bbd3c |
no warnings 'redefine';
|
|
Packit |
8bbd3c |
my $args;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
local *IO::Socket::IP::_io_socket_ip__configure = sub {
|
|
Packit |
8bbd3c |
$args = $_[1];
|
|
Packit |
8bbd3c |
return $_[0];
|
|
Packit |
8bbd3c |
};
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
IO::Socket::IP->new(@$arg);
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
$args;
|
|
Packit |
8bbd3c |
};
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is_deeply($got, $exp, $name);
|
|
Packit |
8bbd3c |
}
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
my @tests = (
|
|
Packit |
8bbd3c |
[ [ '[::1]:80' ], { PeerHost => '::1', PeerService => '80' } ],
|
|
Packit |
8bbd3c |
[ [ '[::1]:http' ], { PeerHost => '::1', PeerService => 'http' } ],
|
|
Packit |
8bbd3c |
[ [ '[::1]' ], { PeerHost => '::1', } ],
|
|
Packit |
8bbd3c |
[ [ '[::1]:' ], { PeerHost => '::1', } ],
|
|
Packit |
8bbd3c |
[ [ '127.0.0.1:80' ], { PeerHost => '127.0.0.1', PeerService => '80' } ],
|
|
Packit |
8bbd3c |
[ [ '127.0.0.1:http' ], { PeerHost => '127.0.0.1', PeerService => 'http' } ],
|
|
Packit |
8bbd3c |
[ [ '127.0.0.1' ], { PeerHost => '127.0.0.1', } ],
|
|
Packit |
8bbd3c |
[ [ '127.0.0.1:' ], { PeerHost => '127.0.0.1', } ],
|
|
Packit |
8bbd3c |
[ [ 'localhost:80' ], { PeerHost => 'localhost', PeerService => '80' } ],
|
|
Packit |
8bbd3c |
[ [ 'localhost:http' ], { PeerHost => 'localhost', PeerService => 'http' } ],
|
|
Packit |
8bbd3c |
[ [ PeerHost => '[::1]:80' ], { PeerHost => '::1', PeerService => '80' } ],
|
|
Packit |
8bbd3c |
[ [ PeerHost => '[::1]' ], { PeerHost => '::1' } ],
|
|
Packit |
8bbd3c |
[ [ LocalHost => '[::1]:80' ], { LocalHost => '::1', LocalService => '80' } ],
|
|
Packit |
8bbd3c |
[ [ LocalHost => undef ], { LocalHost => undef } ],
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
# IO::Socket::INET is happy to take port from the *Host argument even if a *Port argument
|
|
Packit |
8bbd3c |
# exists
|
|
Packit |
8bbd3c |
[ [ PeerHost => '127.0.0.1:80', PeerPort => '80' ], { PeerHost => '127.0.0.1', PeerService => '80' } ],
|
|
Packit |
8bbd3c |
# *Host argument should take precedence over *Service if both exist
|
|
Packit |
8bbd3c |
[ [ PeerHost => '127.0.0.1:443', PeerPort => '80' ], { PeerHost => '127.0.0.1', PeerService => '443' } ],
|
|
Packit |
8bbd3c |
);
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is_deeply( [ IO::Socket::IP->split_addr( "hostname:http" ) ],
|
|
Packit |
8bbd3c |
[ "hostname", "http" ],
|
|
Packit |
8bbd3c |
"split_addr hostname:http" );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is_deeply( [ IO::Socket::IP->split_addr( "192.0.2.1:80" ) ],
|
|
Packit |
8bbd3c |
[ "192.0.2.1", "80" ],
|
|
Packit |
8bbd3c |
"split_addr 192.0.2.1:80" );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is_deeply( [ IO::Socket::IP->split_addr( "[2001:db8::1]:80" ) ],
|
|
Packit |
8bbd3c |
[ "2001:db8::1", "80" ],
|
|
Packit |
8bbd3c |
"split_addr [2001:db8::1]:80" );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is_deeply( [ IO::Socket::IP->split_addr( "something.else" ) ],
|
|
Packit |
8bbd3c |
[ "something.else", undef ],
|
|
Packit |
8bbd3c |
"split_addr something.else" );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is( IO::Socket::IP->join_addr( "hostname", "http" ),
|
|
Packit |
8bbd3c |
"hostname:http",
|
|
Packit |
8bbd3c |
'join_addr hostname:http' );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is( IO::Socket::IP->join_addr( "192.0.2.1", 80 ),
|
|
Packit |
8bbd3c |
"192.0.2.1:80",
|
|
Packit |
8bbd3c |
'join_addr 192.0.2.1:80' );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is( IO::Socket::IP->join_addr( "2001:db8::1", 80 ),
|
|
Packit |
8bbd3c |
"[2001:db8::1]:80",
|
|
Packit |
8bbd3c |
'join_addr [2001:db8::1]:80' );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
is( IO::Socket::IP->join_addr( "something.else", undef ),
|
|
Packit |
8bbd3c |
"something.else",
|
|
Packit |
8bbd3c |
'join_addr something.else' );
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
arguments_is(@$_) for @tests;
|
|
Packit |
8bbd3c |
|
|
Packit |
8bbd3c |
done_testing;
|