Test::Mojo::IRC - Module for testing Mojo::IRC
use Test::Mojo::IRC -basic; my $t = Test::Mojo::IRC->start_server; my $irc = Mojo::IRC->new(server => $t->server); # simulate server/client communication $t->run( [ # Send "welcome.irc" from the DATA section when client sends "NICK" qr{\bNICK\b} => [qw(main motd.irc)], ], sub { my $err; my $motd = 0; $t->on($irc, irc_rpl_motd => sub { $motd++ }); $t->on($irc, irc_rpl_endofmotd => sub { Mojo::IOLoop->stop; }); # need to manually stop the IOLoop $irc->connect(sub { $err = $_[1]; }); Mojo::IOLoop->start; # need to manually start the IOLoop is $err, "", "connected"; is $motd, 3, "message of the day"; }, ); done_testing; __DATA__ @@ motd.irc :spectral.shadowcat.co.uk 375 test123 :- spectral.shadowcat.co.uk Message of the Day - :spectral.shadowcat.co.uk 372 test123 :- We scan all connecting clients for open proxies and other :spectral.shadowcat.co.uk 372 test123 :- exploitable nasties. If you don't wish to be scanned, :spectral.shadowcat.co.uk 372 test123 :- don't connect again, and sorry for scanning you this time. :spectral.shadowcat.co.uk 376 test123 :End of /MOTD command.
Test::Mojo::IRC is a module for making it easier to test Mojo::IRC applications.
TEST_MOJO_IRC_SERVER can be set to point to a live server. If the variable is set, "start_server" will simply return TEST_MOJO_IRC_SERVER instead of setting up a server.
TEST_MOJO_IRC_SERVER
$str = $self->server;
Returns the server address, "host:port", that "start_server" set up.
$str = $self->welcome_message; $self = $self->welcome_message($str);
Holds a message which will be sent to the client on connect.
$self->on($irc, $event, $cb);
Will attach events to the $irc object which is removed after "run" has completed. See "SYNOPSIS" for example code.
$self->run($reply_on, sub { my $self = shift });
Used to simulate communication between IRC server and client. The way this works is that the $cb will initiate connect or write to the server and the server will then respond with the data from either "welcome_message" or $reply_on on these events.
$cb
$reply_on
$reply_on is an array-ref of regex/buffer pairs. Each time a message from the client match the first regex in the $reply_on array the buffer will be sent back to the client and the regex/buffer will be removed. This means that the order of the pairs are important. The buffer can be...
Scalar
Plain text.
Scalar ref
Path to file on disk.
Array ref
The module name and file passed on to "data_section" in Mojo::Loader. The default package is "main", meaning the two examples below is the same:
$self->run([qr{JOIN}, ["join-reply.irc"]], sub { my $self = shift }); $self->run([qr{JOIN}, ["main", "join-reply.irc"]], sub { my $self = shift });
Note that starting and stopping the IOLoop is up to you, but there is also a master timeout which will stop the IOLoop if running for too long.
See "SYNOPSIS" for example.
$server = $self->start_server; $self = Test::Mojo::IRC->start_server;
Will start a test server and return "server". It can also be called as a class method which will return a new object.
use Test::Mojo::IRC -basic;
Loading this module with "-basic" will import strict, warnings, utf8, Test::More and 5.10 features into the caller namespace.
Copyright (C) 2014, Jan Henning Thorsen
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
Jan Henning Thorsen - jhthorsen@cpan.org
jhthorsen@cpan.org
To install Mojo::IRC, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojo::IRC
CPAN shell
perl -MCPAN -e shell install Mojo::IRC
For more information on module installation, please visit the detailed CPAN module installation guide.