2023-10-27 23:03:32 -04:00
|
|
|
|
use Mojo::Base -strict;
|
|
|
|
|
use Test::More;
|
|
|
|
|
use Test::Mojo;
|
|
|
|
|
|
|
|
|
|
my $t = Test::Mojo->new('PostText');
|
|
|
|
|
my $invalid_query = 'aaaaaaaa' x 300;
|
2023-10-27 23:16:47 -04:00
|
|
|
|
my %good_human = (answer => 1, number => 'Ⅰ');
|
|
|
|
|
my $search_url =
|
|
|
|
|
'/captcha/H4sIABJ8PGUAA8soKSmw0tfPyU9OzMnILy6xMjYwMNDPKM1NzNMvTk0sSs4AAPrUR3kiAAAA%0A';
|
2023-10-27 23:03:32 -04:00
|
|
|
|
|
2024-08-15 19:59:41 -04:00
|
|
|
|
subtest 'Search form', sub {
|
|
|
|
|
$t->get_ok('/thread/list')
|
|
|
|
|
->element_exists('form input[name="q"]' )
|
|
|
|
|
->element_exists('form button[type="submit"]');
|
|
|
|
|
};
|
|
|
|
|
|
2023-10-27 23:16:47 -04:00
|
|
|
|
subtest 'Search before CAPTCHA', sub {
|
|
|
|
|
$t->get_ok('/human/search')->status_is(302)
|
|
|
|
|
->header_like(Location => qr/captcha/);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
subtest 'Search after CAPTCHA', sub {
|
2024-08-15 19:56:02 -04:00
|
|
|
|
$t->get_ok($search_url);
|
|
|
|
|
|
|
|
|
|
$good_human{'csrf_token'} =
|
|
|
|
|
$t->tx->res->dom->at('input[name="csrf_token"]')->val;
|
|
|
|
|
|
2023-10-27 23:16:47 -04:00
|
|
|
|
$t->post_ok($search_url, form => \%good_human)
|
|
|
|
|
->status_is(302)
|
|
|
|
|
->header_like(Location => qr{human/search});
|
|
|
|
|
|
2023-11-01 21:58:47 -04:00
|
|
|
|
$t->get_ok('/human/search?q=lmao')->status_is(200)
|
|
|
|
|
->text_like(h2 => qr/Search Results/);
|
2023-10-27 23:03:32 -04:00
|
|
|
|
|
2023-10-28 01:42:36 -04:00
|
|
|
|
$t->get_ok('/human/search?q=aaaaaaaaaa')->status_is(404)
|
|
|
|
|
->text_like(p => qr/No posts found/);
|
|
|
|
|
|
2023-10-27 23:16:47 -04:00
|
|
|
|
$t->get_ok("/human/search?q=$invalid_query")->status_is(400)
|
2023-10-27 23:03:32 -04:00
|
|
|
|
->text_like(p => qr/Must be between/);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
done_testing;
|