add HTTP::Body dep
[catagits/Web-Simple.git] / t / param_parser.t
1 use strict;
2 use warnings FATAL => 'all';
3
4 use Test::More qw(no_plan);
5
6 use Web::Dispatch::ParamParser;
7
8 my $param_sample = 'foo=bar&baz=quux&foo=%2F&xyzzy';
9 my $unpacked = {
10   baz => [
11     "quux"
12   ],
13   foo => [
14     "bar",
15     "/"
16   ],
17   xyzzy => [
18     1
19   ]
20 };
21
22 is_deeply(
23   Web::Dispatch::ParamParser::_unpack_params('foo=bar&baz=quux&foo=%2F&xyzzy'),
24   $unpacked,
25   'Simple unpack ok'
26 );
27
28 my $env = { 'QUERY_STRING' => $param_sample };
29
30 is_deeply(
31   Web::Dispatch::ParamParser::get_unpacked_query_from($env),
32   $unpacked,
33   'Dynamic unpack ok'
34 );
35
36 is_deeply(
37   $env->{+Web::Dispatch::ParamParser::UNPACKED_QUERY},
38   $unpacked,
39   'Unpack cached ok'
40 );
41
42 sub FakeBody::param { { baz => "quux", foo => [ "bar", "/" ], xyzzy => [ 1 ] } }
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
56 1;