APR-Emulate-PSGI
view release on metacpan or search on metacpan
t/20_cgi_mode.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use APR::Emulate::PSGI;
use IO::File;
plan('tests' => 16);
# Set up filehandles needed in the PSGI environment.
my $error_string;
my $request_body = 'hello=world';
my $response_body = 'howdy';
open my $fh_in, '<', \do { $request_body };
open my $fh_errors, '>', \$error_string;
# Set up CGI environment.
$ENV{'REMOTE_ADDR'} = '192.168.1.1';
$ENV{'REQUEST_METHOD'} = 'POST';
$ENV{'CONTENT_TYPE'} = 'application/x-www-form-urlencoded';
$ENV{'CONTENT_LENGTH'} = length($request_body);
$ENV{'HTTP_HOK'} = 'gahaha';
# Create instance.
my $r = APR::Emulate::PSGI->new(); # In CGI mode, no environment is passed in.
isa_ok(
$r,
'APR::Emulate::PSGI',
'Object is instantiated.',
);
# Verify that data is going in as expected (request).
SKIP: {
skip(
'Not yet implemented: $r->connection()',
1,
) unless $r->can('connection');
is(
$r->connection()->remote_ip(),
'192.168.1.1',
'Remote address is available.',
);
}
is(
$r->method(),
'POST',
'Request method is available.',
);
is(
$r->headers_in()->header('CONTENT_TYPE'),
'application/x-www-form-urlencoded',
'Content-type is available.',
);
is(
$r->headers_in()->header('CONTENT_LENGTH'),
length($request_body),
'Content length is available.',
);
is(
$r->headers_in()->header('HTTP_HOK'),
'gahaha',
'Custom header is available.',
);
{
local *STDIN = $fh_in;
my $actual;
is(
$r->read($actual, length($request_body)),
( run in 0.703 second using v1.01-cache-2.11-cpan-39bf76dae61 )