Koha/t/db_dependent
Magnus Enger 6fec4ea0df
Bug 26170: Add protected status for patrons
This set of patches makes it possible to protect patrons from being accidetally
deleted or merged with other patrons, from the UI and from (well behaved) cron
jobs. The following subroutines are affected:
- Koha::Patron::delete
- Koha::Patron::merge_with
- Koha::Patron::safe_to_delete
- C4::Members::GetBorrowersToExpunge

Please note:
- This does not intend to protect patrons from being edited, only from being
  deleted

To test:

* Tests
- Run the affected tests:
  prove t/db_dependent/Members.t
  prove t/db_dependent/Koha/Patrons.t

* Editing protected status and manual deletion
- Add a new user, note the presence of the "Protected" field under "Library
  management", but leave it at the default "No", for now.
- Note that "Protected" is displayed in the "Library use" section of the patron
  details.
- Note that More > Delete is avaiable as an action when the patron is saved
- Edit the user and set "Protected" to "Yes"
- Note that More > Delete is now disabled, with a note that the patron is protected

* Batch patron deletion
- Go to Tools > Batch patron deletion and anonymization
- Check the box for "Verify you want to delete patrons"
- Choose the category of your protected patron for "whose patron category is"
  and click "Next" to run the actual deletion
- Check that your protected patron was not deleted

* Merging patrons
- Make sure you have two patrons with similar names or the same category, so
  you can find them with one search. One should be protected, one not.
- Search for the patrons, tick their boxes and click on "Merge selected patrons"
- Select one of the patrons as the "patron to keep".
. Click on "Merge patrons"
- "No valid patrons to merge were found" should be shown
- Repeat this with the other patron as the "patron to keep"
(A future enhancement could be to not allow a protected patron to be selected for
merging in the first place.)

* misc/cronjobs/delete_patrons.pl
- Make sure you have a protected patron, in a category with at least one more
  patron.
- Run something like this (at least in ktd):
  $ perl misc/cronjobs/delete_patrons.pl --category_code <code> -v --confirm
  (Replace <code> with the actual categorycode.)
- Make sure the borrowernumber of the protected patron is not mentioned in the
  output of the script.
- Check the protected patron was not deleted
- Check the non-protected patrons were deleted

* REST API (with ktd)
- Make sure you still have a protected patron, and note their borrowernumber
- Enable RESTBasicAuth and restart all the things
- Run these two commands from the command line on the host:
  $ curl -u koha:koha --request GET "http://localhost:8081/api/v1/patrons/54"
  $ curl -u koha:koha --request DELETE "http://localhost:8081/api/v1/patrons/54"
  (Replace 54 with the actual borrowernumber of your protected patron.)
- The first curl command should give you the patron details. The second should
  give this output:
  {"error":"Protected patrons cannot be deleted","error_code":"is_protected"}

There could be more functions/scripts where patrons are deleted that I have not
thought about. Please report them on the bug if you find any!

Update 2023-10-19: Fix "More > Delete" on patron, so link can not be clicked.
Update 2023-10-19: Rebase

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-11-01 17:23:06 -03:00
..
Acquisition Bug 34845: Fix GetBasketGroupAsCSV.t is CSVDelimiter is not ',' 2023-09-22 10:52:43 -03:00
api/v1 Bug 34587: Fix license issues 2023-11-01 09:26:11 -03:00
Auth Bug 24387: Rename "News" with "Additional contents" 2021-08-16 11:55:55 +02:00
AuthoritiesMarc
Authority Bug 19693: Add test sub to Merge.t 2022-10-24 17:20:25 -03:00
Biblio Bug 34549: Strip non-XML chars during TransformHtmlToMarc 2023-10-09 11:41:32 -03:00
Budgets Bug 27550: Add unit test for CloneBudgetHierarchy 2022-09-22 08:18:43 -03:00
Circulation Bug 25560: Unit tests 2023-10-10 10:53:58 -03:00
CourseReserves Bug 32351: Fix CourseItems.t 2022-11-30 15:58:18 -03:00
Creators Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
cronjobs Bug 28931: Use EXPORT_OK from Koha::DateUtils 2021-10-07 11:01:05 +02:00
data Bug 34587: SushiCounter tests 2023-10-31 16:46:27 -03:00
Exporter Bug 25503: Add failing test for _get_biblio_for_export 2023-05-10 15:26:19 -03:00
Holds Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Illrequest Bug 34842: Fix Illrequest/Config.t if DB upgraded twice 2023-10-03 08:51:12 -04:00
Items Bug 31196: Remove 'default_value_for_mod_marc-' clear_from_cache calls 2022-10-25 11:16:57 -03:00
Koha Bug 26170: Add protected status for patrons 2023-11-01 17:23:06 -03:00
Labels Bug 10762: Fix tests continued 2023-10-28 10:02:31 -03:00
LDAP
Letters Bug 31383: Adjust and add tests 2023-10-20 14:43:57 -03:00
Members Bug 33947: Remove GetAllIssues 2023-10-20 11:03:03 -03:00
misc/translator
OAI Bug 29697: Replace some missing occurrences 2022-07-25 09:30:30 -03:00
Patron Bug 16223: Tidy 2023-10-11 12:13:12 -03:00
Record Bug 33045: Fix shebang of marcrecord2csv.t 2023-09-15 11:57:17 -03:00
Reports Bug 26669: Last Run if report not always updated 2022-04-04 16:23:46 +02:00
Reserves Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Search Bug 28931: Use EXPORT_OK from Koha::DateUtils 2021-10-07 11:01:05 +02:00
selenium Bug 34227: (follow-up) Adjust selenium tests 2023-10-30 09:39:38 -03:00
Serials Bug 23775: Claiming a serial issue doesn't create the next one 2023-07-03 10:35:09 -03:00
SIP Bug 15504: Fix tests count 2023-10-24 10:05:25 -03:00
Template/Plugin Bug 31383: (bug 29691 follow-up) Remove get_opac_news_by_id 2023-10-23 10:45:34 -03:00
Utils Bug 30063: Remove occurrences of C4::Utils::DataTables::Members 2022-04-04 09:47:01 +02:00
www Bug 33020: (QA follow-up) POD and chmod 2023-02-27 11:33:50 -03:00
00-strict.t Bug 28617: Remove kohalib.pl and rely on PERL5LIB 2021-12-07 12:16:28 -10:00
Accounts.t Bug 34912: Add 14 hours to 1970 date in Account(s).t 2023-10-04 09:15:39 -04:00
Acquisition.t Bug 14092: (QA follow-up) Avoid fiddling with the hash in the template 2023-10-20 16:31:15 -03:00
Amazon.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
ArticleRequests.t Bug 29182: (follow-up) Fix ArticleRequests.t 2021-10-07 15:49:01 +02:00
AudioAlerts.t Bug 29844: Fix ->search occurrences 2022-02-09 15:36:23 -10:00
Auth.t Bug 15504: (follow-up) Unit tests 2023-10-24 10:05:15 -03:00
Auth_with_cas.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Auth_with_ldap.t Bug 30646: Unit tests for Auth_with_ldap 2022-10-03 14:02:40 -03:00
Auth_with_shibboleth.t Bug 33778: (QA follow-up) Update for master 2023-06-29 11:11:10 -03:00
AuthorisedValues.t Bug 32997: Add tests 2023-03-02 12:00:16 -03:00
AuthoritiesMarc.t Bug 27943: (QA follow-up) Perltidy 2023-10-30 09:02:21 -03:00
AuthoritiesMarc_GetTagsLabels.t Bug 30446: Add a test for GetTagsLabels 2022-04-21 21:01:09 -10:00
AuthUtils.t Bug 26384: (QA follow-up) Fix two exceptions 2020-09-11 09:56:56 +02:00
Barcodes.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Barcodes_ValueBuilder.t Bug 26328: Add test 2022-03-23 10:50:51 -10:00
Biblio.t Bug 34014: Unit test 2023-10-20 11:02:59 -03:00
Biblio_holdsqueue.t Bug 30728: Add unit tests 2022-05-12 22:17:46 -10:00
Breeding.t Bug 28166: (QA follow-up) Fix and tidy tests and code 2023-10-23 11:33:50 -03:00
Breeding_Auth.t Bug 33404: Add unit tests 2023-07-05 12:17:22 -03:00
Budgets.t Bug 31631: (QA follow-up) Tidy code 2023-10-18 15:41:37 -03:00
Cache.t Bug 16067: Remove FastMmap 2020-12-04 15:40:58 +01:00
Calendar.t Bug 33727: (QA follow-up) perl tidy whole file 2023-07-14 12:14:37 -03:00
Charset.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
check_kohastructure.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
check_sysprefs.t Bug 23895: Fix check_sysprefs.t 2020-10-14 15:52:29 +02:00
Circulation.t Bug 34924: Add 'auto_renew_final' and 'auto_unseen_final' return to CanBookBeRenewed 2023-10-31 11:02:46 -03:00
Circulation_holdsqueue.t Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Clubs.t Bug 29736: (QA follow-up) No need to delete all clubs 2022-01-13 16:37:33 -10:00
Context.t Bug 32687: Get server version in Context::get_versions 2023-02-24 17:52:28 -03:00
Contract.t Bug 28931: Use EXPORT_OK from Koha::DateUtils 2021-10-07 11:01:05 +02:00
CourseReserves.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
db_structure.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
DecreaseLoanHighHolds.t Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Filter_MARC_ViewPolicy.t Bug 32648: Clear cache in Filter_MARC_ViewPolicy.t 2023-05-16 11:24:26 +02:00
Fines.t Bug 28931: Use EXPORT_OK from Koha::DateUtils 2021-10-07 11:01:05 +02:00
FrameworkPlugin.t Bug 28769: Remove tabloop from cataloguing plugins 2021-10-18 11:28:40 +02:00
Heading.t Bug 33557: Add LinkerConsiderThesaurus system preference 2023-05-10 15:26:26 -03:00
Heading_MARC21.t Bug 33277: Do not search using thesaurus when linking non 6XX fields 2023-05-10 15:26:22 -03:00
Hold.t Bug 14783: (QA follow-up) Rename method and move tests 2022-10-17 15:43:22 -03:00
Holds.t Bug 32894: (QA follow-up) Fix tests 2023-06-07 16:44:05 -03:00
HoldsQueue.t Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Holidays.t Bug 27249: Replace DateTime->now by dt_from_string 2023-10-17 14:45:34 -03:00
Illbatches.t Bug 30719: Remove unused Koha::Illbatch->requests_count method 2023-10-17 14:45:24 -03:00
IllbatchStatuses.t Bug 30719: (QA follow-up) Updating remaining naming 2023-10-17 14:45:23 -03:00
Illcomments.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
Illrequestattributes.t Bug 33970: Fix tests 2023-10-25 12:09:46 -03:00
Illrequests.t Bug 34905: Fix icon 2023-10-04 09:15:41 -04:00
ILSDI_Services.t Bug 15504: Remove PatronLastActivity preference 2023-10-24 10:05:22 -03:00
ImportBatch.t Bug 32804: (QA follow-up) Typo ahs and fix ImportBatch.t 2023-03-17 09:59:12 -03:00
ImportExportFramework.t Bug 13952: (follow-up) Tests 2022-04-04 16:23:45 +02:00
Installer.t Bug 26326: (follow-up) Add ability to check for existence of any primary key 2021-11-03 15:40:52 +01:00
Items.t Bug 32496: Fix tests 2023-09-22 12:35:47 -03:00
Koha.t Bug 34812: Move subtests to db_dependent/Koha.t 2023-09-18 12:06:27 -03:00
Koha_Database.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
Koha_Elasticsearch.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
Koha_ExternalContent_OverDrive.t
Koha_MetadataRecord_Authority.t Bug 30756: Rename to Koha_MetadataRecord_Authority 2022-06-02 13:53:39 -03:00
Koha_Misc_Files.t Bug 22001: Remove the RaiseError occurrences from tests 2020-03-27 08:52:56 +00:00
Languages.t Bug 32775: (QA follow-up) remove useless empty line 2023-05-15 18:23:54 -03:00
Letters.t Bug 12532: (follow-up) Catch more cases in tests 2023-10-10 09:58:54 -03:00
LibraryGroups.t Bug 29844: Fix ->search occurrences 2022-02-09 15:36:23 -10:00
Linker_Default.t Bug 30280: Add Unit tests 2022-10-03 10:00:12 -03:00
Linker_FirstMatch.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Log.t Bug 32057: (QA follow-up) Add a simple test 2023-03-14 08:49:34 -03:00
MarcModificationTemplates.t Bug 31644: (QA follow-up) Add two missing shebang lines 2022-10-24 11:53:19 -03:00
Matcher.t Bug 33869: Move Matcher.t to t/db_dependent 2023-09-01 11:07:45 -03:00
Members.t Bug 26170: Add protected status for patrons 2023-11-01 17:23:06 -03:00
Message.t Bug 33192: (QA follow-up) Fix it-IT sample data and unit tests 2023-04-14 11:35:40 -03:00
MungeMarcPrice.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Overdues.t Bug 29844: Fix ->search occurrences 2022-02-09 15:36:23 -10:00
Passwordrecovery.t Bug 31739: Password recovery from staff fails if previous expired reset-entry exists. 2022-10-24 14:12:16 -03:00
Patroncards.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
PatronLists.t Bug 16446: Add ability to add patrons to list by borrowernumber 2021-10-21 12:24:04 +02:00
Patrons.t Bug 12446: (QA follow-up) Rename canbeguarantee => can_be_guarantee 2022-06-23 13:34:05 -03:00
Prices.t Bug 34967: Move to db_dependent 2023-10-03 09:24:50 -04:00
Record.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
RecordProcessor_EmbedSeeFromHeadings.t Bug 25898: Prohibit indirect object notation 2020-10-15 12:56:30 +02:00
Reports.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Reserves.t Bug 34678: Unit test 2023-10-27 16:44:24 -03:00
rollingloans.t Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
RotatingCollections.t Bug 29144: Remove opac_info from a few tests 2022-09-16 09:55:20 -03:00
Search.t Bug 34847: Fix t/db_dependent/Search.t 2023-09-22 10:52:43 -03:00
Serials.t Bug 31846: Add syspref for serials search results limit 2023-10-25 10:35:27 -03:00
Serials_2.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Service.t Bug 5477 [SIGN-OFF] Fix test cases that require database access 2011-01-29 17:02:31 +13:00
ShelfBrowser.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Sitemapper.t Bug 33871: Test where parameter in Sitemapper.t 2023-09-01 11:23:26 -03:00
SocialData.t Bug 33833: Move to db_dependent 2023-09-05 14:35:36 -03:00
StockRotationItems.t Bug 30518: Unit test 2022-04-19 21:25:50 -10:00
StockRotationRotas.t Bug 26384: Fix executable flags 2020-09-11 09:56:56 +02:00
StockRotationStages.t Bug 29809: Fix StockRotationStages.t 2022-01-31 21:55:40 -10:00
SuggestionEngine_ExplodedTerms.t Bug 31069: Remove ExplodedTerms dependency on templates 2022-07-18 12:37:35 -03:00
Suggestions.t Bug 32942: (follow-up) Fix test 2023-09-19 15:51:39 -03:00
sysprefs.t Bug 22880: (follow-up) Loose ends: Better DB update, global inclusion, etc. 2020-02-24 13:24:25 +00:00
TablesSettings.t Bug 25898: Prohibit indirect object notation 2020-10-15 12:56:30 +02:00
Tags.t Bug 31517: Remove unused get_tag function 2022-11-04 19:30:56 -03:00
Templates.t Bug 29695: Remove GetColumnDefs 2022-04-12 11:40:16 +02:00
TestBuilder.t Bug 28966: (QA follow-up) Fix failing unit tests 2023-07-26 15:41:12 -03:00
Upload.t Bug 31598: Fix random failure on Jenkins for Upload.t 2022-09-22 08:07:01 -03:00
UsageStats.t Bug 28565: Refactor tests 2021-07-26 12:46:35 +02:00
Virtualshelves.t Bug 30418: Unit tests 2023-05-15 18:23:58 -03:00
XISBN.t Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
XSLT.t Bug 33733: Move to db_dependent 2023-05-16 12:38:16 +02:00
yaml.t Bug 22824: Adjust tests to match final behaviours 2021-03-04 16:18:42 +01:00
zebra_config.pl Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00