X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FWeb%2FSimple%2FApplication.pm;h=51fa78e3d4f56ad6782b6a28394fcc4ec613ffa6;hb=9f3d2dd904535ac70f07f0189fd2e0f0c643812a;hp=88f025e61ada006c400c0ddc58787b471f90937c;hpb=d96756e81118d31b2e23987ae909aafd7e87269e;p=catagits%2FWeb-Simple.git diff --git a/lib/Web/Simple/Application.pm b/lib/Web/Simple/Application.pm index 88f025e..51fa78e 100644 --- a/lib/Web/Simple/Application.pm +++ b/lib/Web/Simple/Application.pm @@ -89,11 +89,20 @@ sub _test_request_spec_to_http_request { my $request = HTTP::Request->new($method => $path); - if (($method eq 'POST' or $method eq 'PUT') and @rest) { + my @params; + + while (my ($header, $value) = splice(@rest, 0, 2)) { + unless ($header =~ s/:$//) { + push @params, $header, $value; + } + $request->headers->push_header($header, $value); + } + + if (($method eq 'POST' or $method eq 'PUT') and @params) { my $content = do { require URI; my $url = URI->new('http:'); - $url->query_form(@rest); + $url->query_form(@params); $url->query; }; $request->header('Content-Type' => 'application/x-www-form-urlencoded'); @@ -291,6 +300,25 @@ calls ->new, or as an object method ... in which case it doesn't. Used for running your application under stand-alone CGI and FCGI modes. +I should document this more extensively but run_if_script will call it when +you need it, so don't worry about it too much. + +=head2 run_test_request + + my $res = $app->run_test_request(GET => '/'); + + my $res = $app->run_test_request(POST => '/' => %form); + + my $res = $app->run_test_request($http_request); + +Accepts either an L object or ($method, $path) and runs that +request against the application, returning an L object. + +If the HTTP method is POST or PUT, then a series of pairs can be passed after +this to create a form style message body. If you need to test an upload, then +create an L object by hand or use the C subroutine +provided by L. + =head1 AUTHORS See L for authors.