52 lines
1.3 KiB
Perl
52 lines
1.3 KiB
Perl
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Test::More;
|
|
use Mojo::File qw{curfile};
|
|
use Test::Mojo;
|
|
|
|
my $script = curfile->dirname->sibling('guestbook-ng.pl');
|
|
my $t = Test::Mojo->new($script);
|
|
my %invalid_form = (
|
|
name => 'swagg boi',
|
|
url => 'INVALID://',
|
|
message => '',
|
|
answer => 'false'
|
|
);
|
|
my %spam_form = (
|
|
name => 'swagg boi',
|
|
url => 'http://localhost/',
|
|
message => 'hi',
|
|
answer => 0
|
|
);
|
|
my %valid_form = (
|
|
name => 'swagg boi',
|
|
url => 'http://localhost',
|
|
message => 'Ayy... lmao',
|
|
answer => 'false'
|
|
);
|
|
# Null POST body
|
|
my %null_form;
|
|
|
|
$t->ua->max_redirects(1);
|
|
|
|
# Valid requests
|
|
$t->get_ok('/sign')->status_is(200)->text_is(h2 => 'Sign the Guestbook');
|
|
$t->post_ok('/sign', form => \%valid_form)->status_is(200)
|
|
->text_is(h2 => 'Messages from the World Wide Web');
|
|
|
|
# Invalid input
|
|
$t->post_ok('/sign', form => \%invalid_form)->status_is(400)
|
|
->content_like(qr/cannot be blank/);
|
|
$t->post_ok('/sign', form => \%invalid_form)->status_is(400)
|
|
->content_like(qr/URL does not appear to be/);
|
|
$t->post_ok('/sign', form => \%null_form)->status_is(400)
|
|
->text_is(h2 => 'Sign the Guestbook');
|
|
|
|
# Spam test
|
|
$t->post_ok('/sign', form => \%spam_form)->status_is(403)
|
|
->text_is(p => 'This message was flagged as spam');
|
|
|
|
done_testing();
|