|
Packit |
3f4df8 |
#!perl
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
use strict;
|
|
Packit |
3f4df8 |
use warnings;
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
use File::Basename;
|
|
Packit |
3f4df8 |
use Test::More 0.88;
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
use lib 't';
|
|
Packit |
3f4df8 |
use Util qw[ monkey_patch ];
|
|
Packit |
3f4df8 |
use HTTP::Tiny;
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
BEGIN {
|
|
Packit |
3f4df8 |
monkey_patch();
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# Require a true value
|
|
Packit |
3f4df8 |
for my $proxy (undef, "", 0){
|
|
Packit |
3f4df8 |
local $ENV{all_proxy} = undef;
|
|
Packit |
3f4df8 |
local $ENV{ALL_PROXY} = undef;
|
|
Packit |
3f4df8 |
local $ENV{http_proxy} = $proxy;
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new();
|
|
Packit |
3f4df8 |
ok(!defined $c->http_proxy);
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# trailing / is optional
|
|
Packit |
3f4df8 |
for my $proxy ("http://localhost:8080/", "http://localhost:8080"){
|
|
Packit |
3f4df8 |
local $ENV{http_proxy} = $proxy;
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new();
|
|
Packit |
3f4df8 |
is($c->http_proxy, $proxy);
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# http_proxy must be http://<host>:<port> format
|
|
Packit |
3f4df8 |
{
|
|
Packit |
3f4df8 |
local $ENV{http_proxy} = "localhost:8080";
|
|
Packit |
3f4df8 |
eval {
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new();
|
|
Packit |
3f4df8 |
};
|
|
Packit |
3f4df8 |
like($@, qr{http_proxy URL must be in format http\[s\]://\[auth\@\]<host>:<port>/});
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# Explicitly disable proxy
|
|
Packit |
3f4df8 |
{
|
|
Packit |
3f4df8 |
local $ENV{all_proxy} = "http://localhost:8080";
|
|
Packit |
3f4df8 |
local $ENV{http_proxy} = "http://localhost:8080";
|
|
Packit |
3f4df8 |
local $ENV{https_proxy} = "http://localhost:8080";
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new(
|
|
Packit |
3f4df8 |
proxy => undef,
|
|
Packit |
3f4df8 |
http_proxy => undef,
|
|
Packit |
3f4df8 |
https_proxy => undef,
|
|
Packit |
3f4df8 |
);
|
|
Packit |
3f4df8 |
ok(!defined $c->proxy, "proxy => undef disables ENV proxy");
|
|
Packit |
3f4df8 |
ok(!defined $c->http_proxy, "http_proxy => undef disables ENV proxy");
|
|
Packit |
3f4df8 |
ok(!defined $c->https_proxy, "https_proxy => undef disables ENV proxy");
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# case variations
|
|
Packit |
3f4df8 |
for my $var ( qw/http_proxy https_proxy all_proxy/ ) {
|
|
Packit |
3f4df8 |
my $proxy = "http://localhost:8080";
|
|
Packit |
3f4df8 |
for my $s ( uc($var), lc($var) ) {
|
|
Packit |
3f4df8 |
local $ENV{$s} = $proxy;
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new();
|
|
Packit |
3f4df8 |
my $m = ($s =~ /all/i) ? 'proxy' : lc($s);
|
|
Packit |
3f4df8 |
is( $c->$m, $proxy, "set $m from $s" );
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
# ignore HTTP_PROXY with REQUEST_METHOD
|
|
Packit |
3f4df8 |
{
|
|
Packit |
3f4df8 |
# in case previous clean-up failed for some reason
|
|
Packit |
3f4df8 |
delete local @ENV{'http_proxy', 'https_proxy', 'all_proxy',
|
|
Packit |
3f4df8 |
'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'};
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
local $ENV{HTTP_PROXY} = "http://localhost:8080";
|
|
Packit |
3f4df8 |
local $ENV{REQUEST_METHOD} = 'GET';
|
|
Packit |
3f4df8 |
my $c = HTTP::Tiny->new();
|
|
Packit |
3f4df8 |
ok(!defined $c->http_proxy,
|
|
Packit |
3f4df8 |
"http_proxy not set from HTTP_PROXY if REQUEST_METHOD set");
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
}
|
|
Packit |
3f4df8 |
|
|
Packit |
3f4df8 |
done_testing();
|