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