httpd-test-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: cookie_jar ignored with requests_redirectable => 1
Date Wed, 28 Jul 2004 08:29:31 GMT
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 => 'bzm@2bz.de', 
>   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:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Mime
View raw message