ASP4
view release on metacpan or search on metacpan
lib/ASP4/UserAgent.pm view on Meta::CPAN
no warnings 'uninitialized';
(my ($uri_no_args), $ENV{QUERY_STRING} ) = split /\?/, $req->uri;
$ENV{SERVER_NAME} = $ENV{HTTP_HOST} = 'localhost';
unless( $req->uri =~ m@^/handlers@ )
{
$ENV{SCRIPT_FILENAME} = $s->config->web->www_root . $uri_no_args;
if( -d $ENV{SCRIPT_FILENAME} )
{
$ENV{SCRIPT_FILENAME} =~ s{/$}{};
$ENV{SCRIPT_FILENAME} .= "/index.asp";
}# end if()
$ENV{SCRIPT_NAME} = $uri_no_args;
}# end unless()
# User-Agent:
$req->header( 'User-Agent' => 'test-useragent v2.0' );
$ENV{HTTP_USER_AGENT} = 'test-useragent v2.0';
# Cookies:
$req->header( 'Cookie' => $ENV{HTTP_COOKIE} = $s->http_cookie );
if( $ENV{REQUEST_METHOD} =~ m/^post$/i )
{
# Set up the basic params:
return ASP4::SimpleCGI->new(
querystring => $ENV{QUERY_STRING},
body => $req->content,
content_type => $req->headers->{'content-type'},
content_length => $req->headers->{'content-length'},
);
}
else
{
# Simple 'GET' request:
return ASP4::SimpleCGI->new( querystring => $ENV{QUERY_STRING} );
}# end if()
}# end _setup_cgi()
sub DESTROY
{
my $s = shift;
undef(%$s);
}# end DESTROY()
1;# return true:
=pod
=head1 NAME
ASP4::UserAgent - Execute ASP4 requests without a web server.
=head1 SYNOPSIS
B<NOTE:> 99.99% of the time you will access this via L<ASP4::API>.
my HTTP::Response $res = $api->ua->get('/index.asp?foo=bar');
my $res = $api->ua->post('/handlers/user.login', [
username => 'willy',
password => 'wonka',
]);
my $res = $api->ua->upload('/handlers/file.upload', [
foo => 'bar',
baz => 'bux',
file => ['/home/john/avatar.jpg']
]);
# Some form testing:
my ($form) = HTML::Form->parse( $res->content, '/' );
$form->find_input('username')->value('bob');
my $res = $api->ua->submit_form( $form );
# Add/remove a cookie:
$api->ua->add_cookie( "the-boss" => "me" );
$api->remove_cookie( "the-boss" );
=head1 DESCRIPTION
Enables unit-testing ASP4 applications by providing the ability to execuite web
pages from your code, without a webserver.
=head1 PUBLIC METHODS
=head2 get( $url )
Calls C<$url> and returns the L<HTTP::Response> result.
=head2 post( $url, $args )
Calls C<$url> with C<$args> and returns the L<HTTP::Response> result.
=head2 upload( $url, $args )
Calls C<$url> with C<$args> and returns the L<HTTP::Response> result.
=head2 submit_form( HTML::Form $form )
Submits the C<$form> and returns the L<HTTP::Response> result.
=head2 add_cookie( $name, $value )
Adds the cookie to all subsequent requests.
=head2 remove_cookie( $name )
Removes the cookie (if it exists).
=head1 SEE ALSO
L<HTTP::Response> and L<HTML::Form>
=head1 BUGS
It's possible that some bugs have found their way into this release.
Use RT L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=ASP4> to submit bug reports.
( run in 1.301 second using v1.01-cache-2.11-cpan-39bf76dae61 )