Files
railseek6/test_fixed_auth.py

174 lines
5.7 KiB
Python

#!/usr/bin/env python3
"""
Test Web UI authentication after fixing the configuration
"""
import requests
import time
import base64
# Configuration
BASE_URL = "http://localhost:3015"
WEBUI_URL = "http://localhost:3015/webui/"
USERNAME = "jleu3482"
PASSWORD = "jleu1212"
def wait_for_server():
"""Wait for server to be ready"""
print("=== WAITING FOR SERVER ===")
max_wait = 30
for i in range(max_wait):
try:
response = requests.get(f"{BASE_URL}/health", timeout=5)
if response.status_code == 200:
print("✅ Server is running!")
return True
except:
print(f"⏳ Waiting for server... ({i+1}/{max_wait})")
time.sleep(1)
print("❌ Server not ready within timeout")
return False
def test_webui_auth():
"""Test Web UI authentication"""
print("\n=== TESTING WEB UI AUTHENTICATION ===")
# Test without authentication first
try:
response = requests.get(WEBUI_URL)
print(f"Without auth: {response.status_code}")
if response.status_code == 401:
print("✅ Server now requires authentication!")
print("✅ Authentication is working correctly!")
# Check WWW-Authenticate header
auth_header = response.headers.get('WWW-Authenticate', '')
print(f"WWW-Authenticate: {auth_header}")
elif response.status_code == 200:
print("❌ Server still not requiring authentication")
return False
except Exception as e:
print(f"Error testing without auth: {e}")
return False
# Test with correct credentials
try:
credentials = base64.b64encode(f"{USERNAME}:{PASSWORD}".encode()).decode()
headers = {"Authorization": f"Basic {credentials}"}
response = requests.get(WEBUI_URL, headers=headers)
print(f"\nWith correct credentials: {response.status_code}")
if response.status_code == 200:
print("✅ Authentication successful with correct credentials!")
# Check if we got the actual Web UI content
if "Search" in response.text or "LightRAG" in response.text or "RailSeek" in response.text:
print("✅ Web UI content loaded successfully")
return True
else:
print("❌ Got 200 but no Web UI content")
print(f"Response preview: {response.text[:500]}")
return False
else:
print(f"❌ Authentication failed with correct credentials: {response.status_code}")
return False
except Exception as e:
print(f"Error testing with auth: {e}")
return False
def test_api_auth():
"""Test API authentication"""
print("\n=== TESTING API AUTHENTICATION ===")
headers = {"X-API-Key": "jleu1212"}
try:
response = requests.get(f"{BASE_URL}/documents", headers=headers)
print(f"API with API Key: {response.status_code}")
if response.status_code == 200:
print("✅ API authentication working!")
return True
else:
print(f"❌ API authentication failed: {response.status_code}")
return False
except Exception as e:
print(f"API test error: {e}")
return False
def test_wrong_credentials():
"""Test with wrong credentials"""
print("\n=== TESTING WRONG CREDENTIALS ===")
try:
wrong_credentials = base64.b64encode(b"wrong:wrong").decode()
headers = {"Authorization": f"Basic {wrong_credentials}"}
response = requests.get(WEBUI_URL, headers=headers)
print(f"With wrong credentials: {response.status_code}")
if response.status_code == 401:
print("✅ Wrong credentials correctly rejected!")
return True
else:
print(f"❌ Wrong credentials not rejected: {response.status_code}")
return False
except Exception as e:
print(f"Wrong credentials test error: {e}")
return False
def main():
print("Testing Fixed Web UI Authentication")
print("=" * 60)
# Wait for server to be ready
if not wait_for_server():
print("❌ Server not ready, cannot test authentication")
return
# Test Web UI authentication
webui_ok = test_webui_auth()
# Test API authentication
api_ok = test_api_auth()
# Test wrong credentials
wrong_ok = test_wrong_credentials()
print("\n" + "=" * 60)
print("FINAL RESULTS")
print("=" * 60)
if webui_ok and api_ok and wrong_ok:
print("🎉 ALL AUTHENTICATION TESTS PASSED! 🎉")
print("\n✅ Web UI authentication is now working correctly")
print("✅ API authentication is working correctly")
print("✅ Wrong credentials are properly rejected")
print(f"\nYou can now access the Web UI at: {WEBUI_URL}")
print("Use credentials: jleu3482 / jleu1212")
print("\nThe browser should now properly prompt for authentication")
else:
print("❌ Some authentication tests failed")
print(f"Web UI: {'' if webui_ok else ''}")
print(f"API: {'' if api_ok else ''}")
print(f"Wrong credentials: {'' if wrong_ok else ''}")
print("\nTroubleshooting steps:")
print("1. Check server logs for authentication errors")
print("2. Verify AUTH_ACCOUNTS environment variable is set")
print("3. Try restarting the server again")
print("4. Check if there are multiple server instances running")
if __name__ == "__main__":
main()