X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fplack.t;h=f9a55e4366b5d98c4cad0d480a1dda4f08bc5668;hb=9bd675d33ad1e49bd2ebe12a1d216216e61380de;hp=7eb7d7f2814fda2c4977e4bb268c366d39a8952a;hpb=cfb8d16578e7f2f2e300f9f436205e4a8fc7f322;p=public-inbox.git diff --git a/t/plack.t b/t/plack.t index 7eb7d7f2..f9a55e43 100644 --- a/t/plack.t +++ b/t/plack.t @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2018 all contributors +# Copyright (C) 2014-2019 all contributors # License: AGPL-3.0+ use strict; use warnings; @@ -46,7 +46,7 @@ To: You Cc: $addr Message-Id: Subject: hihi -Date: Thu, 01 Jan 1970 00:00:00 +0000 +Date: Fri, 02 Oct 1993 00:00:00 +0000 zzzzzz EOF @@ -92,7 +92,8 @@ EOF my $to = "$from/"; my $res = $cb->(GET($from)); is(301, $res->code, 'is permanent redirect'); - is($to, $res->header('Location'), 'redirect location matches'); + is($to, $res->header('Location'), + 'redirect location matches with trailing slash'); }); my $pfx = 'http://example.com/test'; @@ -128,15 +129,19 @@ EOF 'atom URL generated'); like($res->content, qr!href="blah\@example\.com/"!, 'index generated'); + like($res->content, qr!1993-10-02!, 'date set'); }); test_psgi($app, sub { my ($cb) = @_; my $res = $cb->(GET($pfx . '/atom.xml')); is(200, $res->code, 'success response received for atom'); - like($res->content, - qr!link\s+href="\Q$pfx\E/blah\@example\.com/"!s, + my $body = $res->content; + like($body, qr!link\s+href="\Q$pfx\E/blah\@example\.com/"!s, 'atom feed generated correct URL'); + like($body, qr/test for public-inbox/, + "set title in XML feed"); + like($body, qr/zzzzzz/, 'body included'); }); test_psgi($app, sub { @@ -216,6 +221,39 @@ EOF 'redirect from x40 MIDs works'); } }); + + # dumb HTTP clone/fetch support + test_psgi($app, sub { + my ($cb) = @_; + my $path = '/test/info/refs'; + my $req = HTTP::Request->new('GET' => $path); + my $res = $cb->($req); + is(200, $res->code, 'refs readable'); + my $orig = $res->content; + + $req->header('Range', 'bytes=5-10'); + $res = $cb->($req); + is(206, $res->code, 'got partial response'); + is($res->content, substr($orig, 5, 6), 'partial body OK'); + + $req->header('Range', 'bytes=5-'); + $res = $cb->($req); + is(206, $res->code, 'got partial another response'); + is($res->content, substr($orig, 5), 'partial body OK past end'); + }); + + # things which should fail + test_psgi($app, sub { + my ($cb) = @_; + + my $res = $cb->(PUT('/')); + is(405, $res->code, 'no PUT to / allowed'); + $res = $cb->(PUT('/test/')); + is(405, $res->code, 'no PUT /$INBOX allowed'); + + # TODO + # $res = $cb->(GET('/')); + }); } done_testing();