use Test::More tests => 2; use strict; use HTTP::Proxy; use HTTP::Proxy::HeaderFilter::simple; use t::Utils; # create the filter my $sub = sub { my ( $self, $headers, $message) = @_; $headers->header( X_Foo => 'Bar' ); }; my $filter = HTTP::Proxy::HeaderFilter::simple->new($sub); # create the proxy my $proxy = HTTP::Proxy->new( port => 0, max_clients => 0, max_connections => 2, ); # prepare the proxy and server $proxy->init; $proxy->agent->proxy( http => "" ); $proxy->push_filter( response => $filter ); my $url = $proxy->url; my $server = server_start(); my $serverurl = $server->url; # fork the proxy my @pids; push @pids, fork_proxy($proxy); # fork the HTTP server my $pid = fork; die "Unable to fork web server" if not defined $pid; if ( $pid == 0 ) { server_next($server) for 1 .. 2; exit 0; } push @pids, $pid; # # check that the correct transformation is applied # # for GET requests my $ua = LWP::UserAgent->new(); $ua->proxy( http => $url ); my $response = $ua->request( HTTP::Request->new( GET => $serverurl ) ); is( $response->header( "X-Foo" ), "Bar", "Proxy applied the transformation" ); # for HEAD requests $ua = LWP::UserAgent->new(); $ua->proxy( http => $url ); $response = $ua->request( HTTP::Request->new( HEAD => $serverurl ) ); is( $response->header( "X-Foo" ), "Bar", "Proxy applied the transformation" ); # wait for kids wait for @pids;