Mojo-APNS
view release on metacpan or search on metacpan
t/feedback.t view on Meta::CPAN
# use IO::Socket::SSL qw(debug3);
use Mojo::Base -strict;
use Mojo::APNS;
use Test::More;
use File::Basename;
use Mojo::IOLoop::Stream;
my $dir = File::Spec->catdir(dirname($INC{'Mojo/IOLoop/Stream.pm'}), 'resources');
my $port = Mojo::IOLoop::Server->generate_port;
my $message;
plan skip_all => 'Could not find Mojo cert' unless -e "$dir/server.crt";
plan skip_all => 'Could not find Mojo key' unless -e "$dir/server.key";
my $time = time;
my $device = 'c9d4a07cfbbc21d6ef87a47d53e169831096a5d5faa15b7556f59ddda715dff4';
my ($apns, @cb);
Mojo::IOLoop->server(
port => $port,
address => '127.0.0.1',
tls => 1,
tls_cert => "$dir/server.crt",
tls_key => "$dir/server.key",
sub {
my ($loop, $stream, $id) = @_;
$stream->write(pack 'N n/a', $time, $device);
},
);
$apns = Mojo::APNS->new(
key => "$dir/server.key",
cert => "$dir/server.crt",
insecure => 1,
sandbox => 1,
_gateway_address => '127.0.0.1',
_feedback_port => $port,
);
$apns->ioloop->timer(
0 => sub {
$apns->on(error => sub { diag "ERROR: $_[1]"; $_[0]->ioloop->stop; });
$apns->on(feedback => sub { @cb = @_; $apns->ioloop->stop; });
}
);
$apns->ioloop->start;
isa_ok($cb[0], 'Mojo::APNS');
is $cb[1]->{ts}, $time, 'got ts';
is $cb[1]->{device}, $device, 'got device';
done_testing;
( run in 1.743 second using v1.01-cache-2.11-cpan-39bf76dae61 )