X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fpsgi_text.t;h=e4613945bd95e58a372eaa380a5606380999f038;hb=0ae89efce11e1e3b10a067c61c5b4cde30fa2b3b;hp=b7b5b2d456e1580c6576efe8d35175f99a39bdee;hpb=e6b7a7f5f70fb89a54ff158bc6c8b564149947e5;p=public-inbox.git diff --git a/t/psgi_text.t b/t/psgi_text.t index b7b5b2d4..e4613945 100644 --- a/t/psgi_text.t +++ b/t/psgi_text.t @@ -1,16 +1,16 @@ -# Copyright (C) 2016-2020 all contributors +# Copyright (C) 2016-2021 all contributors # License: AGPL-3.0+ use strict; use warnings; use Test::More; -use PublicInbox::MIME; +use PublicInbox::Eml; use PublicInbox::TestCommon; my ($tmpdir, $for_destroy) = tmpdir(); my $maindir = "$tmpdir/main.git"; my $addr = 'test-public@example.com'; my $cfgpfx = "publicinbox.test"; my @mods = qw(HTTP::Request::Common Plack::Test URI::Escape Plack::Builder); -require_mods(@mods); +require_mods(@mods, 'IO::Uncompress::Gunzip'); use_ok $_ foreach @mods; use PublicInbox::Import; use PublicInbox::Git; @@ -26,17 +26,36 @@ my $www = PublicInbox::WWW->new($config); test_psgi(sub { $www->call(@_) }, sub { my ($cb) = @_; - my $res; - $res = $cb->(GET('/test/_/text/help/')); - like($res->content, qr!public-inbox help.*!, - 'default help'); - $res = $cb->(GET('/test/_/text/config/raw')); + my $gunzipped; + my $req = GET('/test/_/text/help/'); + my $res = $cb->($req); + my $content = $res->content; + like($content, qr!public-inbox help.*!, 'default help'); + $req->header('Accept-Encoding' => 'gzip'); + $res = $cb->($req); + is($res->header('Content-Encoding'), 'gzip', 'got gzip encoding'); + is($res->header('Content-Type'), 'text/html; charset=UTF-8', + 'got gzipped HTML'); + IO::Uncompress::Gunzip::gunzip(\($res->content) => \$gunzipped); + is($gunzipped, $content, 'gzipped content is correct'); + + $req = GET('/test/_/text/config/raw'); + $res = $cb->($req); + $content = $res->content; + my $olen = $res->header('Content-Length'); my $f = "$tmpdir/cfg"; open my $fh, '>', $f or die; - print $fh $res->content or die; + print $fh $content or die; close $fh or die; my $cfg = PublicInbox::Config->new($f); is($cfg->{"$cfgpfx.address"}, $addr, 'got expected address in config'); + + $req->header('Accept-Encoding' => 'gzip'); + $res = $cb->($req); + is($res->header('Content-Encoding'), 'gzip', 'got gzip encoding'); + ok($res->header('Content-Length') < $olen, 'gzipped help is smaller'); + IO::Uncompress::Gunzip::gunzip(\($res->content) => \$gunzipped); + is($gunzipped, $content); }); done_testing();