Apache2-ASP
view release on metacpan or search on metacpan
lib/Apache2/ASP/Test/UserAgent.pm view on Meta::CPAN
{
no warnings 'uninitialized';
%ENV = ( DOCUMENT_ROOT => $ENV{DOCUMENT_ROOT} );
}
$ENV{REQUEST_METHOD} = 'POST';
my $cgi = $s->_setup_cgi( $req );
$ENV{CONTENT_TYPE} = 'application/x-www-form-urlencoded';
my $r = Apache2::ASP::Mock::RequestRec->new();
$r->uri( $uri );
$r->args( $cgi->{querystring} );
$r->{headers_in}->{Cookie} = $ENV{HTTP_COOKIE};
$s->context->setup_request( $r, $cgi );
return $s->_setup_response( $s->context->execute() );
}# end post()
#==============================================================================
sub upload
{
my ($s, $uri, $args) = @_;
chdir( $s->{cwd} );
no strict 'refs';
undef(${"$ContextClass\::instance"});
{
no warnings 'uninitialized';
%ENV = ( DOCUMENT_ROOT => $ENV{DOCUMENT_ROOT} );
}
my $req = POST $uri, Content_Type => 'form-data', Content => $args;
$ENV{REQUEST_METHOD} = 'POST';
$ENV{CONTENT_TYPE} = $req->headers->{'content-type'};
my $cgi = $s->_setup_cgi( $req );
$ENV{CONTENT_TYPE} = 'multipart/form-data';
my $r = Apache2::ASP::Mock::RequestRec->new();
$r->uri( $uri );
$r->args( $cgi->{querystring} );
$r->{headers_in}->{Cookie} = $ENV{HTTP_COOKIE};
$s->context->setup_request( $r, $cgi );
require Apache2::ASP::UploadHook;
my $handler_resolver = $s->context->config->web->handler_resolver;
$s->context->config->load_class( $handler_resolver );
my $hook_obj = Apache2::ASP::UploadHook->new(
handler_class => $handler_resolver->new()->resolve_request_handler( $uri ),
);
my $hook_ref = sub { $hook_obj->hook( @_ ) };
# Now call the upload hook...
require Apache2::ASP::Test::UploadObject;
foreach my $uploaded_file ( keys( %{ $cgi->{uploads} } ) )
{
my $tmpfile = $cgi->upload_info($uploaded_file, 'tempname' );
my $filename = $cgi->upload_info( $uploaded_file, 'filename' );
my $ifh = IO::File->new;
$ifh->open($tmpfile, '<')
or die "Cannot open temp file '$tmpfile' for reading: $!";
binmode($ifh);
while( my $line = <$ifh> )
{
$hook_ref->(
Apache2::ASP::Test::UploadObject->new(
filename => $filename,
upload_filename => $filename
),
$line
);
}# end while()
close($ifh);
# One more *without* any data (this will signify and EOF condition):
$hook_ref->(
Apache2::ASP::Test::UploadObject->new(
filename => $filename,
upload_filename => $filename
),
undef
);
}# end foreach()
# NOW we can execute...
return $s->_setup_response( $s->context->execute() );
}# end upload()
#==============================================================================
sub submit_form
{
my ($s, $form) = @_;
chdir( $s->{cwd} );
no strict 'refs';
undef(${"$ContextClass\::instance"});
my $temp_referrer = $ENV{HTTP_REFERER};
my $req = $form->click;
{
no warnings 'uninitialized';
%ENV = ( DOCUMENT_ROOT => $ENV{DOCUMENT_ROOT} );
}
$ENV{REQUEST_METHOD} = uc( $req->method );
my $cgi = $s->_setup_cgi( $req );
$ENV{CONTENT_TYPE} = $form->enctype ? $form->enctype : 'application/x-www-form-urlencoded';
$ENV{HTTP_REFERER} = $temp_referrer;
my $r = Apache2::ASP::Mock::RequestRec->new();
$r->uri( $req->uri );
$r->args( $cgi->{querystring} );
$r->{headers_in}->{Cookie} = $ENV{HTTP_COOKIE};
$s->context->setup_request( $r, $cgi );
return $s->_setup_response( $s->context->execute() );
}# end submit_form()
#==============================================================================
( run in 0.991 second using v1.01-cache-2.11-cpan-39bf76dae61 )