145 lines
4.0 KiB
Perl
145 lines
4.0 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-Portal.t'
|
|
|
|
#########################
|
|
|
|
# change 'tests => 1' to 'tests => last_test_to_print';
|
|
|
|
use Test::More tests => 9;
|
|
BEGIN { use_ok('Lemonldap::NG::Portal::Menu') }
|
|
|
|
#########################
|
|
|
|
# Insert your test code below, the Test::More module is use()ed here so read
|
|
# its man page ( perldoc Test::More ) for help writing this test script.
|
|
|
|
$ENV{REQUEST_METHOD} = 'GET';
|
|
|
|
# Build portal
|
|
my $p = Lemonldap::NG::Portal::Simple->new(
|
|
{
|
|
globalStorage => 'Apache::Session::File',
|
|
domain => 'example.com',
|
|
error => 0,
|
|
applicationList => {},
|
|
locationRules => {
|
|
'test.example.com' => {
|
|
'default' => 'deny',
|
|
'^/ok' => '$uid eq "coudot"',
|
|
'^/nok' => '$uid eq "toto"',
|
|
},
|
|
},
|
|
cfgNum => 42,
|
|
sessionInfo => { uid => "coudot", },
|
|
}
|
|
);
|
|
|
|
# Init menu
|
|
$p->menuInit();
|
|
|
|
# Test that display modules is an array
|
|
ok( ref $p->{menuDisplayModules} eq 'ARRAY', 'Modules displayed' );
|
|
|
|
# Test that application loop is an array
|
|
my $appLoop = $p->appslist();
|
|
|
|
ok( ref $appLoop eq 'ARRAY', 'Application loop' );
|
|
|
|
# Create an application list
|
|
$p->{applicationList} = {
|
|
test => {
|
|
type => 'category',
|
|
catname => 'Test',
|
|
testautook => {
|
|
type => 'application',
|
|
options => {
|
|
uri => 'http://test.example.com/ok/login.php',
|
|
name => 'Test application',
|
|
display => 'auto',
|
|
},
|
|
},
|
|
testautonok => {
|
|
type => 'application',
|
|
options => {
|
|
uri => 'http://test.example.com/nok/login.php',
|
|
name => 'Test application',
|
|
display => 'auto',
|
|
},
|
|
},
|
|
teston => {
|
|
type => 'application',
|
|
options => {
|
|
uri => 'http://test.example.com/app/login.php',
|
|
name => 'Test application',
|
|
display => 'on',
|
|
},
|
|
},
|
|
testoff => {
|
|
type => 'application',
|
|
options => {
|
|
uri => 'http://test.example.com/app/login.php',
|
|
name => 'Test application',
|
|
display => 'off',
|
|
},
|
|
},
|
|
},
|
|
empty => {
|
|
type => 'category',
|
|
catname => 'Test',
|
|
test2off => {
|
|
type => 'application',
|
|
options => {
|
|
uri => 'http://test.example.com/app/login.php',
|
|
name => 'Test application',
|
|
display => 'off',
|
|
},
|
|
},
|
|
}
|
|
};
|
|
|
|
# Reload application list
|
|
$appLoop = $p->appslist();
|
|
|
|
# Check empty category
|
|
# Check display off and on
|
|
# Check display auto ok and nok
|
|
my $emptyCat = 0;
|
|
my $displayOn = 0;
|
|
my $displayOff = 0;
|
|
my $displayOk = 0;
|
|
my $displayNok = 0;
|
|
|
|
foreach (@$appLoop) {
|
|
$emptyCat++ if $_->{catid} eq "empty";
|
|
if ( $_->{catid} eq "test" ) {
|
|
foreach ( @{ $_->{'applications'} } ) {
|
|
$displayOn++ if $_->{appid} eq "teston";
|
|
$displayOff++ if $_->{appid} eq "testoff";
|
|
$displayOk++ if $_->{appid} eq "testautook";
|
|
$displayNok++ if $_->{appid} eq "testautonok";
|
|
}
|
|
}
|
|
}
|
|
|
|
ok( $emptyCat == 0, 'Hide empty category' );
|
|
ok( $displayOn != 0, 'Display on' );
|
|
ok( $displayOff == 0, 'Display off' );
|
|
ok( $displayOk != 0, 'Display auto ok' );
|
|
ok( $displayNok == 0, 'Display auto nok' );
|
|
|
|
# Connect as another user with different rights
|
|
$p->{sessionInfo}->{uid} = "toto";
|
|
my $appLoop2 = $p->appslist();
|
|
my $displayOk2 = 0;
|
|
|
|
foreach (@$appLoop2) {
|
|
if ( $_->{catid} eq "test" ) {
|
|
foreach ( @{ $_->{'applications'} } ) {
|
|
$displayOk2++ if $_->{appid} eq "testautonok";
|
|
}
|
|
}
|
|
}
|
|
|
|
ok( $displayOk2 != 0, 'Display auto ok for different user' );
|
|
|