MikroTik-Client
view release on metacpan or search on metacpan
#!/usr/bin/env perl
use warnings;
use strict;
use FindBin;
use lib './';
use lib "$FindBin::Bin/lib";
use Test::More;
plan skip_all => 'TLS tests. Set TEST_TLS to run.' unless $ENV{TEST_TLS} || $ENV{TEST_ALL};
plan skip_all => 'IO::Socket::SSL required for TLS support in Mojolicious.'
unless eval { require Mojo::IOLoop::TLS; Mojo::IOLoop::TLS->TLS; };
# It won't work with an old built-in cert and I can't care less to find out why.
# It's tests only issue
plan skip_all => 'Mojolicious 8.18+ only.'
unless eval { require Mojolicious; Mojolicious->VERSION('8.18'); 1 };
BEGIN {
$ENV{MIKROTIK_CLIENT_CONNTIMEOUT} = 0.5;
}
use Errno qw(ECONNRESET);
use MikroTik::Client;
use MikroTik::Client::Mockup;
use constant MOJO_TLS_OPTS => eval { MikroTik::Client->MOJO_TLS_OPTS };
my $loop = Mojo::IOLoop->new();
my %tls_cert_bdl = (cert => "./t/certs/client-bundle.crt");
# my %tls_cert_ca = (tls_ca => "./t/certs/ca.crt");
my %tls_cert_clt = (
ca => "./t/certs/ca.crt",
cert => "./t/certs/client.crt",
key => "./t/certs/client.key"
);
my %tls_cert_srv = (
tls_ca => "./t/certs/ca.crt",
tls_cert => "./t/certs/server.crt",
tls_key => "./t/certs/server.key"
);
my %client_opts
= (user => "test", password => "tset", host => "127.0.0.1", ioloop => $loop);
my %server_opts = (tls => 1);
# Non-TLS connection to TLS server
{
my $mockup = _mockup($loop, %server_opts);
my $port = $loop->acceptor($mockup->server)->port;
my $api = MikroTik::Client->new(%client_opts, port => $port, tls => 0);
$api->cmd("/resp");
ok $! = ECONNRESET, "server requires TLS";
}
# Default server side certs
{
my $mockup = _mockup($loop, %server_opts);
my $port = $loop->acceptor($mockup->server)->port;
my $api = MikroTik::Client->new(%client_opts, port => $port);
my $res;
# insecure
$res = $api->cmd("/resp");
is_deeply $res, _gen_result(), 'validation ignored';
# secure
( run in 2.995 seconds using v1.01-cache-2.11-cpan-d8267643d1d )