# Testing Documentation Test scripts, test notes, and the layout of the automated test suite. ## Automated test suite (`backend/`) The authoritative tests live in the backend crate and run via `cargo test`: - **Unit tests** (`cargo test --lib`) — 18 tests in `src/`: client-IP resolution, JWT round-trips, refresh-token hashing, token-version cache, services. - **Integration tests** (`cargo test --test auth_tests --test medication_tests`) — 13 tests in `tests/`, built in-process against an isolated per-run MongoDB database via the shared `tests/common/mod.rs` helper. They **skip gracefully** when MongoDB is unreachable, so `cargo test` stays green without a database. Cover: register, login (right/wrong password), auth enforcement, refresh rotation + reuse detection, logout, password-change invalidation, and medication CRUD/auth flows. To run the integration tests for real, start a MongoDB first: ```bash docker run -d -p 27017:27017 --name mongo-test mongo:7 cd backend && cargo test --test auth_tests --test medication_tests ``` CI runs the full suite with a `mongo:7` service container — see [../development/CI-CD.md](../development/CI-CD.md). ## Manual / smoke test scripts - **[test-api-endpoints.sh](./test-api-endpoints.sh)** - Comprehensive API endpoint testing - **[test-medication-api.sh](./test-medication-api.sh)** - Medication-specific API tests - **[test-mvp-phase-2.7.sh](./test-mvp-phase-2.7.sh)** - Phase 2.7 MVP comprehensive tests - **[solaria-test.sh](./solaria-test.sh)** - Solaria deployment testing - **[check-solaria-logs.sh](./check-solaria-logs.sh)** - Log checking utility - **[quick-test.sh](./quick-test.sh)** - Fast smoke test > Historical test-run snapshots are in [../archive/](../archive/README.md). ## Notes - Manual scripts that hit a live server need MongoDB running and (for protected routes) a valid JWT. - Solaria tests require network access to the Solaria server. --- *Last Updated: 2026-06-27*