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