use Test::More;
use strict;
use warnings;
use utf8;
use Dancer::Session::DBI;
use Dancer qw(:syntax :tests);
use DBI;
unless ( $ENV{TRAVIS_TESTING} ) {
plan( skip_all => "Travis CI specific tests not required for installation" );
}
set session => 'DBI';
for my $config (
{dsn => "DBI:mysql:database=myapp_test;host=127.0.0.1", user => "root"},
{dsn => "DBI:Pg:dbname=myapp_test;host=127.0.0.1", user => "postgres"},
{dsn => "DBI:SQLite:dbname=:memory:", user => "" }
) {
my $dbh = DBI->connect($config->{dsn}, $config->{user}, "");
# There is no way to reference an in-memory database created elsewhere
# So the SQLite setup goes here.
if (!$config->{user}) {
$dbh->do("CREATE TABLE session (id char(72), session_data varchar(2048), PRIMARY KEY (id))");
}
set 'session_options' => {
table => 'session',
dbh => sub { $dbh },
};
ok(session(testing => "123"), "Can something in the session " . $config->{user});
is(session('testing'), '123', "Can retrieve something from the session " . $config->{user});
ok(session(utf8 => "☃"), "Can set UTF8 " . $config->{user});
is(session('utf8'), '☃', "Can get UTF8 back" . $config->{user});
}
done_testing(12);