version: '3.8' services: gateway-test: build: context: . dockerfile: Dockerfile.test environment: - GO_ENV=test - CGO_ENABLED=1 - TEST_DATABASE_URL=sqlite3:///tmp/test.db volumes: - .:/app - /tmp:/tmp command: ["go", "test", "-v", "./test/...", "-timeout", "10m"] depends_on: - redis-test - mock-nostr-relay redis-test: image: redis:7-alpine command: redis-server --port 6380 ports: - "6380:6380" # Mock Nostr relay for testing mock-nostr-relay: image: scsibug/nostr-rs-relay:latest ports: - "7777:8080" environment: - RUST_LOG=warn volumes: - test_relay_data:/usr/src/app/db # Test database test-db: image: sqlite:latest volumes: - test_db_data:/data environment: - SQLITE_DATABASE=/data/test.db # Integration test runner integration-tests: build: context: . dockerfile: Dockerfile.test environment: - BASE_URL=http://gateway-test:9876 - TEST_TIMEOUT=300 volumes: - ./test:/app/test command: ["go", "test", "-v", "./test", "-tags=integration", "-timeout", "15m"] depends_on: - gateway-test # E2E test runner e2e-tests: image: curlimages/curl:latest volumes: - ./test/e2e:/tests environment: - BASE_URL=http://gateway-test:9876 command: ["sh", "/tests/run_all_tests.sh"] depends_on: - gateway-test volumes: test_relay_data: test_db_data: networks: default: name: torrent-gateway-test