1#!perl 2 3use strict; 4use warnings; 5 6use Test::More; 7use lib 't'; 8use Util qw[tmpfile monkey_patch set_socket_source]; 9 10use HTTP::Tiny; 11 12BEGIN { monkey_patch() } 13 14my %usage = ( 15 'get' => q/Usage: $http->get(URL, [HASHREF])/, 16 'mirror' => q/Usage: $http->mirror(URL, FILE, [HASHREF])/, 17 'request' => q/Usage: $http->request(METHOD, URL, [HASHREF])/, 18); 19 20my @cases = ( 21 ['get'], 22 ['get','http://www.example.com/','extra'], 23 ['get','http://www.example.com/','extra', 'extra'], 24 ['mirror'], 25 ['mirror','http://www.example.com/',], 26 ['mirror','http://www.example.com/','extra', 'extra'], 27 ['mirror','http://www.example.com/','extra', 'extra', 'extra'], 28 ['request'], 29 ['request','GET'], 30 ['request','GET','http://www.example.com/','extra'], 31 ['request','GET','http://www.example.com/','extra', 'extra'], 32); 33 34my $res_fh = tmpfile(); 35my $req_fh = tmpfile(); 36 37my $http = HTTP::Tiny->new; 38set_socket_source($req_fh, $res_fh); 39 40for my $c ( @cases ) { 41 my ($method, @args) = @$c; 42 eval {$http->$method(@args)}; 43 my $err = $@; 44 like ($err, qr/\Q$usage{$method}\E/, join("|",@$c) ); 45} 46 47my $res = eval{ $http->get("http://www.example.com/", { headers => { host => "www.example2.com" } } ) }; 48is( $res->{status}, 599, "Providing a Host header errors with 599" ); 49like( $res->{content}, qr/'Host' header/, "Providing a Host header gives right error message" ); 50 51done_testing; 52 53