about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/psgi_text.t33
1 files changed, 26 insertions, 7 deletions
diff --git a/t/psgi_text.t b/t/psgi_text.t
index 833bcaba..9867feaa 100644
--- a/t/psgi_text.t
+++ b/t/psgi_text.t
@@ -10,7 +10,7 @@ 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!<title>public-inbox help.*</title>!,
-                '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!<title>public-inbox help.*</title>!, '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();