# API Testing Suite ## Comprehensive Test Suite The API includes a comprehensive test suite that validates all major functionality: - **System Health**: Health check, image serving - **Authentication**: Registration, login, user info - **Game State**: Profile, location, inventory, full game state - **Gameplay**: Inspection, movement, interactables ### Running Tests from Inside the API Container The test suite is designed to run **inside the Docker container** to avoid network issues: ```bash # Run comprehensive tests docker exec echoes_of_the_ashes_api python test_comprehensive.py ``` ### Test Coverage The suite tests: 1. **Health & Infrastructure** - API health endpoint - Static image file serving 2. **Authentication Flow** - Web user registration - Login with credentials - JWT token authentication - User profile retrieval 3. **Game State** - Player profile (HP, level, stats) - Current location with directions - Inventory management - Complete game state snapshot 4. **Gameplay Mechanics** - Area inspection - Player movement between locations - Interacting with objects (searching, using) ### Test Output The test suite provides: - ✅ Green checkmarks for passing tests - ❌ Red X marks for failing tests - Detailed error messages - Summary statistics with success rate - Response samples for debugging ### Expected Result With all systems working correctly, you should see: ``` Total Tests: 12 Passed: 12 Failed: 0 Success Rate: 100.0% ``` ### Setup The test file `test_comprehensive.py` is **automatically included** in the API container during build. The `httpx` library is also included in `api/requirements.txt`, so no additional setup is needed. To rebuild the container with the latest tests: ```bash docker compose build echoes_of_the_ashes_api docker compose up -d echoes_of_the_ashes_api ``` ## Test Data The tests automatically: - Create unique test users (timestamped) - Register and login - Perform actual game actions - Clean up after themselves No manual test data setup is required. ## Troubleshooting If tests fail: 1. **Check API is running**: `docker ps` should show `echoes_of_the_ashes_api` 2. **Check database connection**: View logs with `docker logs echoes_of_the_ashes_api` 3. **Check game data**: Ensure `gamedata/` directory has `locations.json`, `interactables.json`, `items.json` 4. **Check images**: Ensure `images/locations/` contains image files ## Adding New Tests To add new test cases, edit `test_comprehensive.py` and add methods to the `TestRunner` class: ```python async def test_my_feature(self): """Test description""" try: response = await self.client.post( f"{BASE_URL}/api/my-endpoint", headers={"Authorization": f"Bearer {self.test_token}"}, json={"data": "value"} ) if response.status_code == 200: self.log_test("My Feature", True, "Success message") else: self.log_test("My Feature", False, f"Error: {response.text}") except Exception as e: self.log_test("My Feature", False, f"Error: {str(e)}") ``` Then add it to `run_all_tests()`: ```python await self.test_my_feature() ```