use strict;
use warnings;
use Test::More qw(no_diag);
use Test::Requires qw( Plack::Middleware::Deflater LWP::UserAgent IO::Uncompress::Gunzip );
use Test::TCP;
use Plack::Loader;
use Plack::Request;
use HTTP::Response;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
use Plack::App::File;
use HTTP::Request::Common;
my $app = Plack::App::File->new( root => 't')->to_app;
$app = Plack::Middleware::Deflater->wrap($app);
open my $f, '>', "t/deflater_test.txt" or die $!;
print $f '1234567890' x 1000;
close $f;
END { unlink('t/deflater_test.txt') }
test_tcp(
client => sub {
my $port = shift;
my $ua = LWP::UserAgent->new;
$ua->timeout(2);
my $req = GET ("http://localhost:$port/deflater_test.txt");
$req->header('Accept-Encoding', 'gzip');
my $res = $ua->request($req);
if ($res->is_success) {
gunzip \$res->content => \(my $output)
or die "gunzip failed: $GunzipError\n";
is(length($output), 10000);
}
else {
ok(0);
}
},
server => sub {
my $port = shift;
my $server = Plack::Loader->load('Twiggy', port => $port, host => '127.0.0.1');
$server->run($app);
},
);
done_testing();