| # 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 } | |
| } | |
| } | |
| ``` | |