mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 16:46:17 +00:00
Make the BMX TuneIn integration tests independent of the live TuneIn (radiotime.com) service, the same way Spotify/Amazon are already mocked. - pkg/service/bmx: the TuneIn upstream base URLs become configurable vars with a SetTuneInEndpoints(opmlBase, apiBase) setter that also registers the host in the outbound allowlist. Defaults are unchanged (real radiotime hosts), so production behaviour is identical; tests can redirect to a mock. - cmd/soundtouch-service: new --tunein-opml-url / --tunein-api-url flags (TUNEIN_OPML_URL / TUNEIN_API_URL) wired through to SetTuneInEndpoints. - cmd/mock-tunein + pkg/testutils/tunein: a mock TuneIn server serving Tune.ashx (stream URLs) and describe.ashx (name/logo) with RFC-5737 values; unmocked endpoints 404 so a test needing them fails loudly. - docker-compose.ci.yml: add the tunein-mock service and point the service at it. - tunein_playback_station.http now asserts the mock-served stream URL + name, proving the path is offline. tunein_favorite.http covers the local-only favorite add/remove (202). - TUNEIN-MOCK-MISSING.md lists the upstream captures still needed (episode / navigate / search) before those routes can be mocked + tested. make test-http-client: 61 requests, 0 failed. golangci-lint clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
services:
|
|
soundtouch-service:
|
|
build:
|
|
context: .
|
|
target: soundtouch-service
|
|
networks:
|
|
- soundtouch-test-net
|
|
volumes:
|
|
- ./tests/integration/testdata:/app/data
|
|
environment:
|
|
- SPOTIFY_CLIENT_ID=mock-id
|
|
- SPOTIFY_CLIENT_SECRET=mock-secret
|
|
- SPOTIFY_TOKEN_URL=http://spotify-mock:8080/api/token
|
|
- SPOTIFY_API_BASE=http://spotify-mock:8080
|
|
- AMAZON_CLIENT_ID=mock-amazon-id
|
|
- AMAZON_CLIENT_SECRET=mock-amazon-secret
|
|
- AMAZON_TOKEN_URL=http://amazon-mock:8080/auth/o2/token
|
|
- AMAZON_PROFILE_URL=http://amazon-mock:8080/user/profile
|
|
- TUNEIN_OPML_URL=http://tunein-mock:8080
|
|
- TUNEIN_API_URL=http://tunein-mock:8080
|
|
|
|
spotify-mock:
|
|
image: golang:1.26.4-alpine
|
|
container_name: spotify-mock
|
|
working_dir: /app
|
|
volumes:
|
|
- .:/app
|
|
command: go run ./cmd/mock-spotify/main.go -port 8080
|
|
ports:
|
|
- "8081:8080"
|
|
networks:
|
|
- soundtouch-test-net
|
|
|
|
amazon-mock:
|
|
image: golang:1.26.4-alpine
|
|
container_name: amazon-mock
|
|
working_dir: /app
|
|
volumes:
|
|
- .:/app
|
|
command: go run ./cmd/mock-amazon/main.go -port 8080
|
|
ports:
|
|
- "8082:8080"
|
|
networks:
|
|
- soundtouch-test-net
|
|
|
|
tunein-mock:
|
|
image: golang:1.26.4-alpine
|
|
container_name: tunein-mock
|
|
working_dir: /app
|
|
volumes:
|
|
- .:/app
|
|
command: go run ./cmd/mock-tunein/main.go -port 8080
|
|
ports:
|
|
- "8083:8080"
|
|
networks:
|
|
- soundtouch-test-net
|
|
|
|
networks:
|
|
soundtouch-test-net:
|
|
name: soundtouch-test-net
|