assemblrr/tests
soulis-1256 0858a5a629
Drop Portainer from default stack; harden upgrade and setup UX
Remove Portainer from managed compose and catalog; leave a custom.yaml
example for optional use. Upgrade/start use compose --remove-orphans and
migration 002 removes leftover Portainer containers unless custom.yaml
keeps it. Fix setup double URL list when status is unhealthy, share
OpenSubtitles y/N on express, and tone down indexer/provider prompts.
2026-08-12 15:26:21 +03:00
..
integration Add seerr-gateway so delete request fully purges media. 2026-08-12 14:06:49 +03:00
unit Drop Portainer from default stack; harden upgrade and setup UX 2026-08-12 15:26:21 +03:00
helpers.sh Use .env.example as the env template and cover it with tests 2026-08-05 14:01:04 +03:00
README.md Add seerr-gateway so delete request fully purges media. 2026-08-12 14:06:49 +03:00
run.sh Harden media-purge qB matching and refresh Jellyfin on delete. 2026-08-12 14:26:27 +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 → media file delete + request gone → same cascade (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).