Files
felhom-controller/controller/internal/stacks/r1058_prowlarr_wires_test.go
T
2026-10-15 14:34:33 +02:00

39 lines
1.6 KiB
Go

package stacks
import (
"os"
"path/filepath"
"testing"
)
// R-1058 (v0.314.0) — Prowlarr's own start runs the media wiring, so installed AFTER Sonarr/Radarr it is linked with
// no button. Through the PRODUCTION compose call (composeExecCustomEnv) with the docker stand-in on PATH (R-650).
// COMPANION RED-PROOF: empty linkOnlyApps → „prowlarr" is missing from the calls and this fails.
func TestR1058_ProwlarrUpRunsTheWiring(t *testing.T) {
m := gateManager(t, "display_name: x\n")
var calls []string
m.SetOnMediaUp(func(name string) { calls = append(calls, name) })
mk := func(name, yml string) string {
d := filepath.Join(m.cfg.Paths.StacksDir, name)
must(t, os.MkdirAll(d, 0o755))
must(t, os.WriteFile(filepath.Join(d, "docker-compose.yml"), []byte("services: {}\n"), 0o644))
must(t, os.WriteFile(filepath.Join(d, ".felhom.yml"), []byte(yml), 0o644))
return d
}
prowlarr := mk("prowlarr", "display_name: Prowlarr\nsetup_gate: true\n")
sonarr := mk("sonarr", "display_name: Sonarr\nmedia_library:\n kinds: [tv]\n")
plain := mk("vaultwarden", "display_name: Vaultwarden\n")
for _, d := range []string{prowlarr, sonarr, plain} {
if _, err := m.composeExecCustomEnv(d, nil, "up", "-d"); err != nil {
t.Fatal(err)
}
}
if _, err := m.composeExecCustomEnv(prowlarr, nil, "ps"); err != nil {
t.Fatal(err)
}
want := []string{"prowlarr", "sonarr"}
if len(calls) != len(want) || calls[0] != want[0] || calls[1] != want[1] {
t.Fatalf("wiring runs = %v, want %v (Prowlarr's up, Sonarr's up; never another app, never a non-up command)", calls, want)
}
}