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

Reply via email to