about summary refs log tree commit homepage
path: root/t/psgi_text.t
diff options
context:
space:
mode:
Diffstat (limited to 't/psgi_text.t')
-rw-r--r--t/psgi_text.t56
1 files changed, 34 insertions, 22 deletions
diff --git a/t/psgi_text.t b/t/psgi_text.t
index 6d8a518d..25599dd9 100644
--- a/t/psgi_text.t
+++ b/t/psgi_text.t
@@ -1,42 +1,54 @@
-# Copyright (C) 2016-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
-use strict;
-use warnings;
-use Test::More;
-use Email::MIME;
+use v5.12;
+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;
-use PublicInbox::Config;
 use_ok 'PublicInbox::WWW';
 use_ok 'PublicInbox::WwwText';
-my $config = PublicInbox::Config->new(\<<EOF);
-$cfgpfx.address=$addr
-$cfgpfx.inboxdir=$maindir
+my $config = cfg_new $tmpdir, <<EOF;
+[publicinbox "test"]
+        address = $addr
+        inboxdir = $maindir
 EOF
-is(0, system(qw(git init -q --bare), $maindir), "git init (main)");
+PublicInbox::Import::init_bare($maindir);
 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 $f = "$tmpdir/cfg";
-        open my $fh, '>', $f or die;
-        print $fh $res->content or die;
-        close $fh or die;
-        my $cfg = PublicInbox::Config->new($f);
+        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 $cfg = cfg_new $tmpdir, $content;
         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();