Add a basic test for static content
This commit is contained in:
parent
065c844fde
commit
015b51ba84
2 changed files with 54 additions and 0 deletions
17
README.md
17
README.md
|
@ -144,3 +144,20 @@ If you use the checkout link again, travelynx will perform a force checkout: it
|
||||||
will log that you have left the train at the specified station, but omit
|
will log that you have left the train at the specified station, but omit
|
||||||
arrival time, delay, and other real-time data. At the moment, this data cannot
|
arrival time, delay, and other real-time data. At the moment, this data cannot
|
||||||
be specified manually.
|
be specified manually.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
---
|
||||||
|
|
||||||
|
The test scripts assume that travelynx.conf contains a valid database
|
||||||
|
connection. However, they will override db.user to `travelynx_temp`. This
|
||||||
|
must be an account which has the same password as the one specified in
|
||||||
|
travelynx.conf, but uses a temporary schema. This way, tests will always
|
||||||
|
start from a clean slate and will not leave any trace in the database.
|
||||||
|
|
||||||
|
Create this account as follows:
|
||||||
|
|
||||||
|
* `createuser -P travelynx_temp` (enter the password you are using for the
|
||||||
|
regular development user)
|
||||||
|
* from inside a psql admin shell: `alter role travelynx_temp set search_path = pg_temp;`
|
||||||
|
|
||||||
|
Run the tests by executing `prove`.
|
||||||
|
|
37
t/01-static.t
Normal file
37
t/01-static.t
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
use Mojo::Base -strict;
|
||||||
|
|
||||||
|
use Test::More;
|
||||||
|
use Test::Mojo;
|
||||||
|
|
||||||
|
# Include application
|
||||||
|
use FindBin;
|
||||||
|
require "$FindBin::Bin/../index.pl";
|
||||||
|
|
||||||
|
my $t = Test::Mojo->new(Travelynx => {db => {user => 'travelynx_temp'}});
|
||||||
|
|
||||||
|
$t->get_ok('/')->status_is(200);
|
||||||
|
$t->text_like('a[href="/register"]' => qr{Registrieren});
|
||||||
|
$t->text_like('a[href="/login"]' => qr{Anmelden});
|
||||||
|
|
||||||
|
$t->get_ok('/register')->status_is(200);
|
||||||
|
$t->element_exists('input[name="csrf_token"]');
|
||||||
|
$t->element_exists('a[href="/impressum"]');
|
||||||
|
$t->text_like('button' => qr{Registrieren});
|
||||||
|
|
||||||
|
$t->get_ok('/login')->status_is(200);
|
||||||
|
$t->element_exists('input[name="csrf_token"]');
|
||||||
|
$t->text_like('button' => qr{Anmelden});
|
||||||
|
|
||||||
|
$t->get_ok('/about')->status_is(200);
|
||||||
|
|
||||||
|
# Protected sites should redirect to login form
|
||||||
|
|
||||||
|
for my $protected (qw(/account /change_password /history /s/EE)) {
|
||||||
|
$t->get_ok($protected)->text_like('button' => qr{Anmelden});
|
||||||
|
}
|
||||||
|
|
||||||
|
# Otherwise, we expect a 404
|
||||||
|
$t->get_ok('/definitelydoesnotexist')->status_is(404);
|
||||||
|
|
||||||
|
done_testing();
|
Loading…
Reference in a new issue