From dd8fdea5e36e901a4ae8105086fca805ef59fab4 Mon Sep 17 00:00:00 2001 From: swaggboi Date: Fri, 27 Oct 2023 23:16:47 -0400 Subject: [PATCH] Put search_page behind the CAPTCHA wall --- lib/PostText.pm | 2 +- t/search.t | 21 +++++++++++++++++---- templates/page/search.html.ep | 9 +++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/PostText.pm b/lib/PostText.pm index 6ef3d79..1caa0a4 100644 --- a/lib/PostText.pm +++ b/lib/PostText.pm @@ -147,7 +147,7 @@ sub startup($self) { $r->get('/feeds')->to('page#feeds')->name('feeds_page'); # Not-so-static but I mean they're all 'pages' c'mon - $r->get('/search')->to('page#search')->name('search_page'); + $human->get('/search')->to('page#search')->name('search_page'); $r->any([qw{GET POST}], '/captcha/*return_url') ->to('page#captcha') diff --git a/t/search.t b/t/search.t index b0ff946..d7ffa4a 100644 --- a/t/search.t +++ b/t/search.t @@ -4,14 +4,27 @@ use Test::Mojo; my $t = Test::Mojo->new('PostText'); my $invalid_query = 'aaaaaaaa' x 300; +my %good_human = (answer => 1, number => 'Ⅰ'); +my $search_url = + '/captcha/H4sIABJ8PGUAA8soKSmw0tfPyU9OzMnILy6xMjYwMNDPKM1NzNMvTk0sSs4AAPrUR3kiAAAA%0A'; -subtest Search => sub { - $t->get_ok('/search')->status_is(200)->text_like(h2 => qr/Search/); +subtest 'Search before CAPTCHA', sub { + $t->get_ok('/human/search')->status_is(302) + ->header_like(Location => qr/captcha/); +}; - $t->get_ok('/search?q=test')->status_is(200) +subtest 'Search after CAPTCHA', sub { + $t->post_ok($search_url, form => \%good_human) + ->status_is(302) + ->header_like(Location => qr{human/search}); + + $t->get_ok('/human/search')->status_is(200) + ->text_like(h2 => qr/Search Posts/); + + $t->get_ok('/human/search?q=test')->status_is(200) ->text_like(h3 => qr/Results/); - $t->get_ok("/search?q=$invalid_query")->status_is(400) + $t->get_ok("/human/search?q=$invalid_query")->status_is(400) ->text_like(p => qr/Must be between/); }; diff --git a/templates/page/search.html.ep b/templates/page/search.html.ep index 0bea18f..9f305aa 100644 --- a/templates/page/search.html.ep +++ b/templates/page/search.html.ep @@ -1,5 +1,14 @@ % layout 'default'; % title 'Search Posts'; +<% content_for open_graph => begin %> + + + +<% end %> +<% content_for twitter_card => begin %> + + +<% end %>

<%= title %>