MikroTik-Client

 view release on metacpan or  search on metacpan

t/tls.t  view on Meta::CPAN

#!/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 )