RT notifier: parse templates without header correctly
[openxpki.git] / trunk / clients / perl / OpenXPKI-Client-SCEP / t / 45.scep-download-initial-cert.t
blob2d1317e3e26e01a8484b721253ec264cdb7265ac
1 use Test::More tests => 2;
2 use File::Path;
3 use File::Spec;
4 use File::Copy;
5 use Cwd;
6 use English;
8 use POSIX ":sys_wait_h";
9 use Errno;
11 use strict;
12 use warnings;
14 our %config;
15 require 't/common.pl';
17 my $debug = $config{debug};
18 my $stderr = '2>/dev/null';
19 if ($debug) {
20     $stderr = '';
23 diag("SCEP Client Test: download initial certificate");
25 my $sscep = 'sscep';
26 my $cgi_dir = $config{cgi_dir};
29 SKIP: {
30     if (system("$sscep >/dev/null 2>&1") != 0) {
31         skip "sscep binary not installed.", 2;
32     }
33     if (! (`$config{openssl} version` =~ m{\A OpenSSL\ 0\.9\.8 }xms)) {
34         skip "OpenSSL 0.9.8 not available.", 2;
35     }
37     #ok(mkpath([ $cgi_dir ]));
38     # create configuration
39     open my $HANDLE, ">", "$cgi_dir/scep.cfg";
40     print $HANDLE "[global]\n";
41     print $HANDLE "socket=$config{socket_file}\n";
42     print $HANDLE "realm=I18N_OPENXPKI_DEPLOYMENT_TEST_DUMMY_CA\n";
43     print $HANDLE "iprange=127.0.0.0/8\n";
44     print $HANDLE "profile=I18N_OPENXPKI_PROFILE_TLS_SERVER\n";
45     print $HANDLE "servername=testscepserver1\n";
46     print $HANDLE "encryption_algorithm=3DES\n";
47     close $HANDLE;
49     my $scep_uri = "http://127.0.0.1:$config{http_server_port}/cgi-bin/scep";
51     my $cacert_base = "$config{server_dir}/cacert";
54     my $redo_count = 0;
55     my $pid;
56   FORK:
57     do {
58         $pid = fork();
59         if (! defined $pid) {
60             if ($!{EAGAIN}) {
61                 # recoverable fork error
62                 if ($redo_count > 5) {
63                     print STDERR "FAILED.\n";
64                     print STDERR "Could not fork process\n";
65                     return;
66                 }
67                 print STDERR '.';
68                 sleep 5;
69                 $redo_count++;
70                 redo FORK;
71             }
73             # other fork error
74             print STDERR "FAILED.\n";
75             print STDERR "Could not fork process: $ERRNO\n";
76             return;
77         }
78     } until defined $pid;
80     if ($pid) {
81         # parent here
82         # child process pid is available in $pid
83         sleep 3;
85         # use sscep to download certificate
86         my $scep_uri = "http://127.0.0.1:$config{http_server_port}/cgi-bin/scep";
87         my $scep_result = `$sscep enroll -u $scep_uri -c $config{server_dir}/cacert-0 -k t/instance/request_key.pem -r t/instance/request.csr -l t/instance/certificate -t 10 -n 5 -v $stderr`;
88         if ($debug) {
89             print STDERR $scep_result;
90         }
91         ok($scep_result =~ m{pkistatus:\ SUCCESS}xms);
92         ok(-s 't/instance/certificate');
93         
94         kill(9, $pid);
96         my $kid;
97         do {
98             $kid = waitpid(-1, WNOHANG);
99         } until $kid > 0;
102    } else {
103         # child here
104         # parent process pid is available with getppid
105         
106         # start a minimal HTTP server to test the CGI
107         my $http_server = getcwd . "/t/http_server.pl";
108         chdir $cgi_dir;
109         exec("perl $http_server $config{http_server_port}");
110     }