Koha-clms/Koha/REST/V1
Tomas Cohen Arazi f146bf38b1 Bug 28604: Prevent double encoding of MARC::Record::MiJ->to_mij output
This patch fixes a double-encoding issue with MiJ output.

Mojolicious' *text* renderer encodes the passed information according to
the request context. [1]

MARC::Record::MiJ->to_mij, conveniently encodes the string before
output [2].

This causes double encoding.

So the solution to this situation, is to use the *data* renderer, which
doesn't perform any encoding [3].

To test:
1. Apply the regression tests patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/api/v1/biblios.t
=> FAIL: Tests contain diacritics and fail!
3. Have a record with diacritics
4. Try the API routes for fetching a biblio:
   $ curl --location --request GET 'http://localhost:8080/api/v1/public/biblios/144' \
          --header 'Accept: application/marc-in-json'
   (replace the record id with the one you've chosen)
=> FAIL: Boo, double encoding
5. Bonus point: you can try it on the non-public route, but you need
   more configuration boilerplate (basic auth, permissions). If you look
   at the fix, you will understand the tests cover it and no need to
   complicate yourself.
6. Apply this patch
7. Repeat 2
=> SUCCESS: Tests pass!
8. Repeat 4 (and maybe 5)
=> SUCCESS: No double encoding! Yay!
9. Sign off :-D

[1] https://metacpan.org/release/MRAMBERG/Convos-0.5/view/local/lib/perl5/Mojolicious/Guides/Rendering.pod#Rendering-text
[2] https://metacpan.org/dist/MARC-File-MiJ/source/lib/MARC/Record/MiJ.pm#L111
[3] https://metacpan.org/release/MRAMBERG/Convos-0.5/view/local/lib/perl5/Mojolicious/Guides/Rendering.pod#Rendering-data

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit cf44929d1c)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit cec90fb3c2)
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
2021-08-16 20:39:34 +02:00
..
Acquisitions Bug 25048: Make successful resource deletion return 204 2020-04-29 16:24:43 +01:00
Clubs Bug 27593: Consistent behavior for club holds route 2021-03-05 17:15:23 +00:00
Patrons Bug 25032: Make existing controllers use unhandled_exception 2020-04-29 16:24:18 +01:00
AdvancedEditorMacro.pm Bug 25502: Adapt Advanced macros routes to current guidelines 2020-05-19 15:21:16 +01:00
Auth.pm Bug 26322: Permissions not checked correctly for plugins 2020-09-22 23:12:43 +00:00
Biblios.pm Bug 28604: Prevent double encoding of MARC::Record::MiJ->to_mij output 2021-08-16 20:39:34 +02:00
Checkouts.pm Bug 25032: Make existing controllers use unhandled_exception 2020-04-29 16:24:18 +01:00
CirculationRules.pm Bug 18936: (QA follow-up) Add missing POD 2020-02-04 09:56:30 +00:00
Cities.pm Bug 25048: Make successful resource deletion return 204 2020-04-29 16:24:43 +01:00
Holds.pm Bug 18729: (follow-up) Adjust API to new spec 2021-04-25 17:04:18 +00:00
Illbackends.pm Bug 22615: Fix perlcritic 2020-03-05 13:03:46 +00:00
Illrequests.pm Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Items.pm Bug 25032: Make existing controllers use unhandled_exception 2020-04-29 16:24:18 +01:00
Libraries.pm Bug 25032: Make existing controllers use unhandled_exception 2020-04-29 16:24:18 +01:00
OAuth.pm Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Patrons.pm Bug 14708: (QA follow-up) Add tests 2020-12-09 21:39:45 +00:00
ReturnClaims.pm Bug 28586: (follow-up) updated_by should be set 2021-07-11 01:30:03 +02:00
Stage.pm Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Static.pm Bug 27179: Misspelling of Method in REST API files 2021-02-04 21:05:26 +00:00