Koha-clms/t/db_dependent/api/v1
Martin Renvoize b80dafc210
Bug 23909: Apply hold policy to OPAC REST self-checkout
The OPAC REST self-checkout path (guarded by OpacTrustedCheckout) is
functionally SCO-over-API, so it should honour the same hold policy
as the SCO web interface. Previously _check_availability unconditionally
promoted RESERVED, RESERVE_WAITING, TRANSFERRED and PROCESSING from
the confirmation hash to the blockers hash for any public caller. This
meant the OPAC REST endpoint always refused held items regardless of
the librarian's AllowItemsOnHoldCheckoutSCO configuration.

With this patch the promotion is gated on AllowItemsOnHoldCheckoutSCO:

* 0 - Promote all four hold confirmations to blockers (previous
      behaviour for pending holds)
* 1 - Promote only waiting/transit/processing; silently allow
      checkout of items with a pending hold
* 2 - Promote none; silently allow checkout of items with any hold

Remaining hold confirmations are stripped from the response so the
caller does not have to resolve a confirmation token for a policy the
admin has already granted.

Test plan:
1. prove t/db_dependent/api/v1/checkouts.t
2. Enable OpacTrustedCheckout. POST an item with a pending hold for
   another patron to /api/v1/public/patrons/X/checkouts:
   - AllowItemsOnHoldCheckoutSCO=0: 403 Checkout not authorized
   - AllowItemsOnHoldCheckoutSCO=1: 201 Created
3. Place a waiting hold for another patron on an item. Repeat:
   - AllowItemsOnHoldCheckoutSCO=1: 403
   - AllowItemsOnHoldCheckoutSCO=2: 201

Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Andrew Fuerste Henry <andrew@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
2026-05-01 11:04:20 -06:00
..
items Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
public Bug 38365: Make swagger-cli happy 2026-03-16 11:57:37 +01:00
acquisitions_baskets.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
acquisitions_funds.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
acquisitions_orders.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
acquisitions_vendor_issues.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
acquisitions_vendors.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
additional_contents.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
advanced_editor_macros.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
article_requests.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
auth.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
auth_authenticate_api_request.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
auth_basic.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
authorised_values.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
authorities.t Bug 41901: (follow-up) Fix perlcritic violation in unit tests 2026-04-29 09:09:13 -06:00
biblios.t Bug 35380: (QA follow-up) Minor code quality fixes 2026-03-26 09:50:53 +01:00
bookings.t Bug 40134: (RM follow-up) Tidy commit 2026-02-10 08:51:04 -07:00
cash_registers.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
cashups.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
checkouts.t Bug 23909: Apply hold policy to OPAC REST self-checkout 2026-05-01 11:04:20 -06:00
circulation_rules.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
cities.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
clubs_holds.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
config_search_mappings.t Bug 22639: Add GET /config/search_mappings endpoint 2026-04-15 11:37:17 -06:00
deleted_biblios.t Bug 17387: (follow-up) move records_restore under editcatalogue permission 2026-04-15 14:10:27 -06:00
deleted_items.t Bug 17387: (follow-up) move records_restore under editcatalogue permission 2026-04-15 14:10:27 -06:00
edifact_files.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_agreements.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_counter_files.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_counter_logs.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_counter_registries.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
erm_custom_reports.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_documents.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_eholdings_packages.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_eholdings_resources.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_eholdings_titles.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_licenses.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_sushi_services.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
erm_usage_data_providers.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_usage_titles.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
erm_users.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
extended_attribute_types.t Bug 39438: (RM follow-up): Fix failing test 2026-02-06 10:43:09 -07:00
file_transports.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
holds.t Bug 23269: (RM follow-up): Tidy 2026-03-21 20:28:15 +00:00
idp.t Bug 37711: API changes 2025-11-05 07:12:31 -07:00
ill_backends.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
ill_batches.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
ill_batchstatuses.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
ill_requests.t Bug 40105: Patrons cannot add notes when creating an ILL 2026-03-05 08:33:32 -07:00
ill_users.t Bug 40504: (QA follow-up) Tidy 2026-03-26 14:21:25 +01:00
import_batch_profiles.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
import_record_matches.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
item_groups.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
item_types.t Bug 38136: Refactor database translations (alternative) 2026-04-15 11:37:14 -06:00
items.t Bug 38136: Clear localization cache before testing itemtype localization 2026-04-17 09:17:58 -06:00
jobs.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
libraries.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
oauth.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
pagination.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
password_validation.t Bug 40286: (follow-up) Fix password_validation.t for find_by_identifier behavior 2026-03-23 08:01:09 +01:00
patron_categories.t Bug 26355: (QA follow-up) perl tidy to address qa tool errors 2026-05-01 09:30:03 -06:00
patrons.t Bug 26355: (QA follow-up) Strip self_renewal_available in EmailPatronRegistrations tests 2026-05-01 09:30:05 -06:00
patrons_accounts.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_checkouts.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_extended_attributes.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_hold_groups.t Bug 41849: Add tests 2026-04-10 09:48:05 -06:00
patrons_holds.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_password.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_password_expiration.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_recalls.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
patrons_self_renewal.t Bug 26355: (QA follow-up) perl tidy to address qa tool errors 2026-05-01 09:30:03 -06:00
preservation_Processings.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
preservation_Trains.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
preservation_WaitingList.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
provider.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
query.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
record_sources.t Bug 35380: Unit tests 2026-03-26 09:50:09 +01:00
responses.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
return_claims.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
search_filters.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
sip2_accounts.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
sip2_institutions.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
sip2_system_preference_overrides.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
smtp_servers.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
status.t Bug 41107: (QA follow-up) Tidy status.t 2026-03-23 09:33:54 +01:00
stockrotation_rotas.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
stockrotationstage.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
suggestions.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
sysprefs.t Bug 41994: Implement /sysprefs route to list system preferences 2026-04-15 11:37:05 -06:00
ticket_updates.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
tickets.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
transfer_limits.t Bug 41076: Adjust our perl tidiness for v20250105 2026-02-05 09:03:51 -07:00
two_factor_auth.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00
unhandled_exceptions.t Bug 40163: (follow-up) Fix wrong GNU links and update test 2025-09-24 09:25:04 -06:00