Unit test for #2164
This commit is contained in:
parent
92af252ae9
commit
aa84a4213e
86
lemonldap-ng-portal/t/62-SingleSession-with-Rules.t
Normal file
86
lemonldap-ng-portal/t/62-SingleSession-with-Rules.t
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
use Test::More;
|
||||||
|
use strict;
|
||||||
|
use IO::String;
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
require 't/test-lib.pm';
|
||||||
|
}
|
||||||
|
|
||||||
|
my $res;
|
||||||
|
my $client = LLNG::Manager::Test->new( {
|
||||||
|
ini => {
|
||||||
|
logLevel => 'error',
|
||||||
|
authentication => 'Demo',
|
||||||
|
userDB => 'Same',
|
||||||
|
singleSession => '$uid eq "dwho"',
|
||||||
|
singleIP => '$uid eq "rtyler"',
|
||||||
|
singleUserByIP => '$env->{REMOTE_ADDR} eq "127.0.0.99"',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
sub loginUser {
|
||||||
|
my ( $client, $user, $ip ) = @_;
|
||||||
|
my $query = "user=$user&password=$user";
|
||||||
|
ok(
|
||||||
|
my $res = $client->_post(
|
||||||
|
'/',
|
||||||
|
IO::String->new($query),
|
||||||
|
length => length($query),
|
||||||
|
ip => $ip,
|
||||||
|
),
|
||||||
|
'Auth query'
|
||||||
|
);
|
||||||
|
count(1);
|
||||||
|
expectOK($res);
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub testReq {
|
||||||
|
my ( $client, $id, $msg ) = @_;
|
||||||
|
my $res;
|
||||||
|
ok( $res = $client->_get( '/', cookie => "lemonldap=$id" ), $msg );
|
||||||
|
count(1);
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $dwho_1 = expectCookie( loginUser( $client, "dwho", "127.0.0.1" ) );
|
||||||
|
my $dwho_2 = expectCookie( loginUser( $client, "dwho", "127.0.0.1" ) );
|
||||||
|
|
||||||
|
# dwho is able to login
|
||||||
|
expectOK( testReq( $client, $dwho_2 ) );
|
||||||
|
|
||||||
|
# dwho can only have one session
|
||||||
|
expectReject( testReq( $client, $dwho_1 ) );
|
||||||
|
|
||||||
|
my $rtyler_1 = expectCookie( loginUser( $client, "rtyler", "127.0.0.1" ) );
|
||||||
|
my $rtyler_2 = expectCookie( loginUser( $client, "rtyler", "127.0.0.99" ) );
|
||||||
|
my $rtyler_3 = expectCookie( loginUser( $client, "rtyler", "127.0.0.99" ) );
|
||||||
|
|
||||||
|
# rtyler was able to login
|
||||||
|
expectOK( testReq( $client, $rtyler_3 ) );
|
||||||
|
|
||||||
|
# rtyler can have multiple sessions
|
||||||
|
expectOK( testReq( $client, $rtyler_2 ) );
|
||||||
|
|
||||||
|
# rtyler can only have sessions on her new IP'
|
||||||
|
expectReject( testReq( $client, $rtyler_1 ) );
|
||||||
|
|
||||||
|
my $msmith_1 = expectCookie( loginUser( $client, "msmith", "127.0.0.99" ) );
|
||||||
|
my $msmith_2 = expectCookie( loginUser( $client, "msmith", "127.0.0.1" ) );
|
||||||
|
|
||||||
|
# msmith was able to login
|
||||||
|
expectOK( testReq( $client, $msmith_2 ) );
|
||||||
|
|
||||||
|
# msmith was able to open multiple sessions
|
||||||
|
expectOK( testReq( $client, $msmith_1 ) );
|
||||||
|
|
||||||
|
# multiple users not allowed on special IP
|
||||||
|
expectReject( testReq( $client, $rtyler_3 ) );
|
||||||
|
|
||||||
|
# multiple users allowed on other IPs
|
||||||
|
expectOK( testReq( $client, $dwho_2 ) );
|
||||||
|
|
||||||
|
clean_sessions();
|
||||||
|
|
||||||
|
done_testing( count() );
|
Loading…
Reference in New Issue
Block a user