Commit | Line | Data |
134d6c1f |
1 | use strict; |
2 | use warnings FATAL => 'all'; |
3 | |
4 | use Test::More qw(no_plan); |
5 | |
b6bf9ed3 |
6 | use Web::Dispatch::ParamParser; |
134d6c1f |
7 | |
6f0e017f |
8 | my $param_sample = 'foo=bar&baz=quux&foo=%2F&xyzzy'; |
134d6c1f |
9 | my $unpacked = { |
10 | baz => [ |
11 | "quux" |
12 | ], |
13 | foo => [ |
14 | "bar", |
15 | "/" |
6f0e017f |
16 | ], |
17 | xyzzy => [ |
18 | 1 |
134d6c1f |
19 | ] |
20 | }; |
21 | |
22 | is_deeply( |
6f0e017f |
23 | Web::Dispatch::ParamParser::_unpack_params('foo=bar&baz=quux&foo=%2F&xyzzy'), |
134d6c1f |
24 | $unpacked, |
25 | 'Simple unpack ok' |
26 | ); |
27 | |
28 | my $env = { 'QUERY_STRING' => $param_sample }; |
29 | |
30 | is_deeply( |
b6bf9ed3 |
31 | Web::Dispatch::ParamParser::get_unpacked_query_from($env), |
134d6c1f |
32 | $unpacked, |
33 | 'Dynamic unpack ok' |
34 | ); |
35 | |
36 | is_deeply( |
b6bf9ed3 |
37 | $env->{+Web::Dispatch::ParamParser::UNPACKED_QUERY}, |
134d6c1f |
38 | $unpacked, |
39 | 'Unpack cached ok' |
40 | ); |
41 | |
6f0e017f |
42 | sub FakeBody::param { { baz => "quux", foo => [ "bar", "/" ], xyzzy => [ 1 ] } } |
ca2e9fb7 |
43 | |
44 | my $body_env = { |
45 | CONTENT_TYPE => "multipart/form-data", |
46 | CONTENT_LENGTH => 1, |
47 | +Web::Dispatch::ParamParser::UNPACKED_BODY_OBJECT => [ bless {}, "FakeBody" ] |
48 | }; |
49 | |
50 | is_deeply( |
51 | Web::Dispatch::ParamParser::get_unpacked_body_from($body_env), |
52 | $unpacked, |
53 | 'Body cached multipart ok' |
54 | ); |
55 | |
134d6c1f |
56 | 1; |