import sys import os import json sys.path.insert(0, 'app') from fastapi.testclient import TestClient from main import app client = TestClient(app) def test_admin_logs_access(): print("Testing /admin/logs access...") # 1. Unauthenticated -> Redirect to login response = client.get("/admin/logs", allow_redirects=False) assert response.status_code == 302, f"Expected 302, got {response.status_code}" print("āœ… Unauthenticated access blocked") # Mock Admin User Session # Note: TestClient cookies handling is specific, we rely on session middleware # For a real test we'd need to mock the dependency override, but let's try a simpler approach # by mocking the dependency directly in the app for this test run. # 2. Mock Admin Dependency from deps import current_user app.dependency_overrides[current_user] = lambda: {"role": "admin", "email": "admin@test.com"} response = client.get("/admin/logs") assert response.status_code == 200, f"Expected 200, got {response.status_code}" assert "System Logs & Stats" in response.text print("āœ… Admin access allowed") # 3. Test Data Endpoint response = client.get("/admin/logs/data") assert response.status_code == 200 data = response.json() assert "logs" in data print("āœ… Data endpoint works") # 4. Test Stats Endpoint response = client.get("/admin/logs/stats") assert response.status_code == 200 stats = response.json() assert "total_interactions" in stats assert "total_tokens_estimated" in stats assert "tokens_by_role" in stats print("āœ… Stats endpoint works") # Clean up app.dependency_overrides = {} if __name__ == "__main__": try: test_admin_logs_access() print("\nšŸŽ‰ All Admin Logs tests passed!") except AssertionError as e: print(f"\nāŒ Test failed: {e}") sys.exit(1) except Exception as e: print(f"\nāŒ Error: {e}") sys.exit(1)