secubox-deb/packages/secubox-exposure/tests
CyberMind-FR b9371aeba6 fix(tor): pre-create toolbox state files (500 on fresh install) + persist self-heal on torrc reset + package exposure persist unit + audit webui emancipation
FINAL-REVIEW fix wave for tor-enhancement-phase1:

- Critical 1: postinst pre-creates + chowns tor-exit-country.txt,
  tor-vpn-clients.txt, tor-bridges.txt under the 0750 root:secubox-toolbox
  /etc/secubox/toolbox dir, mirroring the filters.json pattern, so the
  first CRUD write on a fresh install no longer 500s with PermissionError.
- Critical 2: tor_reconcile_persist() now re-applies the torrc
  HiddenService* stanza whenever the key dir survives but the stanza is
  missing (torrc reset), not just when the key dir is absent, so a torrc
  reset no longer leaves a .onion permanently dark. Added
  _torrc_has_stanza() + repair-path tests.
- Packaging: debian/rules now installs
  sbin/secubox-exposure-tor-reconcile and the matching systemd unit;
  postinst enables the unit, so boot-time persist actually runs.
- Audit: emancipate_webui() now writes a CSPN audit-log entry (operator,
  action, resulting onion) via a new _audit_exposure_action() helper
  shared with the existing _audit_exposure() vhost-reach audit path.
- Confirmed emancipate_webui() already records local_port=9080 (not 80).
2026-07-09 11:17:32 +02:00
..
test_emancipate_webui.py fix(tor): pre-create toolbox state files (500 on fresh install) + persist self-heal on torrc reset + package exposure persist unit + audit webui emancipation 2026-07-09 11:17:32 +02:00
test_exclusion.py fix(exposure): gate /tor/add + emancipate; fail-open on undecodable list (ref #797) 2026-07-04 08:18:51 +02:00
test_exposure_api.py feat(exposure): Tor refuses cert-pinned/MITM-bypassed hosts (ref #797) 2026-07-04 08:09:37 +02:00
test_exposure_packaging.py fix(tor): pre-create toolbox state files (500 on fresh install) + persist self-heal on torrc reset + package exposure persist unit + audit webui emancipation 2026-07-09 11:17:32 +02:00
test_exposure_tor.py fix(exposure): gate /tor/add + emancipate; fail-open on undecodable list (ref #797) 2026-07-04 08:18:51 +02:00
test_exposure_webui.py feat(exposure): webui reach slider + mesh/Tor toggles (ref #793) 2026-07-04 06:56:12 +02:00
test_mesh_egress.py
test_reach_acceptance.py fix(exposure): thread nginx reload off event loop + strengthen mesh test (ref #793) 2026-07-04 07:33:20 +02:00
test_reach.py fix(exposure): missing snippet reports wan, not lan (ref #793) 2026-07-04 07:16:40 +02:00