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