The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 5;
use POE qw(Component::Client::DNSBL);
use Data::Dumper;

my @addresses = qw(test dbltest.com example.com);

my $dnsbl = POE::Component::Client::DNSBL->spawn();

isa_ok( $dnsbl, 'POE::Component::Client::DNSBL' );

POE::Session->create(
        package_states => [
            'main' => [ qw(_start _stop _response) ],
        ],
        heap => {
                  addresses => \@addresses,
                  dnsbl => $dnsbl
        },
);

$poe_kernel->run();
exit 0;

sub _start {
   my ($kernel,$heap) = @_[KERNEL,HEAP];
   $heap->{dnsbl}->lookup(
      event => '_response',
      address => $_,
   ) for @{ $heap->{addresses} };
   return;
}

sub _stop {
   my ($kernel,$heap) = @_[KERNEL,HEAP];
   pass("PoCo let the refcount go");
   $kernel->call( $heap->{dnsbl}->session_id(), 'shutdown' );
   return;
}

sub _response {
   my ($kernel,$heap,$record) = @_[KERNEL,HEAP,ARG0];
   like( $record->{response}, qr/^(127|NXDOMAIN)/, 'Got a response' ) or diag("Was expecting '^127', got " . Dumper( $record ) . "\n");
   return;
}