1use strict; 2use warnings; 3 4use lib 'tlive/lib'; 5 6use Test::More; 7 8use AnyEvent; 9use AnyEvent::Impl::Perl; 10use AnyEvent::Socket; 11use IO::Socket; 12 13use App::TLSMe; 14use App::TLSMe::Logger; 15use FreePort; 16 17my $host = '127.0.0.1'; 18my $port = FreePort->get_free_port(); 19my $backend_host = '127.0.0.1'; 20my $backend_port = FreePort->get_free_port(); 21 22my $null = ''; 23open my $fh, '>', \$null; 24my $tlsme = App::TLSMe->new( 25 logger => App::TLSMe::Logger->new(fh => $fh), 26 cert_file => 'tlive/cert', 27 key_file => 'tlive/key', 28 listen => "$host:$port", 29 backend => "$backend_host:$backend_port" 30); 31 32my $response = ''; 33my $handle; $handle = AnyEvent::Handle->new( 34 connect => [$host, $port], 35 on_read => sub { 36 my ($handle) = @_; 37 38 $handle->push_read( 39 line => sub { 40 $response .= $_[1]; 41 } 42 ); 43 }, 44 on_error => sub { 45 $tlsme->stop; 46 }, 47 on_eof => sub { 48 $tlsme->stop; 49 } 50); 51 52$handle->push_write(<<"EOF"); 53GET / HTTP/1.1 54 55EOF 56 57$tlsme->run; 58 59is($response, 'HTTP/1.1 501 Not ImplementedContent-Length: 93'); 60 61done_testing; 62