122 lines
3.2 KiB
Markdown
122 lines
3.2 KiB
Markdown
# 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()
|
|
```
|