You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@locus.apache.org on 2000/10/02 22:25:19 UTC
cvs commit: modperl/lib/Apache test.pm
dougm 00/10/02 13:25:16
Modified: lib/Apache test.pm
Log:
updates from ken w.
Revision Changes Path
1.18 +77 -18 modperl/lib/Apache/test.pm
Index: test.pm
===================================================================
RCS file: /home/cvs/modperl/lib/Apache/test.pm,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- test.pm 2000/09/28 21:16:13 1.17
+++ test.pm 2000/10/02 20:25:13 1.18
@@ -57,7 +57,7 @@
User $args{user}
Group $args{group}
ServerName localhost
-DocumentRoot $DIR/t/eg
+DocumentRoot $DIR/t
$args{modules}
@@ -73,7 +73,10 @@
AddType text/html .html
# Look in ./blib/lib
-PerlModule ExtUtils::testlib
+#PerlModule ExtUtils::testlib
+<Perl>
+ use lib "$DIR/blib/lib", "$DIR/t/lib";
+</Perl>
$args{include}
EOF
@@ -82,6 +85,7 @@
}
sub _ask {
+ # Just a function for asking the user questions
my ($prompt, $default, $mustfind) = @_;
my $response;
@@ -193,8 +197,8 @@
}
}
-
sub test {
+ shift() if UNIVERSAL::isa($_[0], __PACKAGE__);
my $s = $_[1] ? "ok $_[0]\n" : "not ok $_[0]\n";
if($ENV{MOD_PERL}) {
Apache->request->print($s);
@@ -205,21 +209,26 @@
}
sub fetch {
- my($ua, $url);
- if(@_ == 1) {
- $url = shift;
- $ua = $UA;
- }
- else {
- ($ua, $url) = @_;
- }
- unless ($url =~ /^http/) {
- $url = "http://$net::httpserver${url}";
- }
+ # Old code calls fetch() as a function, new code as a method
+ shift() if UNIVERSAL::isa($_[0], __PACKAGE__);
+ my ($ua, $url) = (@_ == 1 ? ($UA, shift()) : @_);
+ my $request = ref $url ? $url : {uri=>$url};
+
+ # Set some defaults
+ $ENV{PORT} ||= 8529; # For mod_perl's own tests
+ $request->{method} ||= 'GET';
+ $request->{content} = '' unless exists $request->{content};
+ $request->{uri} = "http://localhost:$ENV{PORT}$request->{uri}"
+ unless $request->{uri} =~ /^http/;
+ $request->{headers}{Content_Type} = 'application/x-www-form-urlencoded'
+ if (!$request->{headers} and $request->{method} eq 'POST'); # Is this necessary?
+
+ # Create & send the request
+ $request->{headers} = new HTTP::Headers(%{$request->{headers}||{}});
+ my $req = new HTTP::Request(@{$request}{'method','uri','headers','content'});
+ my $response = $ua->request($req);
- my $request = new HTTP::Request('GET', $url);
- my $response = $ua->request($request, undef, undef);
- $response->content;
+ return wantarray ? ($response->content, $response) : $response->content;
}
sub simple_fetch {
@@ -340,6 +349,7 @@
}
sub MM_test {
+ # Writes the test section for the Makefile
shift(); # Don't need package name
my %conf = @_;
@@ -569,9 +579,58 @@
*MY::test = sub { Apache::test->MM_test(%params) };
+=head2 fetch
+
+ Apache::test->fetch($request);
+ Apache::test->fetch($user_agent, $request);
+
+Call this method in a test script in order to fetch a page from the
+running web server. If you pass two arguments, the first should be an
+LWP::UserAgent object, and the second should specify the request to
+make of the server. If you only pass one argument, it specifies the
+request to make.
+
+The request can be specified either by a simple string indicating the
+URI to fetch, or by a hash reference, which gives you more control
+over the request. The following keys are recognized in the hash:
+
+=over 4
+
+=item * uri
+
+The URI to fetch from the server. If the URI does not begin with
+"http", we prepend "http://localhost:$PORT" so that we make requests
+of the test server.
+
+=item * method
+
+The request method to use. Default is 'GET'.
+
+=item * content
+
+The request content body. Typically used to simulate HTML fill-out
+form submission for POST requests. Default is null.
+
+=item * headers
+
+A hash of headers you want sent with the request. You might use this
+to send cookies or provide some application-specific header.
+
+=back
+
+If you don't provide a 'headers' parameter and you set the 'method'
+to 'POST', then we assume that you're trying to simulate HTML form
+submission and we add a 'Content_Type' header with a value of
+'application/x-www-form-urlencoded'.
+
+In a scalar context, fetch() returns the content of the web server's
+response. In a list context, fetch() returns the content and the
+HTTP::Response object itself. This can be handy if you need to check
+the response headers, or the HTTP return code, or whatever.
+
=head1 EXAMPLES
-No good examples yet. Examples are welcome. In the meantime, see
+No good examples yet. Example submissions are welcome. In the meantime, see
L<http://forum.swarthmore.edu/~ken/modules/Apache-AuthCookie/> , which
I'm retrofitting to use Apache::test.