use strict;
use warnings;
use Test::More;
use DBI;
use DBD::MariaDB;
BEGIN {
eval {
require Net::SSLeay;
Net::SSLeay->VERSION(1.43); # for Net::SSLeay::initialize()
} or do {
plan skip_all => 'Net::SSLeay 1.43 is required for this test';
};
Net::SSLeay->import();
}
sub diag_ssl {
my $error = Net::SSLeay::ERR_get_error();
my $error_string = Net::SSLeay::ERR_error_string($error);
diag($error_string);
Net::SSLeay::load_error_strings();
my $error_string2 = Net::SSLeay::ERR_error_string($error);
diag($error_string2);
}
Net::SSLeay::initialize();
my $ctx_new_sub = Net::SSLeay->can('CTX_tlsv1_2_new') || Net::SSLeay->can('CTX_tlsv1_1_new') || Net::SSLeay->can('CTX_tlsv1_new');
plan skip_all => 'Net::SSLeay does not provide TLS context' unless defined $ctx_new_sub;
plan tests => 4;
my $ctx1 = $ctx_new_sub->();
ok($ctx1, 'Net::SSLeay TLS context was created before MariaDB connection') or diag_ssl();
my $dbh = DBI->connect('DBI:MariaDB:', undef, undef, { RaiseError => 0, PrintError => 0 });
$dbh->disconnect() if defined $dbh;
$dbh = undef;
pass('MariaDB connection was successfully created and destroyed');
my $ctx2 = $ctx_new_sub->();
ok($ctx2, 'Net::SSLeay TLS context was created after MariaDB connection') or diag_ssl();
Net::SSLeay::CTX_free($ctx1);
Net::SSLeay::CTX_free($ctx2);
pass('Net::SSLeay TLS contexts were destroyed');