]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/psgi_text.t
www: drop --subject from "git send-email" instructions
[public-inbox.git] / t / psgi_text.t
index 77fc9ee2dac45dd4b1782f962d803d345876e0cf..e4613945bd95e58a372eaa380a5606380999f038 100644 (file)
@@ -1,16 +1,16 @@
-# Copyright (C) 2016-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2021 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 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!<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();