The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl

use strict;
use warnings;
use Test::More;
use Net::SSLeay;

eval "use Test::Exception;";
plan skip_all => 'Some tests need Test::Exception' if $@;

plan tests => 6;

{
    my $const;
    lives_ok(sub {
            $const = Net::SSLeay::OP_NO_TLSv1();
    }, 'some random constant exists');

    ok( defined $const, '  and has a defined value' );
}

lives_ok(sub {
        Net::SSLeay::make_form( foo => 'bar' );
}, 'some random function gets autoloaded');


throws_ok(sub {
        Net::SSLeay::TXT_RC2_128_CBC_EXPORT40_WITH_MD5();
}, qr/^Can't locate .*?TXT_RC2_128\.al/, 'disabled constant doesn\'t exist');

throws_ok(sub {
        Net::SSLeay::123x();
}, qr/^Can't locate .*?123x\.al/, 'invalid constant doesn\'t exist' );

throws_ok(sub {
        Net::SSLeay::_TEST_INVALID_CONSTANT();
}, qr/^Your vendor has not defined SSLeay macro _TEST_INVALID_CONSTANT /,
'raises an appropriate error when an openssl macro isn\'t defined');