David?
Boris Zentner wrote:
Hi,
recently I try to use Apache::Test with HTTP::Cookies. But it did not work as expected. I suppose the way to add a cookie_jar to A::T was with 'Apache::TestRequest::user_agent'. I read the docs from Apache::TestRequest::user_agent. Here is the relevant part of it.
And finally, the semantics of the "requests_redirectable" parameter is different than for "LWP::UserAgent": It either follows redirects for a request, or it doesn't. Thus "requests_redirectable" is a boolean value instead of the array reference that "LWP::UserAgent" expects. To
This implies to me that I have the choice to enable or disable redirects for this useragent with a bool value.
Apache::TestRequest::user_agent(
reset => 1, cookie_jar => $cookie_jar, requests_redirectable => 1 );
But this way the cookies are ignored. I expected that HTTP::Cookies->extract_cookies is called after every request. Therefor I create the cookie_jar from
package My::Cookies; use base 'HTTP::Cookies'; sub extract_cookies { warn "extract_cookies!!!"; shift->SUPER::extract_cookies(@_); }
To get it work, I need to parse the cookie headers myself or
Apache::TestRequest::user_agent(
reset => 1, cookie_jar => $cookie_jar, requests_redirectable => 0 );
But here I need to redirect myself or do it with the undocumented
Apache::TestRequest::user_agent(
reset => 1, cookie_jar => $cookie_jar, requests_redirectable => [qw~x y~]
);
that does anything I want but is undocumented!
Here is a part from Apache::TestRequest::user_agent that looks wrong to me.
my $redir = $args->{requests_redirectable}; if (ref $redir and (@$redir > 1 or $redir->[0] ne 'POST')) { $RedirectOK = 1; } else { $RedirectOK = 0; }
############################## And a test script.
use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw'GET POST'; plan tests => 3, have 'LWP'; require HTTP::Cookies; require HTML::Form; use Data::Dumper;
package My::Cookies;
use base 'HTTP::Cookies';
sub extract_cookies {
warn "extract_cookies!!!";
shift->SUPER::extract_cookies(@_);
}
package main;
my $cookie_jar = My::Cookies->new;
Apache::TestRequest::user_agent(
reset => 1, cookie_jar => $cookie_jar, requests_redirectable => [qw/c d/]
);
# check if we can request a page
my $r = GET '/x';
ok t_cmp( $r->code, 200, '$r->code == HTTP_OK?');
ok t_cmp( qr:\Qnew account:, $r->content, "new account page" );
$r = POST '/y', [ email => '[EMAIL PROTECTED]', login => 'boris16', ];
ok t_cmp( $r->code, 200, '$r->code == HTTP_OK?');
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com