#!/usr/bin/env python3 """Quick functionality verification script""" from fastapi.testclient import TestClient from app import app def main(): print("=" * 60) print("FUNCTIONALITY VERIFICATION") print("=" * 60) print() client = TestClient(app) results = [] # Test root endpoint print("1. Testing Root Endpoint (/):") r = client.get("/") data = r.json() success = r.status_code == 200 and data["name"] == "isolated-sandbox" status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}, Name: {data['name']}") results.append(("Root Endpoint", success)) print() # Test health endpoint print("2. Testing Health Endpoint (/health):") r = client.get("/health") h = r.json() success = r.status_code == 200 and h["status"] == "healthy" status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}, Docker: {h['docker']}") results.append(("Health Endpoint", success)) print() # Test languages endpoint print("3. Testing Languages Endpoint (/languages):") r = client.get("/languages") data = r.json() success = r.status_code == 200 and "languages" in data status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}, Languages: {len(data.get('languages', []))}") results.append(("Languages Endpoint", success)) print() # Test UI rules endpoint print("4. Testing UI Rules Endpoint (/ui-rules):") r = client.get("/ui-rules") success = r.status_code == 200 and "text/html" in r.headers.get("content-type", "") status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}, Content-Type: {r.headers.get('content-type', 'unknown')}") print(f" Content Size: {len(r.text)} bytes") results.append(("UI Rules Endpoint", success)) print() # Test docs endpoint (should redirect or return OpenAPI schema) print("5. Testing Docs Endpoint (/docs):") r = client.get("/docs") success = r.status_code in [200, 307] # 200 for HTML or 307 for redirect status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}") results.append(("Docs Endpoint", success)) print() # Test OpenAPI schema print("6. Testing OpenAPI Schema (/openapi.json):") r = client.get("/openapi.json") data = r.json() if r.status_code == 200 else {} success = r.status_code == 200 and data.get("info", {}).get("title") == "isolated-sandbox" status = "[PASS]" if success else "[FAIL]" print(f" {status} - Status: {r.status_code}, Title: {data.get('info', {}).get('title', 'N/A')}") results.append(("OpenAPI Schema", success)) print() # Summary print("=" * 60) print("VERIFICATION SUMMARY") print("=" * 60) passed = sum(1 for _, s in results if s) total = len(results) for name, success in results: status = "[PASS]" if success else "[FAIL]" print(f"{status} - {name}") print() print(f"Results: {passed}/{total} endpoints verified") if passed == total: print("[SUCCESS] All functionality verified successfully!") return 0 else: print("[FAILED] Some endpoints failed verification") return 1 if __name__ == "__main__": exit(main())