use Test::More tests => 12;
BEGIN { use_ok('POE') };
BEGIN { use_ok('POE::Component::Server::IRC') };
my $pocosi = POE::Component::Server::IRC->spawn( auth => 0, options => { trace => 0 }, antiflood => 0, plugin_debug => 0, debug => 0 );
if ( $pocosi ) {
isa_ok( $pocosi, "POE::Component::Server::IRC" );
POE::Session->create(
package_states => [
'main' => [ qw( _start
_shutdown
ircd_registered
ircd_daemon_quit
ircd_daemon_nick ) ],
],
options => { trace => 0 },
heap => { ircd => $pocosi },
);
$poe_kernel->run();
}
exit 0;
sub _start {
my ($kernel,$heap) = @_[KERNEL,HEAP];
$heap->{ircd}->yield( 'register' );
$heap->{ircd}->yield( 'add_spoofed_nick', { nick => 'OperServ', umode => 'o', ircname => 'The OperServ Bot' } );
$kernel->delay( '_shutdown' => 20 );
undef;
}
sub _shutdown {
my $heap = $_[HEAP];
$_[KERNEL]->delay( '_shutdown' => undef );
$heap->{ircd}->yield( 'shutdown' );
delete $heap->{ircd};
undef;
}
sub ircd_registered {
my ($heap,$object) = @_[HEAP,ARG0];
my $backend = $_[SENDER]->get_heap();
isa_ok( $object, "POE::Component::Server::IRC" );
isa_ok( $backend, "POE::Component::Server::IRC" );
undef;
}
sub ircd_daemon_quit {
pass('Deleted Spoof User');
$poe_kernel->yield( '_shutdown' );
undef;
}
sub ircd_daemon_nick {
my @args = @_[ARG0..$#_];
ok( $args[0] eq 'OperServ', 'Spoof Test 1: Nick' );
ok( $args[4] eq 'OperServ', 'Spoof Test 1: User' );
ok( $args[5] eq 'poco.server.irc', 'Spoof Test 1: Host' );
ok( $args[6] eq 'poco.server.irc', 'Spoof Test 1: Server' );
ok( $args[3] eq '+o', 'Spoof Test 1: Umode' );
ok( $args[7] eq 'The OperServ Bot', 'Spoof Test 1: GECOS' );
$_[SENDER]->get_heap()->yield( 'del_spoofed_nick', $args[0] );
undef;
}