t/50-cgi: %post data parse tests
[perl/plp/.git] / t / 50-cgi.t
index 6b0661a2bd891e7320d5c34ad1aa0b814dc95b76..f58566f447ff026b561479f85ab490d0b32340c3 100644 (file)
@@ -23,7 +23,7 @@ eval {
 eval { require PerlIO::scalar };
 plan skip_all => "PerlIO required (perl 5.8) to test PLP" if $@;
 
-plan tests => 21;
+plan tests => 24;
 
 require_ok('PLP::Backend::CGI') or BAIL_OUT();
 
@@ -36,7 +36,7 @@ my $ORGDIR = Cwd::getcwd();
 open ORGOUT, '>&', *STDOUT;
 
 sub plp_is {
-       my ($test, $src, $expect, $env) = @_;
+       my ($test, $src, $expect, $env, $in) = @_;
        local $Test::Builder::Level = $Test::Builder::Level + 1;
 
        %ENV = (
@@ -54,6 +54,13 @@ sub plp_is {
                $env ? %{$env} : (),
        ); # Apache/2.2.4 CGI environment
 
+       if (defined $in) {
+               $ENV{CONTENT_LENGTH} = length $in;
+               $ENV{CONTENT_TYPE} = 'application/x-www-form-urlencoded';
+               close STDIN;
+               open STDIN, '<', $in;
+       }
+
        close STDOUT;
        open STDOUT, '>', \my $output;  # STDOUT buffered to scalar
        select STDOUT;  # output before start() (which selects PLPOUT)
@@ -96,6 +103,7 @@ sub plp_ok {
        (my $name = $file) =~ s/[.][^.]+$//;
        $file = "$name.html";
        my $infile = delete $replace{-input} // "$name.plp";
+       my $addin = -e "$name.txt" && "$name.txt";
        $name =~ s/^(\d*)-// and $name .= " ($1)";
 
        my $out = eval {
@@ -121,7 +129,7 @@ sub plp_ok {
                <eval \s+ line="([^"]*)"> (.*?) </eval>
        }{ getwarning($2, $1, $infile) }msxge;
 
-       plp_is($name, $infile, $out, $env);
+       plp_is($name, $infile, $out, $env, $addin);
 }
 
 # 0*: permission checks using generated dummy files
@@ -169,7 +177,6 @@ SKIP: {
 # 4*-7*: apache environment (default)
 plp_ok($_) for glob '[4-7]*.html';
 
-#TODO: %post
 #TODO: %fields
 #TODO: %cookie