#!/usr/bin/perl -w
use strict;
use Test::More;
use POE;
#use Data::Dumper;
# data for tests
my @domains = qw(
freshmeat.net
freebsd.org
reg.ru
ns1.nameself.com.NS
perl.com
);
my @domains_not_reg = qw(
thereisnosuchdomain123.com
thereisnosuchdomain453.ru
);
my @ips = qw( 87.242.73.95 );
my @registrars = ('REGRU-REG-RIPN');
my $server = 'whois.ripn.net',
# start test
plan tests => @domains + @domains_not_reg + @ips + @registrars + 1;
use_ok('POE::Component::Client::Whois::Smart');
print "The following tests requires internet connection...\n";
POE::Session->create(
package_states => [
'main' => [
qw(
_start
_response
_response_not_reg
_response_ip
_response_registrar
)
],
],
);
$poe_kernel->run();
sub _start {
my ($kernel,$heap) = @_[KERNEL,HEAP];
POE::Component::Client::Whois::Smart->whois(
query => \@domains,
event => '_response',
);
POE::Component::Client::Whois::Smart->whois(
query => \@registrars,
server => $server,
event => '_response_registrar',
);
POE::Component::Client::Whois::Smart->whois(
query => \@domains_not_reg,
event => '_response_not_reg',
);
POE::Component::Client::Whois::Smart->whois(
query => \@ips,
event => '_response_ip',
);
}
sub _response {
my $full_result = $_[ARG0];
foreach my $result ( @{$full_result} ) {
my $query = $result->{query} if $result;
$query =~ s/.NS$//i;
ok( $result && !$result->{error} && $result->{whois} =~ /$query/i,
"whois for domain ".$result->{query}." from ".$result->{server} );
}
}
sub _response_registrar {
my $full_result = $_[ARG0];
foreach my $result ( @{$full_result} ) {
my $query = $result->{query} if $result;
#print Dumper($result->{whois});
ok( $result && !$result->{error} && $result->{whois} =~ /$query/i,
"whois for registrar ".$result->{query}." from ".$result->{server} );
}
}
sub _response_not_reg {
my $full_result = $_[ARG0];
foreach my $result ( @{$full_result} ) {
ok( $result && $result->{error},
"whois for domain (not reged) ".$result->{query} );
}
}
sub _response_ip {
my $full_result = $_[ARG0];
foreach my $result ( @{$full_result} ) {
ok( $result && !$result->{error} && $result->{whois},
"whois for IP ".$result->{query}." from ".$result->{server} );
}
}
1;