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