Blame t/140_proxy.t

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();