From 08cc1ba31f40512e4340f92f99d41f510f92edfc Mon Sep 17 00:00:00 2001 From: swag Date: Tue, 13 Jun 2023 23:04:52 -0400 Subject: [PATCH] Fix the 404 handling --- lib/PostText/Controller/.#Thread.pm | 1 - lib/PostText/Controller/Remark.pm | 6 ++++++ lib/PostText/Controller/Thread.pm | 12 +++++++++++- t/remark.t | 3 ++- t/thread.t | 10 ++++------ templates/remark/flag.html.ep | 4 ++-- templates/thread/bump.html.ep | 4 ++-- templates/thread/flag.html.ep | 4 ++-- 8 files changed, 29 insertions(+), 15 deletions(-) delete mode 120000 lib/PostText/Controller/.#Thread.pm diff --git a/lib/PostText/Controller/.#Thread.pm b/lib/PostText/Controller/.#Thread.pm deleted file mode 120000 index b567959..0000000 --- a/lib/PostText/Controller/.#Thread.pm +++ /dev/null @@ -1 +0,0 @@ -daniel@graymember.5691 \ No newline at end of file diff --git a/lib/PostText/Controller/Remark.pm b/lib/PostText/Controller/Remark.pm index c640cc5..e248789 100644 --- a/lib/PostText/Controller/Remark.pm +++ b/lib/PostText/Controller/Remark.pm @@ -65,6 +65,7 @@ sub create($self) { sub flag($self) { my $remark_id = $self->param('remark_id'); + my $valid_id = $self->remark->by_id($remark_id) ? 1 : 0; my $v = $self->validation; $v->optional(captcha => 'trim')->size(4, 4)->like(qr/flag/i); @@ -86,6 +87,11 @@ sub flag($self) { $self->stash(status => 400) } + $self->stash(status => 404, error => 'Remark not found 🤷') + unless $valid_id; + + $self->stash(valid_id => $valid_id); + return $self->render; } diff --git a/lib/PostText/Controller/Thread.pm b/lib/PostText/Controller/Thread.pm index ed707b4..3a5ee75 100644 --- a/lib/PostText/Controller/Thread.pm +++ b/lib/PostText/Controller/Thread.pm @@ -140,6 +140,7 @@ sub feed($self) { sub bump($self) { my $thread_id = $self->param('thread_id'); + my $valid_id = $self->thread->by_id($thread_id) ? 1 : 0; my $v = $self->validation; $v->optional(captcha => 'trim')->size(4, 4)->like(qr/bump/i); @@ -157,11 +158,17 @@ sub bump($self) { $self->stash(status => 400) } + $self->stash(status => 404, error => 'Thread not found 🤷') + unless $valid_id; + + $self->stash(valid_id => $valid_id); + return $self->render; } sub flag($self) { my $thread_id = $self->param('thread_id'); + my $valid_id = $self->thread->by_id($thread_id) ? 1 : 0; my $v = $self->validation; $v->optional(captcha => 'trim')->size(4, 4)->like(qr/flag/i); @@ -181,7 +188,10 @@ sub flag($self) { $self->stash(status => 400) } - $self->stash(thread_id => $thread_id); + $self->stash(status => 404, error => 'Thread not found 🤷') + unless $valid_id; + + $self->stash(valid_id => $valid_id); return $self->render; } diff --git a/t/remark.t b/t/remark.t index b53a999..20e2e04 100644 --- a/t/remark.t +++ b/t/remark.t @@ -49,7 +49,8 @@ subtest 'Flagging remark', sub { ->text_like(h2 => qr/Remark #1/); $t->get_ok('/remark/flag/1' )->status_is(200); - $t->get_ok('/remark/flag/65536')->status_is(404); + $t->get_ok('/remark/flag/65536')->status_is(404) + ->text_like(p => qr/Remark not found/); $t->get_ok('/remark/flag/1', form => {captcha => 'flag'})->status_is(200); $t->get_ok('/remark/flag/1', form => {captcha => 'aaaa'})->status_is(400); }; diff --git a/t/thread.t b/t/thread.t index 0a84906..07a8d9d 100644 --- a/t/thread.t +++ b/t/thread.t @@ -84,12 +84,9 @@ subtest 'Bumping thread', sub { ->element_exists('a[href*="bump"]') ->text_like(h2 => qr/Thread #1/); - $t->get_ok('/thread/bump/1')->status_is(200) - ->element_exists('p[class="stash-with-info"]') - ->text_like(p => qr/Thread #1 has been bumped/); - $t->get_ok('/thread/bump/1' )->status_is(200); - $t->get_ok('/thread/bump/65536')->status_is(404); + $t->get_ok('/thread/bump/65536')->status_is(404) + ->text_like(p => qr/Thread not found/); $t->get_ok('/thread/bump/1', form => {captcha => 'bump'})->status_is(200); $t->get_ok('/thread/bump/1', form => {captcha => 'aaaa'})->status_is(400); }; @@ -104,7 +101,8 @@ subtest 'Flagging thread', sub { ->text_like(h2 => qr/Thread #1/); $t->get_ok('/thread/flag/1' )->status_is(200); - $t->get_ok('/thread/flag/65536')->status_is(404); + $t->get_ok('/thread/flag/65536')->status_is(404) + ->text_like(p => qr/Thread not found/); $t->get_ok('/thread/flag/1', form => {captcha => 'flag'})->status_is(200); $t->get_ok('/thread/flag/1', form => {captcha => 'aaaa'})->status_is(400); }; diff --git a/templates/remark/flag.html.ep b/templates/remark/flag.html.ep index fdbd601..7d17ae0 100644 --- a/templates/remark/flag.html.ep +++ b/templates/remark/flag.html.ep @@ -1,7 +1,7 @@ % layout 'default'; -% title $remark_id ? "Flag Remark #$remark_id" : '?'; +% title $valid_id ? "Flag Remark #$remark_id" : '?';

<%= title %>

-<% if ($remark_id) { =%> +<% if ($valid_id) { =%>
<% if (my $error = validation->error('captcha')) { =%> diff --git a/templates/thread/bump.html.ep b/templates/thread/bump.html.ep index 1b9d77e..fae0924 100644 --- a/templates/thread/bump.html.ep +++ b/templates/thread/bump.html.ep @@ -1,7 +1,7 @@ % layout 'default'; -% title $thread_id ? "Bump Thread #$thread_id" : '?'; +% title $valid_id ? "Bump Thread #$thread_id" : '?';

<%= title %>

-<% if ($thread_id) { =%> +<% if ($valid_id) { =%>
<% if (my $error = validation->error('captcha')) { =%> diff --git a/templates/thread/flag.html.ep b/templates/thread/flag.html.ep index 65a0296..77450cc 100644 --- a/templates/thread/flag.html.ep +++ b/templates/thread/flag.html.ep @@ -1,7 +1,7 @@ % layout 'default'; -% title $thread_id ? "Flag Thread #$thread_id" : '?'; +% title $valid_id ? "Flag Thread #$thread_id" : '?';

<%= title %>

-<% if ($thread_id) { =%> +<% if ($valid_id) { =%>
<% if (my $error = validation->error('captcha')) { =%>