]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/plack.t
thread: remove Mail::Thread dependency
[public-inbox.git] / t / plack.t
index 04680b2a61b5e6301e89a3c20b9ee93dafd435d3..1d624589e810f63b24f927efb616aaa32da9c3ee 100644 (file)
--- a/t/plack.t
+++ b/t/plack.t
@@ -11,8 +11,7 @@ my $pi_config = "$tmpdir/config";
 my $maindir = "$tmpdir/main.git";
 my $addr = 'test-public@example.com';
 my $cfgpfx = "publicinbox.test";
-my @mods = qw(HTTP::Request::Common Plack::Request Plack::Test
-       Mail::Thread URI::Escape);
+my @mods = qw(HTTP::Request::Common Plack::Test URI::Escape);
 foreach my $mod (@mods) {
        eval "require $mod";
        plan skip_all => "$mod missing for plack.t" if $@;
@@ -62,16 +61,24 @@ EOF
                require $psgi;
        };
 
+       test_psgi($app, sub {
+               my ($cb) = @_;
+               foreach my $u (qw(robots.txt favicon.ico .well-known/foo)) {
+                       my $res = $cb->(GET("http://example.com/$u"));
+                       is($res->code, 404, "$u is missing");
+               }
+       });
+
        # redirect with newsgroup
        test_psgi($app, sub {
                my ($cb) = @_;
                my $from = 'http://example.com/inbox.test';
                my $to = 'http://example.com/test/';
                my $res = $cb->(GET($from));
-               is($res->code, 301, 'is permanent redirect');
+               is($res->code, 301, 'newsgroup name is permanent redirect');
                is($to, $res->header('Location'), 'redirect location matches');
                $from .= '/';
-               is($res->code, 301, 'is permanent redirect');
+               is($res->code, 301, 'newsgroup name/ is permanent redirect');
                is($to, $res->header('Location'), 'redirect location matches');
        });
 
@@ -89,7 +96,7 @@ EOF
        foreach my $t (qw(t T)) {
                test_psgi($app, sub {
                        my ($cb) = @_;
-                       my $u = $pfx . "/blah%40example.com/$t";
+                       my $u = $pfx . "/blah\@example.com/$t";
                        my $res = $cb->(GET($u));
                        is(301, $res->code, "redirect for missing /");
                        my $location = $res->header('Location');
@@ -100,11 +107,11 @@ EOF
        foreach my $t (qw(f)) {
                test_psgi($app, sub {
                        my ($cb) = @_;
-                       my $u = $pfx . "/blah%40example.com/$t";
+                       my $u = $pfx . "/blah\@example.com/$t";
                        my $res = $cb->(GET($u));
                        is(301, $res->code, "redirect for legacy /f");
                        my $location = $res->header('Location');
-                       like($location, qr!/blah%40example\.com/\z!,
+                       like($location, qr!/blah\@example\.com/\z!,
                                'redirected with missing /');
                });
        }
@@ -112,11 +119,11 @@ EOF
        test_psgi($app, sub {
                my ($cb) = @_;
                my $atomurl = 'http://example.com/test/new.atom';
-               my $res = $cb->(GET('http://example.com/test/'));
+               my $res = $cb->(GET('http://example.com/test/new.html'));
                is(200, $res->code, 'success response received');
-               like($res->content, qr!href="\Q$atomurl\E"!,
+               like($res->content, qr!href="new\.atom"!,
                        'atom URL generated');
-               like($res->content, qr!href="blah%40example\.com/"!,
+               like($res->content, qr!href="blah\@example\.com/"!,
                        'index generated');
        });
 
@@ -125,13 +132,13 @@ EOF
                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%40example\.com/"!s,
+                       qr!link\s+href="\Q$pfx\E/blah\@example\.com/"!s,
                        'atom feed generated correct URL');
        });
 
        test_psgi($app, sub {
                my ($cb) = @_;
-               my $path = '/blah%40example.com/';
+               my $path = '/blah@example.com/';
                my $res = $cb->(GET($pfx . $path));
                is(200, $res->code, "success for $path");
                like($res->content, qr!<title>hihi - Me</title>!,
@@ -141,13 +148,13 @@ EOF
                $res = $cb->(GET($pfx . $path));
                is(301, $res->code, "redirect for $path");
                my $location = $res->header('Location');
-               like($location, qr!/blah%40example\.com/\z!,
+               like($location, qr!/blah\@example\.com/\z!,
                        '/$MESSAGE_ID/f/ redirected to /$MESSAGE_ID/');
        });
 
        test_psgi($app, sub {
                my ($cb) = @_;
-               my $res = $cb->(GET($pfx . '/blah%40example.com/raw'));
+               my $res = $cb->(GET($pfx . '/blah@example.com/raw'));
                is(200, $res->code, 'success response received for /*/raw');
                like($res->content, qr!^From !sm, "mbox returned");
        });
@@ -156,10 +163,10 @@ EOF
        foreach my $t (qw(m f)) {
                test_psgi($app, sub {
                        my ($cb) = @_;
-                       my $res = $cb->(GET($pfx . "/$t/blah%40example.com.txt"));
+                       my $res = $cb->(GET($pfx . "/$t/blah\@example.com.txt"));
                        is(301, $res->code, "redirect for old $t .txt link");
                        my $location = $res->header('Location');
-                       like($location, qr!/blah%40example\.com/raw\z!,
+                       like($location, qr!/blah\@example\.com/raw\z!,
                                ".txt redirected to /raw");
                });
        }
@@ -172,22 +179,22 @@ EOF
        while (my ($t, $e) = each %umap) {
                test_psgi($app, sub {
                        my ($cb) = @_;
-                       my $res = $cb->(GET($pfx . "/$t/blah%40example.com.html"));
+                       my $res = $cb->(GET($pfx . "/$t/blah\@example.com.html"));
                        is(301, $res->code, "redirect for old $t .html link");
                        my $location = $res->header('Location');
                        like($location,
-                               qr!/blah%40example\.com/$e(?:#u)?\z!,
+                               qr!/blah\@example\.com/$e(?:#u)?\z!,
                                ".html redirected to new location");
                });
        }
        foreach my $sfx (qw(mbox mbox.gz)) {
                test_psgi($app, sub {
                        my ($cb) = @_;
-                       my $res = $cb->(GET($pfx . "/t/blah%40example.com.$sfx"));
+                       my $res = $cb->(GET($pfx . "/t/blah\@example.com.$sfx"));
                        is(301, $res->code, 'redirect for old thread link');
                        my $location = $res->header('Location');
                        like($location,
-                            qr!/blah%40example\.com/t\.mbox(?:\.gz)?\z!,
+                            qr!/blah\@example\.com/t\.mbox(?:\.gz)?\z!,
                             "$sfx redirected to /mbox.gz");
                });
        }