The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# 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 => 10;

BEGIN { use_ok( 'Lemonldap::NG::Portal::Simple', ':all' ) }

#########################

# 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.

# Create portal object with Safe jail (the default)
my $p;
$ENV{REQUEST_METHOD} = "GET";
ok(
    $p = Lemonldap::NG::Portal::Simple->new(
        {
            globalStorage  => 'Apache::Session::File',
            domain         => 'example.com',
            authentication => 'Null',
            userDB         => 'Null',
            passwordDB     => 'Null',
            registerDB     => 'Null',
            useSafeJail    => 1,
        }
    ),
    'Portal object with Safe jail'
);

# Fake data
my $sessionData = "coudot";
$p->{sessionInfo}->{uid} = $sessionData;
my $envData = "127.0.0.1";
$ENV{REMOTE_ADDR} = $envData;

# Real Safe jail
ok( $p->{useSafeJail} == 1,                  'Safe jail on' );
ok( $p->safe->reval('$uid') eq $sessionData, 'Safe jail on - session data' );
ok( $p->safe->reval('$ENV{REMOTE_ADDR}') eq $envData,
    'Safe jail on - env data' );
ok(
    defined $p->safe->reval('checkDate(0,1)'),
    'Safe jail on - extended function'
);

# Reset safe object
$Lemonldap::NG::Portal::Simple::safe = undef;
$p->{useSafeJail} = 0;

# Fake Safe jail
ok( $p->{useSafeJail} == 0,                  'Safe jail off' );
ok( $p->safe->reval('$uid') eq $sessionData, 'Safe jail off - session data' );
ok( $p->safe->reval('$ENV{REMOTE_ADDR}') eq $envData,
    'Safe jail off - env data' );
ok(
    defined $p->safe->reval('checkDate(0,1)'),
    'Safe jail off - extended function'
);