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?'); -- Boris