assemblrr/tests
soulis-1256 ea26dc794e
Make PATH assemblrr a wrapper around the install CLI
Stop copying cli.sh and a lib subset to ~/.local/bin. Setup and upgrade
write a short wrapper that execs $INSTALL_DIR/cli.sh. Leftover PATH libs
are removed. update-cli now points at upgrade.
2026-08-16 16:20:22 +03:00
..
integration Add seerr-gateway so delete request fully purges media. 2026-08-12 14:06:49 +03:00
unit Make PATH assemblrr a wrapper around the install CLI 2026-08-16 16:20:22 +03:00
helpers.sh Fix fresh-install stalls and harden default-on sidecars 2026-08-13 01:25:20 +03:00
README.md Scope TV request-delete to requested seasons 2026-08-16 12:04:27 +03:00
run.sh Add config apply, full auth change, and *arr quality defaults 2026-08-16 15:58:48 +03:00

Tests

Runtime hooks stay in scripts/. Tests live here.

./tests/run.sh              # unit
./tests/run.sh compose      # docker compose config
./tests/run.sh all          # unit + compose + shellcheck (if installed)
make test

Live integration

Opt-in only — these mutate a real install:

ASSEMBLRR_ALLOW_LIVE_TEST=1 ./tests/run.sh integration

Or one suite:

ASSEMBLRR_ALLOW_LIVE_TEST=1 ./tests/integration/watchdog_stall.sh
ASSEMBLRR_ALLOW_LIVE_TEST=1 ./tests/integration/media_purge_e2e.sh

Install dir resolution: ASSEMBLRR_DIR, ASSEMBLRR_CONFIG, then ~/assemblrr.

Script What it does
watchdog_stall.sh Stalls qBittorrent connections; checks vpn-watchdog
media_purge_e2e.sh Full delete cascade for Big Buck Bunny (TMDB 10378) via Radarr, Seerr (file + request/gateway), and Jellyfin APIs

media_purge_e2e

Requires a running stack with purge wiring (media-purge-watch up, seerr-gateway on 5055, Radarr “Media Purge” notification on).

  1. Creates a synthetic hardlinked title under media/ + torrents/ and a local qB torrent (no indexer grab).
  2. Radarr DELETE /api/v3/movie/:id?deleteFiles=true → CustomScript → qB cleanup.
  3. Seerr DELETE /api/v1/media/:id/file → Radarr delete → same cascade.
  4. Seerr DELETE /api/v1/request/:id through seerr-gateway → movie/title purge or TV season-scoped purge + request gone (checks X-Assemblrr-Request-Delete-Purge).
  5. Jellyfin DELETE /Items/:id → filesystem delete → media-purge-watch → full purge.
  6. Asserts Radarr row, media/, torrents/, and qB torrent are all gone (other titles untouched).

Offline unit for the gateway (no Docker stack): ./tests/unit/test_seerr_gateway.sh or python3 scripts/seerr-gateway.py --self-test.

See also: docs/seerr-delete-request.md (behavior + how to retire when Seerr does this natively).

Optional env: API_HOST, QBIT_HOST (defaults 127.0.0.1 / 127.0.0.1:8081).