Spaces:
Sleeping
Sleeping
| Local services required for full integration testing | |
| Overview | |
| - Unit tests run isolated with mocks; no services needed. | |
| - For end-to-end / integration you should run the services below. | |
| Core services (recommended minimal set) | |
| - redis: Used by Celery broker and LangGraph `RedisSaver` checkpointer. | |
| - minio: S3-compatible object storage when `STORAGE_BACKEND=minio`. | |
| - supabase (postgres + storage + realtime + rest + kong): Optional but required if using Supabase storage or DB-backed features. | |
| - keycloak: OIDC provider used for authentication (tests mock `get_current_user`). | |
| - chromadb: Vector DB used by HS-code embeddings (optional unless running embedding flows). | |
| Starting the minimal set with docker-compose (from repo root): | |
| ```powershell | |
| # From repository root | |
| docker-compose up -d redis minio chromadb supabase-db supabase-storage supabase-realtime supabase-rest supabase-kong keycloak | |
| ``` | |
| Notes & env vars | |
| - The repo `docker-compose.yml` already configures sensible defaults. Override with environment variables in `.env` at `apps/api/.env` or repo root. | |
| - Typical overrides: | |
| - `POSTGRES_PASSWORD` (postgres/supabase) | |
| - `MINIO_ROOT_USER` / `MINIO_ROOT_PASSWORD` | |
| - `SUPABASE_JWT_SECRET` | |
| - `KEYCLOAK_ADMIN` / `KEYCLOAK_ADMIN_PASSWORD` | |
| Quick checks | |
| - Redis available at `redis://localhost:6379` (or `redis://redis:6379` inside Docker network). | |
| - Minio console: http://localhost:9001, API: http://localhost:9000 | |
| - Supabase storage API: http://localhost:5000 (configured in compose) | |
| - Keycloak admin console: http://localhost:8080 | |
| Integration test tips | |
| - Many tests mock Supabase and Keycloak; only enable real services when running integration/e2e tests. | |
| - If you want a minimal integration run, start `redis` and `minio` first and set `STORAGE_BACKEND=minio` in your `.env` before running the API. | |
| Running integration tests | |
| - Start the minimal services with the helper script from the repo root: | |
| ```powershell | |
| .\scripts\integration-up.ps1 | |
| ``` | |
| - Run only integration-marked tests: | |
| ```powershell | |
| cd apps/api | |
| .venv\Scripts\python.exe -m pytest -m integration -q | |
| ``` | |
| - A dedicated GitHub Actions workflow is available at `.github/workflows/integration.yml` for manual or main-branch integration runs. | |
| - Run unit tests (fast, uses mocks): | |
| ```powershell | |
| cd apps/api | |
| .venv\Scripts\python.exe -m pytest tests/ -q | |
| ``` | |
| CI recommendations | |
| - Run unit tests on every push; run integration tests in a separate CI job that brings up services (docker-compose or Testcontainers) and runs `pytest -m integration`. | |
| - Use `pytest.ini` to declare markers (already added at `apps/api/pytest.ini`). | |
| Next steps | |
| - I can run a minimal `docker-compose up` for you and then run integration tests, or add a `docker-compose.integration.yml` with a trimmed service list. Which would you prefer? | |