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:

python test_env.json.py

Example Output:

{
  "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

python -m app.main

Step 2: Check Environment Variables

Using curl:

curl http://localhost:8000/env-check

Using PowerShell:

Invoke-RestMethod -Uri http://localhost:8000/env-check -Method Get | ConvertTo-Json

Using Python:

import requests
response = requests.get("http://localhost:8000/env-check")
print(response.json())

Example JSON Response:

{
  "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

curl http://localhost:8000/health

Response:

{
  "status": "healthy"
}

Test Quiz Endpoint (with wrong secret - should return 403)

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):

{
  "detail": {
    "error": "forbidden"
  }
}

Test Quiz Endpoint (with correct secret)

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

# 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)

# 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)

# 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:

{
  "ready": true,
  "llm_enabled": true,
  "variables": {
    "QUIZ_SECRET": { "set": true },
    "OPENAI_API_KEY": { "set": true, "valid_format": true }
  }
}

⚠️ Missing QUIZ_SECRET:

{
  "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):

{
  "ready": true,
  "llm_enabled": false,
  "variables": {
    "QUIZ_SECRET": { "set": true },
    "OPENAI_API_KEY": { "set": false }
  }
}