# Tests This directory contains integration, end-to-end, and hardware-in-the-loop tests for the KosmoConnect platform. ## Structure ``` tests/ ├── integration/ # Service-level integration tests │ ├── api/ # API contract tests │ ├── gateway/ # Message gateway flow tests │ ├── ingestion/ # Data pipeline tests │ └── e2e/ # Full end-to-end scenarios └── hardware-in-loop/ # Physical hardware validation ├── enviro-node/ # Enviro-node firmware tests ├── bridge/ # Bridge daemon tests └── fixtures/ # Shared test data and mock devices ``` ## Integration Tests Run against a local Docker Compose stack of all backend services. **Scenarios**: 1. **Data Ingestion E2E**: Simulate a bridge publishing MQTT messages → verify data appears in API response 2. **Message Gateway E2E**: Simulate web user sending message → verify MQTT topic receives payload → simulate ACK → verify delivery status updated 3. **Subscription Enforcement**: Attempt to send message with expired subscription → verify 403 response 4. **Rate Limiting**: Send burst of messages → verify 429 response ## Hardware-in-the-Loop Tests Requires physical test hardware on a lab bench. **Setup**: - 1x Enviro-Node prototype on test fixture - 1x Infrastructure Node (T-Beam) connected to test Raspberry Pi - Local test MQTT broker - RF isolation box (optional, for CI) **Scenarios**: 1. **Sensor Accuracy**: Compare enviro-node readings against calibrated reference instruments 2. **Store-and-Forward**: Disconnect bridge node, let enviro-node collect data, reconnect bridge, verify all data is transmitted 3. **Power Budget**: Run enviro-node on small battery for 72 hours, verify expected sleep currents 4. **Mesh Relay**: Send message between two handheld Meshtastic devices via the enviro-node relay ## CI Integration - Integration tests run on every PR via GitHub Actions - Hardware-in-the-loop tests run nightly on a self-hosted runner connected to the lab bench