test to check cached multipart bodies and arrayification
[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
134d6c1f 8my $param_sample = 'foo=bar&baz=quux&foo=%2F';
9my $unpacked = {
10 baz => [
11 "quux"
12 ],
13 foo => [
14 "bar",
15 "/"
16 ]
17};
18
19is_deeply(
b6bf9ed3 20 Web::Dispatch::ParamParser::_unpack_params('foo=bar&baz=quux&foo=%2F'),
134d6c1f 21 $unpacked,
22 'Simple unpack ok'
23);
24
25my $env = { 'QUERY_STRING' => $param_sample };
26
27is_deeply(
b6bf9ed3 28 Web::Dispatch::ParamParser::get_unpacked_query_from($env),
134d6c1f 29 $unpacked,
30 'Dynamic unpack ok'
31);
32
33is_deeply(
b6bf9ed3 34 $env->{+Web::Dispatch::ParamParser::UNPACKED_QUERY},
134d6c1f 35 $unpacked,
36 'Unpack cached ok'
37);
38
ca2e9fb7 39sub FakeBody::param { { baz => "quux", foo => [ "bar", "/" ] } }
40
41my $body_env = {
42 CONTENT_TYPE => "multipart/form-data",
43 CONTENT_LENGTH => 1,
44 +Web::Dispatch::ParamParser::UNPACKED_BODY_OBJECT => [ bless {}, "FakeBody" ]
45};
46
47is_deeply(
48 Web::Dispatch::ParamParser::get_unpacked_body_from($body_env),
49 $unpacked,
50 'Body cached multipart ok'
51);
52
134d6c1f 531;