Skip to content

Commit

Permalink
Bug 36908: Expand, clarify, and tidy tests for AutoLocation
Browse files Browse the repository at this point in the history
Signed-off-by: Jonathan Druart <[email protected]>
Signed-off-by: Martin Renvoize <[email protected]>
Signed-off-by: Katrin Fischer <[email protected]>
  • Loading branch information
kidclamp authored and kfischer committed May 23, 2024
1 parent 1251138 commit 6966fcc
Showing 1 changed file with 29 additions and 9 deletions.
38 changes: 29 additions & 9 deletions t/db_dependent/Auth.t
Original file line number Diff line number Diff line change
Expand Up @@ -1344,7 +1344,7 @@ subtest 'StaffLoginBranchBasedOnIP' => sub {

subtest 'AutoLocation' => sub {

plan tests => 8;
plan tests => 9;

$schema->storage->txn_begin;

Expand All @@ -1366,7 +1366,7 @@ subtest 'AutoLocation' => sub {

$ENV{REMOTE_ADDR} = '127.0.0.1';
my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
is( $userid, $patron->userid );
is( $userid, $patron->userid, "Standard login without AutoLocation" );

my $template;
t::lib::Mocks::mock_preference( 'AutoLocation', 1 );
Expand All @@ -1375,33 +1375,53 @@ subtest 'AutoLocation' => sub {
$patron->library->branchip('')->store; # There is none, allow access from anywhere
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
is( $userid, $patron->userid );
is( $template, undef );
is( $userid, $patron->userid, "Login is successful when patron's branch does not have an IP" );
is( $template, undef, "Template is undef as none passed and not sent to error page" );

$patron->library->branchip('1.2.3.4')->store;
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
is( $template->{VARS}->{wrongip}, 1 );
is(
$template->{VARS}->{wrongip}, 1,
"Login denied when no branch specified and IP does not match patron's branch IP"
);

$patron->library->branchip('127.0.0.1')->store;
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
is( $userid, $patron->userid );
is( $template, undef );
is( $userid, $patron->userid, "Login is successful when patron IP and branch IP match" );
is( $template, undef, "Template is undef as none passed and not sent to error page" );

my $other_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '127.0.0.1' } } );
$patron->library->branchip('127.0.0.1')->store;
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
my $session = C4::Auth::get_session($sessionID);
is( $session->param('branch'), $patron->branchcode );
is(
$session->param('branch'), $patron->branchcode,
"If no branch specified, and IP matches patron branch, login is successful at patron branch even if another branch IP matches"
);

$cgi->param( 'branch', $other_library->branchcode );
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
$session = C4::Auth::get_session($sessionID);
is(
$session->param('branch'), $other_library->branchcode,
"AutoLocation allows specifying a branch as long as the IP matches"
);

$other_library->branchip('129.0.0.1')->store;
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
is( $template->{VARS}->{wrongip}, 1, "Login denied when branch specified and IP does not match branch IP" );

my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } );
$cgi->param( 'branch', $noip_library->branchcode );
( $userid, $cookie, $sessionID, $flags, $template ) =
C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
$session = C4::Auth::get_session($sessionID);
is( $session->param('branch'), $noip_library->branchcode );
is( $session->param('branch'), $noip_library->branchcode, "When a branch with no IP set is chosen, we respect the choice regardless of current IP" );

$schema->storage->txn_rollback;

Expand Down

0 comments on commit 6966fcc

Please sign in to comment.