X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fcgi.t;h=96c627c384e8d3ce1acf1c3a83d3eba0140d280b;hb=238e593609daf5de1011519afef1691b529e6229;hp=97bdebd982a191e5cd96ec83620f097af7f721ae;hpb=a3cf35c675217ea60a461dd9be7cc5b55c2d5280;p=public-inbox.git diff --git a/t/cgi.t b/t/cgi.t index 97bdebd9..96c627c3 100644 --- a/t/cgi.t +++ b/t/cgi.t @@ -5,8 +5,9 @@ use strict; use warnings; use Test::More; -use Email::MIME; +use PublicInbox::Eml; use PublicInbox::TestCommon; +use PublicInbox::Import; require_mods(qw(Plack::Handler::CGI Plack::Util)); my ($tmpdir, $for_destroy) = tmpdir(); my $home = "$tmpdir/pi-home"; @@ -18,7 +19,7 @@ my $addr = 'test-public@example.com'; { is(1, mkdir($home, 0755), "setup ~/ for testing"); is(1, mkdir($pi_home, 0755), "setup ~/.public-inbox"); - is(0, system(qw(git init -q --bare), $maindir), "git init (main)"); + PublicInbox::Import::init_bare($maindir); open my $fh, '>', "$maindir/description" or die "open: $!\n"; print $fh "test for public-inbox\n"; @@ -38,13 +39,13 @@ use_ok 'PublicInbox::InboxWritable'; use_ok 'PublicInbox::Config'; my $cfg = PublicInbox::Config->new($pi_config); my $ibx = $cfg->lookup_name('test'); -my $im = PublicInbox::InboxWritable->new($ibx)->importer; +my $im = PublicInbox::InboxWritable->new($ibx)->importer(0); { local $ENV{HOME} = $home; # inject some messages: - my $mime = Email::MIME->new(<new(< To: You Cc: $addr @@ -54,10 +55,14 @@ Date: Thu, 01 Jan 1970 00:00:00 +0000 zzzzzz EOF - $im->add($mime); + ok($im->add($mime), 'added initial message'); + + $mime->header_set('Message-ID', ''); + $mime->body_str_set("z\n" x 1024); + ok($im->add($mime), 'added big message'); # deliver a reply, too - my $reply = Email::MIME->new(<new(< To: Me Cc: $addr @@ -71,10 +76,10 @@ Me wrote: what? EOF - $im->add($reply); + ok($im->add($mime), 'added reply'); my $slashy_mid = 'slashy/asdf@example.com'; - my $slashy = Email::MIME->new(<new(< To: Me Cc: $addr @@ -84,7 +89,7 @@ Date: Thu, 01 Jan 1970 00:00:01 +0000 slashy EOF - $im->add($slashy); + ok($im->add($slashy), 'added slash'); $im->done; my $res = cgi_run("/test/slashy/asdf\@example.com/raw"); @@ -98,14 +103,9 @@ EOF my $path = "/test/blahblah\@example.com/t.mbox.gz"; my $res = cgi_run($path); like($res->{head}, qr/^Status: 501 /, "search not-yet-enabled"); - my $indexed; - eval { - require DBD::SQLite; - require PublicInbox::SearchIdx; - my $s = PublicInbox::SearchIdx->new($ibx, 1); - $s->index_sync; - $indexed = 1; - }; + my $cmd = ['-index', $ibx->{inboxdir}, '--max-size=2k']; + my $opt = { 2 => \(my $err) }; + my $indexed = run_script($cmd, undef, $opt); if ($indexed) { $res = cgi_run($path); like($res->{head}, qr/^Status: 200 /, "search returned mbox"); @@ -116,9 +116,14 @@ EOF IO::Uncompress::Gunzip::gunzip(\$in => \$out); like($out, qr/^From /m, "From lines in mbox"); }; + $res = cgi_run('/test/toobig@example.com/'); + like($res->{head}, qr/^Status: 300 /, + 'did not index or return >max-size message'); + like($err, qr/skipping [a-f0-9]{40,}/, + 'warned about skipping large OID'); } else { like($res->{head}, qr/^Status: 501 /, "search not available"); - SKIP: { skip 'DBD::SQLite not available', 2 }; + SKIP: { skip 'DBD::SQLite not available', 4 }; } my $have_xml_treepp = eval { require XML::TreePP; 1 } if $indexed; @@ -153,7 +158,7 @@ sub cgi_run { my ($in, $out, $err) = ("", "", ""); my $rdr = { 0 => \$in, 1 => \$out, 2 => \$err }; run_script(['.cgi'], \%env, $rdr); - die "unexpected error: \$?=$?" if $?; + die "unexpected error: \$?=$? ($err)" if $?; my ($head, $body) = split(/\r\n\r\n/, $out, 2); { head => $head, body => $body, err => $err } }