From 47c7900ee2489911ea6a2de413136d65ce383240 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 21 Dec 2020 11:05:26 +0100 Subject: [PATCH] Bug 27004: Prevent claim resolution to fail If the account of the patron who created a claim is removed, then the claim won't be resolvable. Trying to resolve the claim will result in a 500: [2020/12/21 10:05:55] [ERROR] PUT /api/v1/return_claims/1/resolve: unhandled exception (Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy)<<[created_by is mandatory]>> Koha::REST::Plugin::Exceptions::__ANON We should not check if created_by exist when we update an existing hold, only when we create it. Test plan: - Login with patron A - Check an item in - Claim returned it - Login with patron B - Delete patron A - Resolve the claim --- Koha/Checkouts/ReturnClaim.pm | 2 +- t/db_dependent/api/v1/return_claims.t | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Koha/Checkouts/ReturnClaim.pm b/Koha/Checkouts/ReturnClaim.pm index 92ab38f08d..624c725949 100644 --- a/Koha/Checkouts/ReturnClaim.pm +++ b/Koha/Checkouts/ReturnClaim.pm @@ -48,7 +48,7 @@ exceptions as needed. sub store { my ( $self ) = @_; - unless ( $self->created_by ) { + unless ( $self->in_storage || $self->created_by ) { Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy->throw(); } diff --git a/t/db_dependent/api/v1/return_claims.t b/t/db_dependent/api/v1/return_claims.t index f0d8b1f24f..1664102c6f 100755 --- a/t/db_dependent/api/v1/return_claims.t +++ b/t/db_dependent/api/v1/return_claims.t @@ -204,6 +204,8 @@ subtest 'resolve_claim() tests' => sub { my $claim_id = $claim->id; + $claim->created_by(undef)->store; # resolve the claim must work even if the created_by patron has been removed + # Resolve a claim $t->put_ok( "//$userid:$password@/api/v1/return_claims/$claim_id/resolve" => json => { -- 2.20.1