Improve unit test (#1976)

This commit is contained in:
Christophe Maudoux 2021-01-02 23:08:56 +01:00
parent e1de8e34c2
commit 50a35e7588

View File

@ -5,7 +5,7 @@ use IO::String;
require 't/test-lib.pm'; require 't/test-lib.pm';
my $maintests = 41; my $maintests = 46;
my $userdb = tempdb(); my $userdb = tempdb();
SKIP: { SKIP: {
@ -18,26 +18,26 @@ SKIP: {
my $request; my $request;
my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb"); my $dbh = DBI->connect("dbi:SQLite:dbname=$userdb");
$dbh->do( $dbh->do(
'CREATE TABLE users (uid text,password text,cn text,type text,guy text)' 'CREATE TABLE users (uid text,password text,cn text,type text,guy text, room text)'
); );
$dbh->do( $dbh->do(
"INSERT INTO users VALUES ('dwho','dwho','Doctor who', 'character','good')" "INSERT INTO users VALUES ('dwho','dwho','Doctor who', 'character','good','0')"
); );
$dbh->do( $dbh->do(
"INSERT INTO users VALUES ('rtyler','rtyler','Rose Tyler','character','good')" "INSERT INTO users VALUES ('rtyler','rtyler','Rose Tyler','character','good','0')"
); );
$dbh->do( $dbh->do(
"INSERT INTO users VALUES ('davros','davros','Bad Guy','character','bad')" "INSERT INTO users VALUES ('davros','davros','Bad Guy','character','bad','0')"
); );
$dbh->do( $dbh->do(
"INSERT INTO users VALUES ('msmith','msmith','Mr Smith','character','good')" "INSERT INTO users VALUES ('msmith','msmith','Mr Smith','character','good','0')"
); );
$dbh->do( $dbh->do(
"INSERT INTO users VALUES ('dalek','dalek', 'The Daleks','mutant','bad')" "INSERT INTO users VALUES ('dalek','dalek', 'The Daleks','mutant','bad','1')"
); );
my $client = LLNG::Manager::Test->new( { my $client = LLNG::Manager::Test->new( {
ini => { ini => {
logLevel => 'error', logLevel => 'debug',
authentication => 'DBI', authentication => 'DBI',
userDB => 'Same', userDB => 'Same',
dbiAuthChain => "dbi:SQLite:dbname=$userdb", dbiAuthChain => "dbi:SQLite:dbname=$userdb",
@ -53,7 +53,7 @@ SKIP: {
findUser => 1, findUser => 1,
impersonationRule => 1, impersonationRule => 1,
findUserSearchingAttributes => findUserSearchingAttributes =>
{ uid => 'Login', guy => 'Kind', cn => 'Name' }, { uid => 'Login', guy => 'Kind', cn => 'Name', room => 'Room' },
findUserExcludingAttributes => findUserExcludingAttributes =>
{ type => 'mutant', uid => 'rtyler' }, { type => 'mutant', uid => 'rtyler' },
} }
@ -65,7 +65,7 @@ SKIP: {
my ( $host, $url, $query ) = my ( $host, $url, $query ) =
expectForm( $res, '#', undef, 'user', 'password', 'spoofId' ); expectForm( $res, '#', undef, 'user', 'password', 'spoofId' );
( $host, $url, $query ) = ( $host, $url, $query ) =
expectForm( $res, '#', undef, 'uid', 'guy', 'cn' ); expectForm( $res, '#', undef, 'uid', 'guy', 'cn', 'room' );
$request = ''; $request = '';
ok( ok(
$res = $client->_post( $res = $client->_post(
@ -78,7 +78,7 @@ SKIP: {
( $host, $url, $query ) = ( $host, $url, $query ) =
expectForm( $res, '#', undef, 'user', 'password', 'spoofId' ); expectForm( $res, '#', undef, 'user', 'password', 'spoofId' );
( $host, $url, $query ) = ( $host, $url, $query ) =
expectForm( $res, '#', undef, 'uid', 'guy', 'cn' ); expectForm( $res, '#', undef, 'uid', 'guy', 'cn', 'room' );
ok( ok(
$res->[2]->[0] =~ $res->[2]->[0] =~
m%<input id="spoofIdfield" name="spoofId" type="text" class="form-control" value="" autocomplete="off"%, m%<input id="spoofIdfield" name="spoofId" type="text" class="form-control" value="" autocomplete="off"%,
@ -118,6 +118,11 @@ m%<input id="findUser_uid" name="uid" type="text" autocomplete="off" class="form
m%<input id="findUser_cn" name="cn" type="text" autocomplete="off" class="form-control" placeholder="Name" />%, m%<input id="findUser_cn" name="cn" type="text" autocomplete="off" class="form-control" placeholder="Name" />%,
'id="findUser_cn"' 'id="findUser_cn"'
) or explain( $res->[2]->[0], 'id="findUser_cn"' ); ) or explain( $res->[2]->[0], 'id="findUser_cn"' );
ok(
$res->[2]->[0] =~
m%<input id="findUser_room" name="room" type="text" autocomplete="off" class="form-control" placeholder="Room" />%,
'id="findUser_room"'
) or explain( $res->[2]->[0], 'id="findUser_room"' );
$request = 'uid=dwho'; $request = 'uid=dwho';
ok( ok(
@ -252,6 +257,22 @@ m%<input id="findUser_cn" name="cn" type="text" autocomplete="off" class="form-c
or explain( $json, 'result => 1' ); or explain( $json, 'result => 1' );
ok( $json->{user} eq '', ' No user' ) ok( $json->{user} eq '', ' No user' )
or explain( $json, 'user => ?' ); or explain( $json, 'user => ?' );
$request = 'room=0';
ok(
$res = $client->_post(
'/finduser', IO::String->new($request),
accept => 'application/json',
length => length($request)
),
'Post FindFuser request 0 with multi results'
);
ok( $json = eval { from_json( $res->[2]->[0] ) }, 'Response is JSON' )
or print STDERR "$@\n" . Dumper($res);
ok( $json->{result} == 1, ' Good result' )
or explain( $json, 'result => 1' );
ok( $json->{user} =~ /^(dwho|msmith|davros)$/, " Good user ($1)" )
or explain( $json, "user => ?" );
} }
count($maintests); count($maintests);
done_testing( count() ); done_testing( count() );