use strict; use Test::More; use Test::Requires { 'CGI::Emulate::PSGI' => 0.10, 'CGI::Compile' => 0.03 }; use Plack::Test; use HTTP::Request::Common; use Plack::App::CGIBin; my $app = Plack::App::CGIBin->new(root => "t/Plack-Middleware/cgi-bin")->to_app; test_psgi app => $app, client => sub { my $cb = shift; my $res = $cb->(GET "http://localhost/hello.cgi?name=foo"); is $res->code, 200; is $res->content, "Hello foo counter=1"; $res = $cb->(GET "http://localhost/hello.cgi?name=bar"); is $res->code, 200; is $res->content, "Hello bar counter=2"; $res = $cb->(GET "http://localhost/hello2.cgi?name=foo"); is $res->code, 200; is $res->content, "Hello foo counter=1"; $res = $cb->(GET "http://localhost/hello3.cgi"); my $env = eval $res->content; is $env->{SCRIPT_NAME}, '/hello3.cgi'; is $env->{REQUEST_URI}, '/hello3.cgi'; $res = $cb->(GET "http://localhost/hello3.cgi/foo%20bar/baz"); is $res->code, 200; $env = eval $res->content || {}; is $env->{SCRIPT_NAME}, '/hello3.cgi'; is $env->{PATH_INFO}, '/foo bar/baz'; is $env->{REQUEST_URI}, '/hello3.cgi/foo%20bar/baz'; $res = $cb->(GET "http://localhost/hello4.cgi"); is $res->code, 404; $res = $cb->(GET "http://localhost/utf8.cgi"); is $res->code, 200; is length $res->content, 4; is $res->content, "\xe1\x83\xb7\n"; }; done_testing;