From 3e5d5cc271d493dd18a95efd4a4a22a9d51b7ef7 Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@theke.io>
Date: Mon, 4 Jan 2021 11:24:51 -0300
Subject: [PATCH] Bug 27330: Return 403 if club has no enrollments

This patch makes the controller script return a 403 as it should [1]
instead of a plain 500.

To test:
1. Apply the regressions tests patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/api/v1/clubs_holds.t
=> FAIL: Tests fail!
3. Apply this patch
4. Repeat 2
=> SUCCESS: Tests pass!
5. Sign off :-D

[1] https://www.restapitutorial.com/httpstatuscodes.html

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
---
 Koha/REST/V1/Clubs/Holds.pm | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/Koha/REST/V1/Clubs/Holds.pm b/Koha/REST/V1/Clubs/Holds.pm
index 78f741acd0..9a4aaa052a 100644
--- a/Koha/REST/V1/Clubs/Holds.pm
+++ b/Koha/REST/V1/Clubs/Holds.pm
@@ -128,19 +128,9 @@ sub add {
     }
     catch {
         if ( blessed $_ ) {
-            if ( $_->isa('Koha::Exceptions::Object::FKConstraint') ) {
-                my $broken_fk = $_->broken_fk;
-
-                if ( grep { $_ eq $broken_fk } keys %{$Koha::REST::V1::Clubs::Holds::to_api_mapping} ) {
-                    $c->render(
-                        status  => 404,
-                        openapi => $Koha::REST::V1::Clubs::Holds::to_api_mapping->{$broken_fk} . ' not found.'
-                    );
-                }
-            }
-            elsif ($_->isa('Koha::Exceptions::ClubHold')) {
+            if ($_->isa('Koha::Exceptions::ClubHold::NoPatrons')) {
                 return $c->render(
-                    status  => 500,
+                    status  => 403,
                     openapi => { error => $_->description }
                 );
             }
-- 
2.20.1