require
't/test-lib.pm'
;
my
$res
;
my
$maintests
= 0;
my
$client
;
my
$userdb
= tempdb();
SKIP: {
if
($@) {
skip
'DBD::SQLite not found'
,
$maintests
;
}
my
$dbh
= DBI->
connect
(
"dbi:SQLite:dbname=$userdb"
);
$dbh
->
do
(
'CREATE TABLE users (user text,password text,name text)'
);
$dbh
->
do
(
"INSERT INTO users VALUES ('dvador','dvador','Test user 1')"
);
$dbh
->
do
(
"INSERT INTO users VALUES ('rtyler','rtyler','Test user 1')"
);
$client
= iniCmb(
'[Dm] or [DB]'
);
$client
->logout( expectCookie(
try
(
'dwho'
) ) );
$client
->logout( expectCookie(
try
(
'dvador'
) ) );
}
count(
$maintests
);
clean_sessions();
done_testing( count() );
sub
try
{
my
$user
=
shift
;
my
$s
=
"user=$user&password=$user"
;
my
$res
;
ok(
$res
=
$client
->_post(
'/'
, IO::String->new(
$s
),
length
=>
length
(
$s
),
custom
=> {
HTTP_X
=>
$user
}
),
" Try to connect with login $user"
);
count(1);
return
$res
;
}
sub
iniCmb {
my
$expr
=
shift
;
count(1);
if
(
my
$client
= LLNG::Manager::Test->new(
{
ini
=> {
logLevel
=>
'error'
,
useSafeJail
=> 1,
authentication
=>
'Combination'
,
userDB
=>
'Same'
,
combination
=>
$expr
,
combModules
=> {
DB
=> {
for
=> 0,
type
=>
'DBI'
,
over
=> {
dbiAuthChain
=>
"dbi:SQLite:dbname=$userdb"
,
dbiAuthUser
=>
''
,
dbiAuthPassword
=>
''
,
dbiAuthTable
=>
'users'
,
dbiAuthLoginCol
=>
'user'
,
dbiAuthPasswordCol
=>
'password'
,
dbiAuthPasswordHash
=>
''
,
dbiExportedVars
=>
'{"user":"user"}'
,
}
},
Dm
=> {
for
=> 0,
type
=>
'Demo'
,
},
},
demoExportedVars
=> {},
}
}
)
)
{
pass(
qq'Expression loaded: "$expr"'
);
ok(
$client
->{p}->{loadedModules}->{
'Lemonldap::NG::Portal::Auth::DBI'
}
->{conf}->{dbiExportedVars}->{user} eq
'user'
,
'JSON is parsed'
);
count(1);
return
$client
;
}
else
{
fail
"Unable to build object"
;
}
}