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