wrolpi/modules/zim/test
Roland aeebe8d833
zim: address PR review — config race, YAML null, path traversal, pinned build
Triage of Greptile findings on the default-Zim / configurable-directory PR:

- Stale config on restart (P1): settings update() only queues an async
  background_save, and the restart switch has no ordering guarantee (the switch
  worker pops LIFO), so start_kiwix_serve.sh could read the old zims_destination.
  Save the config synchronously before activating the restart switch.
- YAML null (P1): read_config_value.sh now treats an unquoted null/~ as unset
  (returns the default), matching PyYAML/the Python config layer.  A quoted
  "null" remains the literal string.
- Path traversal (P1/security): the settings API now rejects a zims_destination
  containing "..", and start_kiwix_serve.sh defends in depth by falling back to
  `zims` for any absolute/traversal/empty value, so Kiwix can never scan or
  rewrite library.xml outside the media root.
- Reproducible build (P2): pin the zim-tools image to 3.7.0 instead of :latest.

Tests added for null handling, traversal rejection (API + script).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 19:10:09 -06:00
..
__init__.py Zim/Kiwix (Wikipedia) feature 2023-07-10 21:30:40 -06:00
test_api.py Postgres -> SQLite hard cutover: the database moves into the media directory. 2026-07-12 14:09:37 -06:00
test_lib.py Postgres -> SQLite hard cutover: the database moves into the media directory. 2026-07-12 14:09:37 -06:00
test_read_config_value.py zim: address PR review — config race, YAML null, path traversal, pinned build 2026-07-20 19:10:09 -06:00
test_restart_kiwix.py Fixing kiwix restart cmd: missing comma silently concatenated two argv entries. 2026-05-25 20:16:02 -06:00
test_start_kiwix_serve.py zim: address PR review — config race, YAML null, path traversal, pinned build 2026-07-20 19:10:09 -06:00
test_zim_downloaders.py Migrating Kiwix downloaders. 2026-05-07 15:54:53 -06:00
test_zim_modeler_loop.py Fixing bug where not all archives were modeled. 2025-12-18 17:19:57 -07:00