Commit 015b51ba authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Add a basic test for static content

parent 065c844f
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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
arrival time, delay, and other real-time data. At the moment, this data cannot
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`.

t/01-static.t

0 → 100644
+37 −0
Original line number Diff line number Diff line
#!/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();