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

(-)a/t/db_dependent/Auth.t (-2 / +134 lines)
Lines 7-13 use CGI qw ( -utf8 ); Link Here
7
use Test::MockObject;
7
use Test::MockObject;
8
use Test::MockModule;
8
use Test::MockModule;
9
use List::MoreUtils qw/all any none/;
9
use List::MoreUtils qw/all any none/;
10
use Test::More tests => 24;
10
use Test::More tests => 25;
11
use Test::NoWarnings;
11
use Test::NoWarnings;
12
use Test::Warn;
12
use Test::Warn;
13
use t::lib::Mocks;
13
use t::lib::Mocks;
Lines 1664-1669 subtest 'checkpw for users with shared cardnumber / userid ' => sub { Link Here
1664
1664
1665
};
1665
};
1666
1666
1667
subtest 'DISABLE_SYSPREF permission tests' => sub {
1668
    plan tests => 6;
1669
1670
    $schema->storage->txn_begin;
1671
1672
    # Test the permission checking logic directly using haspermission
1673
    my $patron_no_debug =
1674
        $builder->build_object( { class => 'Koha::Patrons', value => { flags => 4 } } );    # catalogue only
1675
    my $patron_with_debug =
1676
        $builder->build_object( { class => 'Koha::Patrons', value => { flags => 4 } } );    # catalogue only initially
1677
    my $superlibrarian = $builder->build_object( { class => 'Koha::Patrons', value => { flags => 1 } } );
1678
1679
    # Add debug permission to second patron by setting the flag directly
1680
    # Debug permission is bit 31, so we set that bit
1681
    my $debug_flag = 1 << 31;
1682
    $patron_with_debug->flags( $patron_with_debug->flags | $debug_flag )->store;
1683
1684
    # Test that our permission check logic works correctly
1685
    ok(
1686
        !haspermission( $patron_no_debug->userid, { debug => 1 } ),
1687
        'Patron without debug permission correctly denied'
1688
    );
1689
1690
    ok(
1691
        haspermission( $patron_with_debug->userid, { debug => 1 } ),
1692
        'Patron with debug permission correctly allowed'
1693
    );
1694
1695
    ok(
1696
        haspermission( $superlibrarian->userid, { debug => 1 } ),
1697
        'Superlibrarian correctly allowed debug permission'
1698
    );
1699
1700
    # Test the actual logic more directly by mocking CGI and checking environment variables
1701
    my $cgi = Test::MockObject->new();
1702
    $cgi->mock(
1703
        'param',
1704
        sub {
1705
            my ( $self, $param ) = @_;
1706
            return 'yes' if $param eq 'DISABLE_SYSPREF_IntranetUserCSS';
1707
            return;
1708
        }
1709
    );
1710
1711
    # Mock userenv for patron without debug permission
1712
    C4::Context->set_userenv(
1713
        $patron_no_debug->borrowernumber,
1714
        $patron_no_debug->userid,
1715
        $patron_no_debug->cardnumber,
1716
        $patron_no_debug->firstname,
1717
        $patron_no_debug->surname,
1718
        $patron_no_debug->branchcode,
1719
        $patron_no_debug->library->branchname,
1720
        $patron_no_debug->flags,
1721
        $patron_no_debug->email // '',
1722
        ''
1723
    );
1724
1725
    # Create mock input for get_template_and_user to trigger our syspref logic
1726
    my $input_mock = { query => $cgi };
1727
1728
    # Simulate the permission check in get_template_and_user
1729
    delete $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"};
1730
1731
    # Test the logic: Should not override for patron without permission
1732
    if ( C4::Context->userenv && haspermission( C4::Context->userenv->{'id'}, { debug => 1 } ) ) {
1733
        $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} = q{} if $cgi->param("DISABLE_SYSPREF_IntranetUserCSS");
1734
    }
1735
1736
    ok(
1737
        !exists $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"},
1738
        'IntranetUserCSS not overridden for patron without debug permission'
1739
    );
1740
1741
    # Now test with patron who has debug permission
1742
    C4::Context->set_userenv(
1743
        $patron_with_debug->borrowernumber,
1744
        $patron_with_debug->userid,
1745
        $patron_with_debug->cardnumber,
1746
        $patron_with_debug->firstname,
1747
        $patron_with_debug->surname,
1748
        $patron_with_debug->branchcode,
1749
        $patron_with_debug->library->branchname,
1750
        $patron_with_debug->flags,
1751
        $patron_with_debug->email // '',
1752
        ''
1753
    );
1754
1755
    delete $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"};
1756
1757
    # Test the logic: Should override for patron with permission
1758
    if ( C4::Context->userenv && haspermission( C4::Context->userenv->{'id'}, { debug => 1 } ) ) {
1759
        $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} = q{} if $cgi->param("DISABLE_SYSPREF_IntranetUserCSS");
1760
    }
1761
1762
    ok(
1763
        exists $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} && $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} eq '',
1764
        'IntranetUserCSS correctly overridden for patron with debug permission'
1765
    );
1766
1767
    # Test superlibrarian
1768
    C4::Context->set_userenv(
1769
        $superlibrarian->borrowernumber,
1770
        $superlibrarian->userid,
1771
        $superlibrarian->cardnumber,
1772
        $superlibrarian->firstname,
1773
        $superlibrarian->surname,
1774
        $superlibrarian->branchcode,
1775
        $superlibrarian->library->branchname,
1776
        $superlibrarian->flags,
1777
        $superlibrarian->email // '',
1778
        ''
1779
    );
1780
1781
    delete $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"};
1782
1783
    # Test the logic: Should override for superlibrarian
1784
    if ( C4::Context->userenv && haspermission( C4::Context->userenv->{'id'}, { debug => 1 } ) ) {
1785
        $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} = q{} if $cgi->param("DISABLE_SYSPREF_IntranetUserCSS");
1786
    }
1787
1788
    ok(
1789
        exists $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} && $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"} eq '',
1790
        'IntranetUserCSS correctly overridden for superlibrarian'
1791
    );
1792
1793
    # Clean up
1794
    delete $ENV{"OVERRIDE_SYSPREF_IntranetUserCSS"};
1795
    C4::Context->unset_userenv();
1796
1797
    $schema->storage->txn_rollback;
1798
};
1799
1667
sub set_weak_password {
1800
sub set_weak_password {
1668
    my ($patron) = @_;
1801
    my ($patron) = @_;
1669
    my $password = 'password';
1802
    my $password = 'password';
1670
- 

Return to bug 39142