Blame t/local/31_rsa_generate_key.t

Packit b893dc
#!/usr/bin/perl
Packit b893dc
Packit b893dc
use strict;
Packit b893dc
use warnings;
Packit b893dc
use Test::More;
Packit b893dc
use Net::SSLeay;
Packit b893dc
Packit b893dc
eval 'use Test::Exception';
Packit b893dc
plan skip_all => 'Test::Exception required' if $@;
Packit b893dc
Packit b893dc
plan tests => 14;
Packit b893dc
Packit b893dc
Net::SSLeay::randomize();
Packit b893dc
Net::SSLeay::load_error_strings();
Packit b893dc
Net::SSLeay::ERR_load_crypto_strings();
Packit b893dc
Net::SSLeay::SSLeay_add_ssl_algorithms();
Packit b893dc
Packit b893dc
lives_ok(sub {
Packit b893dc
        Net::SSLeay::RSA_generate_key(2048, 0x10001);
Packit b893dc
}, 'RSA_generate_key with valid callback');
Packit b893dc
Packit b893dc
dies_ok(sub {
Packit b893dc
        Net::SSLeay::RSA_generate_key(2048, 0x10001, 1);
Packit b893dc
}, 'RSA_generate_key with invalid callback');
Packit b893dc
Packit b893dc
{
Packit b893dc
    my $called = 0;
Packit b893dc
Packit b893dc
    lives_ok(sub {
Packit b893dc
            Net::SSLeay::RSA_generate_key(2048, 0x10001, \&cb;;
Packit b893dc
    }, 'RSA_generate_key with valid callback');
Packit b893dc
Packit b893dc
    cmp_ok( $called, '>', 0, 'callback has been called' );
Packit b893dc
Packit b893dc
    sub cb {
Packit b893dc
        my ($i, $n, $d) = @_;
Packit b893dc
Packit b893dc
        if ($called == 0) {
Packit b893dc
            is( wantarray(), undef, 'RSA_generate_key callback is executed in void context' );
Packit b893dc
            is( $d, undef, 'userdata will be undef if no userdata was given' );
Packit b893dc
Packit b893dc
            ok( defined $i, 'first argument is defined' );
Packit b893dc
            ok( defined $n, 'second argument is defined' );
Packit b893dc
        }
Packit b893dc
Packit b893dc
        $called++;
Packit b893dc
    }
Packit b893dc
}
Packit b893dc
Packit b893dc
{
Packit b893dc
    my $called   = 0;
Packit b893dc
    my $userdata = 'foo';
Packit b893dc
Packit b893dc
    lives_ok(sub {
Packit b893dc
            Net::SSLeay::RSA_generate_key(2048, 0x10001, \&cb_data, $userdata);
Packit b893dc
    }, 'RSA_generate_key with valid callback and userdata');
Packit b893dc
Packit b893dc
    cmp_ok( $called, '>', 0, 'callback has been called' );
Packit b893dc
Packit b893dc
    sub cb_data {
Packit b893dc
        my ($i, $n, $d) = @_;
Packit b893dc
Packit b893dc
        if ($called == 0) {
Packit b893dc
            is( wantarray(), undef, 'RSA_generate_key callback is executed in void context' );
Packit b893dc
Packit b893dc
            ok( defined $i, 'first argument is defined' );
Packit b893dc
            ok( defined $n, 'second argument is defined' );
Packit b893dc
            is( $d, $userdata, 'third argument is the userdata we passed in' );
Packit b893dc
        }
Packit b893dc
Packit b893dc
        $called++;
Packit b893dc
    }
Packit b893dc
}