From 0fd229e1e4993b05dd650d83e3acced1a32a3343 Mon Sep 17 00:00:00 2001 From: Julian Maurice <julian.maurice@biblibre.com> Date: Mon, 26 Jun 2023 15:25:12 +0200 Subject: [PATCH] Bug 31393: Koha::Config: handle the special case for 'content' attribute <key content="value"></key> was wrongly parsed as { key => 'value' } whereas it should be { key => { content => 'value' } } The 'content' attribute is used in shibboleth config Test plan: 1 Run `prove t/Koha/Config.t` Signed-off-by: David Nind <david@davidnind.com> --- Koha/Config.pm | 2 +- t/Koha/Config.t | 9 +++++++++ t/data/koha-conf.xml | 9 +++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Koha/Config.pm b/Koha/Config.pm index eb0671dc2e..f3308c76a7 100644 --- a/Koha/Config.pm +++ b/Koha/Config.pm @@ -239,7 +239,7 @@ sub _read_from_dom_node { delete $subconfig->{id}; } else { my @keys = keys %$subconfig; - if (1 == scalar @keys && $keys[0] eq 'content') { + if (!$node->hasAttributes() && 1 == scalar @keys && $keys[0] eq 'content') { # An element with no attributes and no child elements becomes its text content $subconfig = $subconfig->{content}; } elsif (0 == scalar @keys) { diff --git a/t/Koha/Config.t b/t/Koha/Config.t index 1bc54dbe94..3f933212c8 100755 --- a/t/Koha/Config.t +++ b/t/Koha/Config.t @@ -131,6 +131,15 @@ subtest 'read_from_file() tests' => sub { } }, 'useshibboleth' => '0', + 'shibboleth' => { + 'autocreate' => '1', + 'matchpoint' => 'userid', + 'mapping' => { + 'userid' => { 'is' => 'uid' }, + 'branchcode' => { 'content' => 'MAIN', 'is' => 'MAIN' }, + 'categorycode' => { 'content' => 'STAFF' }, + }, + }, 'zebra_lockdir' => '/home/koha/var/lock/zebradb', 'lockdir' => '__LOCK_DIR__', 'use_zebra_facets' => '1', diff --git a/t/data/koha-conf.xml b/t/data/koha-conf.xml index a2b66fb49f..1accab3c20 100644 --- a/t/data/koha-conf.xml +++ b/t/data/koha-conf.xml @@ -111,6 +111,15 @@ </mapping> </ldapserver> <useshibboleth>0</useshibboleth><!-- see C4::Auth_with_shibboleth for extra configs you must do to turn this on --> + <shibboleth> + <autocreate>1</autocreate> + <matchpoint>userid</matchpoint> <!-- koha borrowers field to match against for authentication --> + <mapping> + <userid is="uid"></userid> <!-- mapping between koha borrowers field and shibboleth attribute name. AD FS should use eppn instead of uid. --> + <branchcode content="MAIN" is="MAIN"></branchcode> + <categorycode content="STAFF"></categorycode> + </mapping> + </shibboleth> <zebra_lockdir>/home/koha/var/lock/zebradb</zebra_lockdir> <lockdir>__LOCK_DIR__</lockdir> <use_zebra_facets>1</use_zebra_facets> -- 2.30.2