use strict; use warnings;
use Test::More tests => 3;
use Plack::Test;
use Plack::Builder;
use HTTP::Request::Common;
test_psgi
app => builder {
enable 'Precompressed', rules => sub { s!^/?!/z/! };
sub { return [ 200, [ 'Content-Type' => 'text/plain' ], [ $_[0]{'PATH_INFO'} ] ] };
},
client => sub {
my $res = shift->( GET 'http://localhost/foo', 'Accept-Encoding' => 'gzip' );
is $res->content(), '/z/foo', 'Rules can rewrite the path ...';
};
{
my $hkey = 'HTTP_HOST';
my $zhost = 'gzip.assets.example.com';
test_psgi
app => builder {
enable 'Precompressed', env_keys => [ $hkey ], rules => sub { $_[0]{ $hkey } = $zhost };
sub { return [ 200, [ 'Content-Type' => 'text/plain' ], [ $_[0]{ $hkey } ] ] };
},
client => sub {
my $res = shift->( GET 'http://localhost/foo', 'Accept-Encoding' => 'gzip' );
is $res->content(), $zhost, '... and with env_keys, anything else too';
};
}
{
my @key = qw( HTTP_HOST REMOTE_ADDR );
my $expected = join ' ', sort @key;
my $got;
test_psgi
app => builder {
enable 'Precompressed', env_keys => \@key, rules => sub { $got = join ' ', sort keys %{$_[0]} };
sub { return [ 201, [], [] ] };
},
client => sub {
my $res = shift->( GET 'http://localhost/foo', 'Accept-Encoding' => 'gzip' );
is $got, $expected, '... but no more and no less than the given env_keys';
};
}