From 225f7b3a7b3596ea637a603c2101fa6e2365f40e Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Wed, 14 Dec 2022 21:53:18 +0000 Subject: [PATCH] Bug 30624: Unit tests Signed-off by: Bob Bennhoff/AspenCat Team --- t/db_dependent/Auth.t | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/t/db_dependent/Auth.t b/t/db_dependent/Auth.t index ee690f79ae6..63c6418809c 100755 --- a/t/db_dependent/Auth.t +++ b/t/db_dependent/Auth.t @@ -41,7 +41,7 @@ $schema->storage->txn_begin; subtest 'checkauth() tests' => sub { - plan tests => 6; + plan tests => 7; my $patron = $builder->build_object({ class => 'Koha::Patrons', value => { flags => undef } }); @@ -260,8 +260,47 @@ subtest 'checkauth() tests' => sub { is( $auth_status, 'ok', 'User waiting for 2FA setup, pref was disabled, access OK' ); }; - C4::Context->_new_userenv; # For next tests + subtest 'loggedinlibrary permission tests' => sub { + + plan tests => 3; + my $staff_user = $builder->build_object( + { class => 'Koha::Patrons', value => { flags => 536870916 } } ); + my $branch = $builder->build_object({ class => 'Koha::Libraries' }); + + my $password = 'password'; + t::lib::Mocks::mock_preference( 'RequireStrongPassword', 0 ); + $staff_user->set_password( { password => $password } ); + my $cgi = Test::MockObject->new(); + $cgi->mock( 'cookie', sub { return; } ); + $cgi->mock( + 'param', + sub { + my ( $self, $param ) = @_; + if ( $param eq 'userid' ) { return $staff_user->userid; } + elsif ( $param eq 'password' ) { return $password; } + elsif ( $param eq 'branch' ) { return $branch->branchcode; } + else { return; } + } + ); + + $cgi->mock( 'request_method', sub { return 'POST' } ); + my ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 'authrequired' ); + my $sesh = C4::Auth::get_session($sessionID); + is( $sesh->param('branch'), $branch->branchcode, "If user has permission, they should be able to choose a branch" ); + + $staff_user->flags(4)->store->discard_changes; + ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 'authrequired' ); + $sesh = C4::Auth::get_session($sessionID); + is( $sesh->param('branch'), $staff_user->branchcode, "If user has not permission, they should not be able to choose a branch" ); + + $staff_user->flags(1)->store->discard_changes; + ( $userid, $cookie, $sessionID, $flags ) = C4::Auth::checkauth( $cgi, 'authrequired' ); + $sesh = C4::Auth::get_session($sessionID); + is( $sesh->param('branch'), $branch->branchcode, "If user is superlibrarian, they should be able to choose a branch" ); + + }; + C4::Context->_new_userenv; # For next tests }; subtest 'track_login_daily tests' => sub { -- 2.30.2