use Test::More; use strict; use warnings FATAL => 'all'; use Dancer::Request; my $custom_env = { 'QUERY_STRING' => 'foo=bar', 'PATH_INFO' => '/stuff', 'REQUEST_METHOD' => 'GET', 'XAUTHORITY' => '/var/run/gdm/auth-for-sukria-6en6nX/database', 'HTTP_ACCEPT' => 'image/png,image/*;q=0.8,*/*;q=0.5; text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5; Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5', 'HTTP_ACCEPT_LANGUAGE' => 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3; fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3', 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7; ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_HOST' => 'localhost:3000; localhost:3000', 'HTTP_KEEP_ALIVE' => '300; 300', 'HTTP_ACCEPT_ENCODING' => 'gzip,deflate; gzip,deflate', 'HTTP_CONNECTION' => 'keep-alive; keep-alive', }; my @http_env = grep /^HTTP_/, keys (%$custom_env); plan tests => 3 + (2 * scalar(@http_env)); my $req = Dancer::Request->new($custom_env); is $req->path, '/stuff', 'path is set from custom env'; is $req->method, 'GET', 'method is set from custom env'; is_deeply scalar($req->params), {foo => 'bar'}, 'params are set from custom env'; foreach my $http (@http_env) { my $key = lc $http; $key =~ s/^http_//; is $req->{$key}, $custom_env->{$http}, "$http is found in request ($key)"; is $req->$key, $custom_env->{$http}, "$key is an accessor"; }