Prj2 / TEST_API.md
iitmbs24f's picture
Upload 37 files
2f95553 verified
# How to Check Environment Variables (JSON Format)
## Method 1: Using the Test Script (Easiest)
Run this command:
```bash
python test_env.json.py
```
**Example Output:**
```json
{
"status": "ok",
"variables": {
"QUIZ_SECRET": {
"set": true,
"length": 8,
"preview": "Easy...Quiz"
},
"OPENAI_API_KEY": {
"set": true,
"length": 200,
"preview": "sk-proj...4UA",
"valid_format": true
},
"PORT": {
"set": true,
"value": "8000"
}
},
"ready": true,
"llm_enabled": true,
"message": "Ready to run"
}
```
## Method 2: Using the API Endpoint
### Step 1: Start the Server
```bash
python -m app.main
```
### Step 2: Check Environment Variables
**Using curl:**
```bash
curl http://localhost:8000/env-check
```
**Using PowerShell:**
```powershell
Invoke-RestMethod -Uri http://localhost:8000/env-check -Method Get | ConvertTo-Json
```
**Using Python:**
```python
import requests
response = requests.get("http://localhost:8000/env-check")
print(response.json())
```
**Example JSON Response:**
```json
{
"status": "ok",
"variables": {
"QUIZ_SECRET": {
"set": true,
"length": 8,
"preview": "Easy...Quiz"
},
"OPENAI_API_KEY": {
"set": true,
"length": 200,
"preview": "sk-proj...4UA",
"valid_format": true
},
"PORT": {
"set": true,
"value": "8000"
}
},
"ready": true,
"llm_enabled": true
}
```
## Method 3: Test the Full API
### Health Check
```bash
curl http://localhost:8000/health
```
**Response:**
```json
{
"status": "healthy"
}
```
### Test Quiz Endpoint (with wrong secret - should return 403)
```bash
curl -X POST http://localhost:8000/solve \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
"secret": "wrong_secret",
"url": "https://example.com"
}'
```
**Expected Response (403):**
```json
{
"detail": {
"error": "forbidden"
}
}
```
### Test Quiz Endpoint (with correct secret)
```bash
curl -X POST http://localhost:8000/solve \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
"secret": "EasyQuiz",
"url": "https://example.com/quiz"
}'
```
## Method 4: Quick PowerShell Test
```powershell
# Check variables directly
$env:QUIZ_SECRET
$env:OPENAI_API_KEY
# Test with API (if server is running)
$response = Invoke-RestMethod -Uri http://localhost:8000/env-check
$response | ConvertTo-Json -Depth 10
```
## JSON Response Fields Explained
| Field | Description |
|-------|-------------|
| `status` | Always "ok" if script runs |
| `variables.QUIZ_SECRET.set` | `true` if QUIZ_SECRET is set |
| `variables.QUIZ_SECRET.length` | Length of the secret |
| `variables.QUIZ_SECRET.preview` | Masked preview (first 4 + last 4 chars) |
| `variables.OPENAI_API_KEY.set` | `true` if API key is set |
| `variables.OPENAI_API_KEY.valid_format` | `true` if key starts with "sk-" |
| `ready` | `true` if QUIZ_SECRET is set (required) |
| `llm_enabled` | `true` if OPENAI_API_KEY is set (optional) |
| `message` | Human-readable status message |
## Quick Test Commands
### All-in-One Test (PowerShell)
```powershell
# 1. Check variables
python test_env.json.py
# 2. Start server (in another terminal)
python -m app.main
# 3. Test API (in another terminal)
Invoke-RestMethod -Uri http://localhost:8000/env-check | ConvertTo-Json
```
### All-in-One Test (Bash/Linux)
```bash
# 1. Check variables
python test_env.json.py
# 2. Start server (in another terminal)
python -m app.main
# 3. Test API (in another terminal)
curl http://localhost:8000/env-check | python -m json.tool
```
## Expected Results
### ✅ Everything Working:
```json
{
"ready": true,
"llm_enabled": true,
"variables": {
"QUIZ_SECRET": { "set": true },
"OPENAI_API_KEY": { "set": true, "valid_format": true }
}
}
```
### ⚠️ Missing QUIZ_SECRET:
```json
{
"ready": false,
"llm_enabled": true,
"variables": {
"QUIZ_SECRET": { "set": false },
"OPENAI_API_KEY": { "set": true }
},
"message": "QUIZ_SECRET is required"
}
```
### ⚠️ Missing OPENAI_API_KEY (still works, but no LLM):
```json
{
"ready": true,
"llm_enabled": false,
"variables": {
"QUIZ_SECRET": { "set": true },
"OPENAI_API_KEY": { "set": false }
}
}
```