lemonldap-ng/lemonldap-ng-handler/t/13-Lemonldap-NG-Handler-Fak...

109 lines
3.2 KiB
Perl

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Lemonldap-NG-Handler-SharedConf.t'
#########################
# change 'tests => 1' to 'tests => last_test_to_print';
use Test::More tests => 16;
require 't/test.pm';
BEGIN { use_ok('Lemonldap::NG::Handler::Main::Jail') }
#########################
# Insert your test code below, the Test::More module is used here so read
# its man page ( perldoc Test::More ) for help writing this test script.
ok(
my $jail = Lemonldap::NG::Handler::Main::Jail->new(
'jail' => undef,
'useSafeJail' => 0,
'customFunctions' => undef,
'multiValuesSeparator' => '; ',
),
'new fake jail object'
);
$jail->build_jail('Lemonldap::NG::Handler::Test');
my $sub1 = "sub { return( basic('login','password') ) }";
my $basic = $jail->jail_reval($sub1);
like(
&$basic,
'/^Basic bG9naW46cGFzc3dvcmQ=$/',
'basic extended function working without Safe Jail'
);
my $sub2 = "sub { return ( encode_base64('test') ) }";
my $encode_base64 = $jail->jail_reval($sub2);
like( &$encode_base64, '/^dGVzdA==$/',
'encode_base64 extended function working without Safe Jail' );
my $sub3 = "sub { return(checkDate('20000101000000','21000101000000')) }";
my $checkDate = $jail->jail_reval($sub3);
ok( &$checkDate == "1",
'checkDate extended function working without Safe Jail' );
my $sub4 =
"sub { return(checkDate('20000101000000+0100','21000101000000+0100')) }";
$checkDate = $jail->jail_reval($sub4);
ok( &$checkDate == "1",
'checkDate extended function working without Safe Jail' );
my $sub5 = "sub { return ( listMatch('ABC; DEF; GHI','abc', 1) ) }";
my $listMatch = $jail->jail_reval($sub5);
ok( ( defined($listMatch) and ref($listMatch) eq 'CODE' ),
'listMatch function is defined' );
ok( &$listMatch eq '1', 'Get good result' );
my $sub6 = "sub { return ( listMatch('ABC; DEF; GHI','ab', 1) ) }";
$listMatch = $jail->jail_reval($sub6);
ok( ( defined($listMatch) and ref($listMatch) eq 'CODE' ),
'listMatch function is defined' );
ok( &$listMatch eq '0', 'Get good result' );
# Test has2f method
my $sub7 = "sub { return(has2f_internal(\$_[0],\$_[1])) }";
my $has2f = $jail->jail_reval($sub7);
ok(
( defined($has2f) and ref($has2f) eq 'CODE' ),
'checkDate extended function is defined'
);
is(
$has2f->( {
_2fDevices =>
"[{\"name\":\"MyTOTP\",\"_secret\":\"g5fsxwf4d34biemlojsbbvhgtskrssos\",\"epoch\":1602173208,\"type\":\"TOTP\"}]"
},
"TOTP"
),
1,
"Function works"
);
is(
$has2f->( {
_2fDevices =>
"[{\"name\":\"MyTOTP\",\"_secret\":\"g5fsxwf4d34biemlojsbbvhgtskrssos\",\"epoch\":1602173208,\"type\":\"TOTP\"}]"
},
),
1,
"Function works"
);
is(
$has2f->( {
_2fDevices =>
"[{\"name\":\"MyTOTP\",\"_secret\":\"g5fsxwf4d34biemlojsbbvhgtskrssos\",\"epoch\":1602173208,\"type\":\"TOTP\"}]"
},
"UBK"
),
0,
"Function works"
);
$sub = "sub { return(";
$code = $jail->jail_reval($sub);
ok( ( not defined($code) ), 'Syntax error yields undef result' );
like(
$jail->error,
qr/Missing right curly or square bracket/,
'Found correct error message'
);