httpd-test-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Boris Zentner <...@2bz.de>
Subject cookie_jar ignored with requests_redirectable => 1
Date Tue, 27 Jul 2004 21:15:27 GMT
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?');

-- 
Boris

Mime
View raw message