Commit | Line | Data |
6f5fb9a7 |
1 | #!perl |
2 | |
cc263caa |
3 | use Test::More tests => 11; |
6f5fb9a7 |
4 | |
5 | use strict; |
6 | use warnings; |
7 | |
6f5fb9a7 |
8 | use HTTP::Request; |
9 | use HTTP::Request::AsCGI; |
8596f5a5 |
10 | use Encode; |
6f5fb9a7 |
11 | |
cc263caa |
12 | $ENV{__PRESERVE_ENV_TEST} = 1; |
13 | |
bb6e4a92 |
14 | my $r = HTTP::Request->new( GET => 'http://www.host.com/cgi-bin/script.cgi/my%20path%2F?a=1&b=2', [ 'X-Test' => 'Test' ] ); |
8596f5a5 |
15 | my %e = ( |
16 | SCRIPT_NAME => '/cgi-bin/script.cgi', |
17 | # test a utf-8 PATH_INFO, sort of (and safe decoding) |
18 | PATH_INFO => |
19 | '/foo%2F%C3%90%C2%91%C3%90%C2%AF%C3%A9%C2%99%C2%B0%C3%A8%C2%8C%C2%8E', |
20 | ); |
b332ee65 |
21 | my $c = HTTP::Request::AsCGI->new( $r, %e ); |
22 | $c->stdout(undef); |
6f5fb9a7 |
23 | |
24 | $c->setup; |
25 | |
26 | is( $ENV{GATEWAY_INTERFACE}, 'CGI/1.1', 'GATEWAY_INTERFACE' ); |
27 | is( $ENV{HTTP_HOST}, 'www.host.com:80', 'HTTP_HOST' ); |
30efa07d |
28 | is( $ENV{HTTP_X_TEST}, 'Test', 'HTTP_X_TEST' ); |
4d6b96d8 |
29 | is( decode('UTF-8', $ENV{PATH_INFO}), '/foo/БЯ陰茎', 'PATH_INFO'); |
6f5fb9a7 |
30 | is( $ENV{QUERY_STRING}, 'a=1&b=2', 'QUERY_STRING' ); |
ca38286c |
31 | is( $ENV{SCRIPT_NAME}, '/cgi-bin/script.cgi', 'SCRIPT_NAME' ); |
6f5fb9a7 |
32 | is( $ENV{REQUEST_METHOD}, 'GET', 'REQUEST_METHOD' ); |
33 | is( $ENV{SERVER_NAME}, 'www.host.com', 'SERVER_NAME' ); |
34 | is( $ENV{SERVER_PORT}, '80', 'SERVER_PORT' ); |
35 | |
cc263caa |
36 | is( $ENV{__PRESERVE_ENV_TEST}, 1, 'PRESERVE_ENV' ); |
37 | |
6f5fb9a7 |
38 | $c->restore; |
39 | |
40 | is( $ENV{GATEWAY_INTERFACE}, undef, 'No CGI env after restore' ); |