From d50aa6aa72e95d7ca0b916a31eb292d2ca379ff2 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 28 Aug 2024 15:43:53 -0300 Subject: [PATCH] Bug 37757: (follow-up) Warn on bad values and survive Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer --- Koha/Patron.pm | 7 ++++++- t/db_dependent/Koha/Patron.t | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index dde7d73d1a..8058acd5dc 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -20,7 +20,7 @@ package Koha::Patron; use Modern::Perl; -use List::MoreUtils qw( any uniq ); +use List::MoreUtils qw( any none uniq ); use JSON qw( to_json ); use Unicode::Normalize qw( NFKD ); use Try::Tiny; @@ -1642,6 +1642,11 @@ sub notice_email_address { my $which_address = C4::Context->preference("EmailFieldPrimary"); + if ( $which_address && ( none { $_ eq $which_address } qw{email emailpro B_email cardnumber MULTI} ) ) { + warn "Invalid value for EmailFieldPrimary ($which_address)"; + $which_address = undef; + } + # if syspref is set to 'first valid', look up email address return $self->first_valid_email_address unless $which_address; diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t index fec2bb5ef2..970235ecc5 100755 --- a/t/db_dependent/Koha/Patron.t +++ b/t/db_dependent/Koha/Patron.t @@ -1791,7 +1791,7 @@ subtest 'notify_library_of_registration()' => sub { subtest 'notice_email_address() tests' => sub { - plan tests => 3; + plan tests => 5; $schema->storage->txn_begin; @@ -1817,6 +1817,21 @@ subtest 'notice_email_address() tests' => sub { "Koha::Patron->notice_email_address returns correct value when EmailFieldPrimary is 'MULTI' and EmailFieldSelection is 'email,emailpro'" ); + my $invalid = 'potato'; + + t::lib::Mocks::mock_preference( 'EmailFieldPrecedence', 'email|emailpro' ); + t::lib::Mocks::mock_preference( 'EmailFieldPrimary', $invalid ); + + my $email; + warning_is { $email = $patron->notice_email_address(); } + qq{Invalid value for EmailFieldPrimary ($invalid)}, + 'Warning correctly generated on invalid system preference'; + + is( + $email, $patron->email, + "Koha::Patron->notice_email_address falls back to correct value when EmailFieldPrimary is invalid" + ); + $schema->storage->txn_rollback; }; -- 2.39.5