The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 4;

use strict;
use warnings;

use Dancer::Session::DBI;
use Dancer qw(:syntax :tests);



# ONE
eval {
    set session => 'DBI';
    session->create();
};
like $@, qr{No table selected for session storage}i,
    'Should fail when no settings specified';



# TWO
eval {
    set session => 'DBI';
    set 'session_options' => {
        table => 'table',
        dsn   => 'Invalid',
    };
    session->create();
};
like $@, qr{No valid DSN specified}i,
    'Should fail on invalid DSN';



# THREE
eval {
    set session => 'DBI';
    set 'session_options' => {
        table => 'table',
        dsn   => 'DBI:MyDriver(RaiseError=>1):db=test;port=42',
    };
    session->create();
};
like $@, qr{No user or password specified}i,
    'Should fail with no user or password';



# FOUR
eval {
    set session => 'DBI';
    set 'session_options' => {
        table    => '',
        dbh      => 'Handle',
        user     => 'user',
        password => 'password'
    };
    session->create();
};
like $@, qr{No table selected for session storage}i,
    'Should fail with no table selected';