1use strict;
2use warnings;
3use Test::More tests => 7;
4use POE;
5use POE::Component::Server::IRC;
6
7my $pocosi = POE::Component::Server::IRC->spawn(
8    auth         => 0,
9    antiflood    => 0,
10    plugin_debug => 1,
11);
12
13POE::Session->create(
14    package_states => [
15        'main' => [qw(
16            _start
17            _shutdown
18            ircd_daemon_quit
19            ircd_daemon_nick
20        )],
21    ],
22    heap => { ircd => $pocosi },
23);
24
25$poe_kernel->run();
26
27sub _start {
28    my ($kernel, $heap) = @_[KERNEL, HEAP];
29    $heap->{ircd}->yield('register', 'all');
30    $heap->{ircd}->yield(
31        'add_spoofed_nick',
32        {
33            nick  => 'OperServ',
34            umode => 'o',
35        },
36    );
37    $kernel->delay('_shutdown', 20);
38}
39
40sub _shutdown {
41    my $heap = $_[HEAP];
42    $_[KERNEL]->delay('_shutdown');
43    $heap->{ircd}->yield('shutdown');
44    delete $heap->{ircd};
45}
46
47sub ircd_daemon_quit {
48    pass('Deleted Spoof User');
49    $poe_kernel->yield('_shutdown');
50}
51
52sub ircd_daemon_nick {
53    my @args = @_[ARG0..$#_];
54
55    is($args[0], 'OperServ', 'Spoof Test 1: Nick');
56    is($args[4], 'OperServ', 'Spoof Test 1: User');
57    is($args[5], 'poco.server.irc', 'Spoof Test 1: Host');
58    is($args[6], 'poco.server.irc', 'Spoof Test 1: Server');
59    is($args[3], '+o', 'Spoof Test 1: Umode');
60    is($args[7], "* I'm too lame to read the documentation *", 'Spoof Test 1: GECOS');
61    $_[SENDER]->get_heap()->yield('del_spoofed_nick', $args[0]);
62}
63