This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update HTTP-Tiny to CPAN version 0.052
[perl5.git] / cpan / HTTP-Tiny / t / 140_proxy.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use File::Basename;
7 use Test::More 0.88;
8
9 use HTTP::Tiny;
10
11 # Require a true value
12 for my $proxy (undef, "", 0){
13     local $ENV{all_proxy} = undef;
14     local $ENV{ALL_PROXY} = undef;
15     local $ENV{http_proxy} = $proxy;
16     my $c = HTTP::Tiny->new();
17     ok(!defined $c->http_proxy);
18 }
19
20 # trailing / is optional
21 for my $proxy ("http://localhost:8080/", "http://localhost:8080"){
22     local $ENV{http_proxy} = $proxy;
23     my $c = HTTP::Tiny->new();
24     is($c->http_proxy, $proxy);
25 }
26
27 # http_proxy must be http://<host>:<port> format
28 {
29     local $ENV{http_proxy} = "localhost:8080";
30     eval {
31         my $c = HTTP::Tiny->new();
32     };
33     like($@, qr{http_proxy URL must be in format http\[s\]://\[auth\@\]<host>:<port>/});
34 }
35
36 # Explicitly disable proxy
37 {
38     local $ENV{all_proxy} = "http://localhost:8080";
39     local $ENV{http_proxy} = "http://localhost:8080";
40     local $ENV{https_proxy} = "http://localhost:8080";
41     my $c = HTTP::Tiny->new(
42         proxy => undef,
43         http_proxy => undef,
44         https_proxy => undef,
45     );
46     ok(!defined $c->proxy, "proxy => undef disables ENV proxy");
47     ok(!defined $c->http_proxy, "http_proxy => undef disables ENV proxy");
48     ok(!defined $c->https_proxy, "https_proxy => undef disables ENV proxy");
49 }
50
51 # case variations
52 for my $var ( qw/http_proxy https_proxy all_proxy/ ) {
53     my $proxy = "http://localhost:8080";
54     for my $s ( uc($var), lc($var) ) {
55         local $ENV{$s} = $proxy;
56         my $c = HTTP::Tiny->new();
57         my $m = ($s =~ /all/i) ? 'proxy' : lc($s);
58         is( $c->$m, $proxy, "set $m from $s" );
59     }
60 }
61
62 # ignore HTTP_PROXY with REQUEST_METHOD
63 {
64     local $ENV{HTTP_PROXY} = "http://localhost:8080";
65     local $ENV{REQUEST_METHOD} = 'GET';
66     my $c = HTTP::Tiny->new();
67     ok(!defined $c->http_proxy,
68         "http_proxy not set from HTTP_PROXY if REQUEST_METHOD set");
69
70 }
71
72 done_testing();