The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test::More;
use CGI::Application;

eval { require CGI::PSGI; };
# XXX, really, we need CGI::PSGI 0.09 or later.
if ($@) {
   plan 'skip_all' => 'CGI::PSGI is not available';
}
else {
  plan 'no_plan';
}


# Set up a CGI environment
my $env;
$env->{REQUEST_METHOD}  = 'GET';
$env->{QUERY_STRING}    = 'game=chess&game=checkers&weather=dull';
$env->{PATH_INFO}       = '/somewhere/else';
$env->{PATH_TRANSLATED} = '/usr/local/somewhere/else';
$env->{SCRIPT_NAME}     = '/cgi-bin/foo.cgi';
$env->{SERVER_PROTOCOL} = 'HTTP/1.0';
$env->{SERVER_PORT}     = 8080;
$env->{SERVER_NAME}     = 'the.good.ship.lollypop.com';
$env->{REQUEST_URI}     = "$env->{SCRIPT_NAME}$env->{PATH_INFO}?$env->{QUERY_STRING}";
$env->{HTTP_LOVE}       = 'true';

package TestApp;
use base 'CGI::Application';
sub setup {
    my $self = shift;
    $self->run_modes(
        start => sub { 'Hello World' },
    );
}

package main;

my $app = TestApp->new( QUERY => CGI::PSGI->new($env) );

my $response = $app->run_as_psgi;

is_deeply $response, [
    '200',
    [ 'Content-Type' => 'text/html; charset=ISO-8859-1' ],
    [ 'Hello World' ],
],
"run_as_psgi: reality check basic response";