App-CamelPKI
view release on metacpan or search on metacpan
t/lib/App/CamelPKI/Test.pm view on Meta::CPAN
is($out,
$App::CamelPKI::Test::test_keys_plaintext{$k});
}
}
};
test "certificate_chain_ok and test certificates" => sub {
my @keyids = keys %App::CamelPKI::Test::test_rootca_certs;
foreach my $id (@keyids) {
certificate_chain_ok
($App::CamelPKI::Test::test_entity_certs{$id},
[ $App::CamelPKI::Test::test_rootca_certs{$id} ]);
certificate_chain_ok
($App::CamelPKI::Test::test_entity_certs{"${id}_sha256"},
[ $App::CamelPKI::Test::test_rootca_certs{$id} ]);
}
my ($snippet_ok, $snippet_not_ok) =
map { My::Tests::Below->pod_code_snippet($_) }
(qw(certificate_chain_ok certificate_chain_notok));
my $out = run_perl(<<"SCRIPT");
use Test::More qw(no_plan);
use App::CamelPKI::Test qw(certificate_chain_ok
%test_rootca_certs %test_self_signed_certs %test_entity_certs);
foreach my \$key (qw(${\join(" ", @keyids)})) {
$snippet_ok
$snippet_not_ok
}
SCRIPT
for my $i (0..$#keyids) {
my $success = 2 * $i + 1;
my $failure = 2 * $i + 2;
like($out, qr/^ok $success/m);
like($out, qr/^not ok $failure/m);
}
};
test "no collisions in the entity certificates' serial numbers" => sub {
my %serialz;
foreach my $certpem (values %App::CamelPKI::Test::test_entity_certs) {
my ($out, $err) =
run_thru_openssl($certpem, qw(x509 -noout -text));
(my ($serial) = $out =~ m/Serial Number:\n?\s+(.*)\n/)
or die $out;
ok(! $serialz{$serial}++, "duplicate serial $serial");
}
};
use App::CamelPKI::Test qw(server_start server_stop server_port);
sub server_can_connect {
my $ua = LWP::UserAgent->new;
my $port = server_port;
my $response = $ua->get("https://127.0.0.1:$port/");
# TODO : find a solution
# A small bug prevent this from working, no time
# to worry about it, just adapt the test
# In a perfect world, it should be :
# return ($response->is_success);
if ($response->status_line =~ qr/404/){
return 1;
}
return ($response->is_success);
}
SKIP: {
use App::CamelPKI;
my $webserver = App::CamelPKI->model("WebServer")->apache;
skip "Apache is not installed or Key Ceremony has not been done",
1 unless ($webserver->is_installed_and_has_perl_support && $webserver->is_operational);
test "server_start and server_stop" => sub {
server_start();
ok(server_can_connect());
server_stop();
ok(! server_can_connect());
};
};
SKIP:{
skip "php-cli not installed",1
unless is_php_cli_present();
test "run_php" => sub {
my $phpout = run_php(<<"SCRIPT");
<?php
print "z" . "o" . "i" . "n" . "x";
?>
SCRIPT
like($phpout, qr/zoinx/);
};
};
SKIP: {
use App::CamelPKI;
my $webserver = App::CamelPKI->model("WebServer")->apache;
skip "Key Ceremony has not been done",
1 unless ($webserver->is_operational);
use App::CamelPKI::Test qw(camel_pki_chain);
test "camel_pki_chain" => sub {
my @chain = camel_pki_chain;
is(scalar(@chain), 2);
certificate_chain_ok($chain[0], \@chain);
};
}
( run in 2.832 seconds using v1.01-cache-2.11-cpan-98e64b0badf )