View | Details | Raw Unified | Return to bug 36908
Collapse All | Expand All

(-)a/t/db_dependent/Auth.t (-10 / +29 lines)
Lines 1344-1350 subtest 'StaffLoginBranchBasedOnIP' => sub { Link Here
1344
1344
1345
subtest 'AutoLocation' => sub {
1345
subtest 'AutoLocation' => sub {
1346
1346
1347
    plan tests => 8;
1347
    plan tests => 9;
1348
1348
1349
    $schema->storage->txn_begin;
1349
    $schema->storage->txn_begin;
1350
1350
Lines 1366-1372 subtest 'AutoLocation' => sub { Link Here
1366
1366
1367
    $ENV{REMOTE_ADDR} = '127.0.0.1';
1367
    $ENV{REMOTE_ADDR} = '127.0.0.1';
1368
    my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1368
    my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1369
    is( $userid, $patron->userid );
1369
    is( $userid, $patron->userid, "Standard login without AutoLocation" );
1370
1370
1371
    my $template;
1371
    my $template;
1372
    t::lib::Mocks::mock_preference( 'AutoLocation', 1 );
1372
    t::lib::Mocks::mock_preference( 'AutoLocation', 1 );
Lines 1375-1407 subtest 'AutoLocation' => sub { Link Here
1375
    $patron->library->branchip('')->store;    # There is none, allow access from anywhere
1375
    $patron->library->branchip('')->store;    # There is none, allow access from anywhere
1376
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1376
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1377
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1377
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1378
    is( $userid,   $patron->userid );
1378
    is( $userid,   $patron->userid, "Login is successful when patron's branch does not have an IP" );
1379
    is( $template, undef );
1379
    is( $template, undef,           "Template is undef as none passed and not sent to error page" );
1380
1380
1381
    $patron->library->branchip('1.2.3.4')->store;
1381
    $patron->library->branchip('1.2.3.4')->store;
1382
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1382
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1383
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
1383
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
1384
    is( $template->{VARS}->{wrongip}, 1 );
1384
    is(
1385
        $template->{VARS}->{wrongip}, 1,
1386
        "Login denied when no branch specified and IP does not match patron's branch IP"
1387
    );
1385
1388
1386
    $patron->library->branchip('127.0.0.1')->store;
1389
    $patron->library->branchip('127.0.0.1')->store;
1387
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1390
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1388
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1391
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1389
    is( $userid,   $patron->userid );
1392
    is( $userid,   $patron->userid, "Login is successful when patron IP and branch IP match" );
1390
    is( $template, undef );
1393
    is( $template, undef,           "Template is undef as none passed and not sent to error page" );
1391
1394
1392
    my $other_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '127.0.0.1' } } );
1395
    my $other_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '127.0.0.1' } } );
1393
    $patron->library->branchip('127.0.0.1')->store;
1396
    $patron->library->branchip('127.0.0.1')->store;
1394
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1397
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1395
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1398
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1396
    my $session = C4::Auth::get_session($sessionID);
1399
    my $session = C4::Auth::get_session($sessionID);
1397
    is( $session->param('branch'), $patron->branchcode );
1400
    is(
1401
        $session->param('branch'), $patron->branchcode,
1402
        "If no branch specified, and IP matches patron branch, login is successful at patron branch even if another branch IP matches"
1403
    );
1404
1405
    $cgi->param( 'branch', $other_library->branchcode );
1406
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1407
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
1408
    $session = C4::Auth::get_session($sessionID);
1409
    is(
1410
        $session->param('branch'), $other_library->branchcode,
1411
        "AutoLocation allows specifying a branch as long as the IP matches"
1412
    );
1413
1414
    $other_library->branchip('129.0.0.1')->store;
1415
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1416
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet', undef, undef, { do_not_print => 1 } );
1417
    is( $template->{VARS}->{wrongip}, 1, "Login denied when branch specified and IP does not match branch IP" );
1398
1418
1399
    my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } );
1419
    my $noip_library = $builder->build_object( { class => 'Koha::Libraries', value => { branchip => '' } } );
1400
    $cgi->param( 'branch', $noip_library->branchcode );
1420
    $cgi->param( 'branch', $noip_library->branchcode );
1401
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1421
    ( $userid, $cookie, $sessionID, $flags, $template ) =
1402
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1422
        C4::Auth::checkauth( $cgi, 0, { catalogue => 1 }, 'intranet' );
1403
    $session = C4::Auth::get_session($sessionID);
1423
    $session = C4::Auth::get_session($sessionID);
1404
    is( $session->param('branch'), $noip_library->branchcode );
1424
    is( $session->param('branch'), $noip_library->branchcode, "When a branch with no IP set is chosen, we respect the choice regardless of current IP" );
1405
1425
1406
    $schema->storage->txn_rollback;
1426
    $schema->storage->txn_rollback;
1407
1427
1408
- 

Return to bug 36908