use Test::More; use HTTP::Proxy qw( :log ); my $proxy; $proxy = HTTP::Proxy->new; # # default values # my %meth = ( agent => undef, chunk => 4096, daemon => undef, host => 'localhost', logfh => *main::STDERR, max_connections => 0, max_keep_alive_requests => 10, port => 8080, request => undef, response => undef, hop_headers => undef, logmask => 0, x_forwarded_for => 1, conn => 0, client_socket => undef, # loop is not used/internal for now ); plan tests => 15 + keys %meth; for my $key ( sort keys %meth ) { no strict 'refs'; is( $proxy->$key(), $meth{$key}, "$key has the correct default" ); } like( $proxy->via(), qr!\(HTTP::Proxy/$HTTP::Proxy::VERSION\)$!, "via has the correct default"); # test deprecated accessors $proxy = HTTP::Proxy->new( maxserve => 127, maxconn => 255 ); is( $proxy->max_keep_alive_requests, 127, "deprecated maxserve"); is( $proxy->max_connections, 255, "deprecated maxconn"); # # test generated accessors (they're all the same) # is( $proxy->port(8888), $meth{port}, "Set return the previous value" ); is( $proxy->port, 8888, "Set works" ); # # other accessors # $proxy->max_clients( 666 ); is( $proxy->engine->max_clients, 666, "max_clients correctly delegated" ); # check the url() method $proxy->port(0); # this spits a (normal) warning, but we clean it away { local *OLDERR; # swap errputs open OLDERR, ">&STDERR" or die "Could not duplicate STDERR: $!"; close STDERR; # the actual test is( $proxy->url, undef, "We do not have a url yet" ); # put things back to normal close STDERR; open STDERR, ">&OLDERR" or die "Could not duplicate OLDERR: $!"; close OLDERR; } $proxy->_init_daemon; ok( $proxy->url =~ '^$http://' . $proxy->host . ':\d+/$', "url looks good" ); # check the timeout $proxy->_init_agent; is( $proxy->agent->timeout, 60, "Default agent timeout of 60 secs" ); is( $proxy->timeout(120), 60, "timeout() returns the old value" ); is( $proxy->agent->timeout, 120, "New agent timeout value of 120 secs" ); # # the known_methods() method # my @all = $proxy->known_methods(); my @http = $proxy->known_methods('HTTP'); is_deeply( \@http, [ $proxy->known_methods('http') ], 'known_methods() is case insensitive' ); my %dav = map { $_ => 1 } $proxy->known_methods('webdav'); my %delta = map { $_ => 1 } $proxy->known_methods('DelTaV'); is( scalar grep( { $dav{$_} } @http ), scalar @http, 'WebDAV contains HTTP' ); is( scalar grep( { $delta{$_} } keys %dav ), scalar keys %dav, 'DeltaV contains WebDAV' ); my %all = ( %dav, %delta, map { $_ => 1 } @http ); is_deeply( [ sort keys %all ], [ sort @all ], 'know_methods() returns all methods' );