From 335f3ed00a3caf4debcac471c4ea854f41c4a6bf Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 1 Jun 2023 13:42:03 +0000 Subject: [PATCH] Bug 33879: Add unit test to show problem MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Test plan: Run t/db_dependent/Auth.t without second patch. Should fail: # got: 'opac' # expected: 'intranet' Signed-off-by: Marcel de Rooy Signed-off-by: Björn Nylén Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi (cherry picked from commit a7fda386475f5d8b9c5866305ab6a4128a9ef584) Signed-off-by: Martin Renvoize (cherry picked from commit 5377331f46ff83c4dd83623d5dcb8734c7f73833) Signed-off-by: Matt Blenkinsop --- t/db_dependent/Auth.t | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/t/db_dependent/Auth.t b/t/db_dependent/Auth.t index 513f2b8e2a..02d142772c 100755 --- a/t/db_dependent/Auth.t +++ b/t/db_dependent/Auth.t @@ -1,7 +1,4 @@ #!/usr/bin/perl -# -# This Koha test module is a stub! -# Add more tests here!!! use Modern::Perl; @@ -10,7 +7,7 @@ use CGI qw ( -utf8 ); use Test::MockObject; use Test::MockModule; use List::MoreUtils qw/all any none/; -use Test::More tests => 17; +use Test::More tests => 18; use Test::Warn; use t::lib::Mocks; use t::lib::TestBuilder; @@ -942,4 +939,28 @@ subtest 'create_basic_session tests' => sub { is( $session->param('interface'), 'intranet', 'Staff interface gets converted to intranet' ); }; +subtest 'check_cookie_auth overwriting interface already set' => sub { + plan tests => 2; + + t::lib::Mocks::mock_preference( 'SessionRestrictionByIP', 0 ); + + my $patron = $builder->build_object({ class => 'Koha::Patrons' }); + my $session = C4::Auth::get_session(); + $session->param( 'number', $patron->id ); + $session->param( 'id', $patron->userid ); + $session->param( 'ip', '1.2.3.4' ); + $session->param( 'lasttime', time() ); + $session->param( 'interface', 'opac' ); + $session->flush; + + C4::Context->interface('intranet'); + C4::Auth::check_cookie_auth( $session->id ); + is( C4::Context->interface, 'intranet', 'check_cookie_auth did not overwrite' ); + delete $C4::Context::context->{interface}; # clear context interface + C4::Auth::check_cookie_auth( $session->id ); + is( C4::Context->interface, 'opac', 'check_cookie_auth used interface from session when context interface was empty' ); + + t::lib::Mocks::mock_preference( 'SessionRestrictionByIP', 1 ); +}; + $schema->storage->txn_rollback; -- 2.39.2