sync from local backup
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Django Admin Smoke Test Script
|
||||
Tests that all admin pages return 200 and language switching works.
|
||||
Run from chunyu_project directory: python _test_admin_smoke.py
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Setup Django
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chunyu_project.settings')
|
||||
|
||||
# Admin URLs to test
|
||||
ADMIN_URLS = [
|
||||
'/admin/',
|
||||
'/admin/user/fuser/',
|
||||
'/admin/user/fuser/add/',
|
||||
'/admin/article/article/',
|
||||
'/admin/article/article/add/',
|
||||
'/admin/bug/bugreport/',
|
||||
'/admin/learn/course/',
|
||||
'/admin/tool/tool/',
|
||||
'/admin/history/browsinghistory/',
|
||||
'/admin/app/changelog/',
|
||||
'/admin/i18n/setlang/',
|
||||
]
|
||||
|
||||
LANGUAGES = ['zh-hans', 'en', 'ja', 'ko', 'ru']
|
||||
|
||||
# Test credentials (from create_admin_user.py)
|
||||
TEST_USERNAME = 'test@example.com'
|
||||
TEST_PASSWORD = 'admin123456'
|
||||
|
||||
|
||||
def test_admin_smoke():
|
||||
"""Test admin pages with all languages."""
|
||||
import django
|
||||
django.setup()
|
||||
|
||||
from django.test import Client
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
User = get_user_model()
|
||||
client = Client()
|
||||
|
||||
# Get or verify admin user exists
|
||||
admin_user = User.objects.filter(username=TEST_USERNAME).first()
|
||||
if not admin_user:
|
||||
# Try test_admin
|
||||
admin_user = User.objects.filter(username='test_admin').first()
|
||||
|
||||
if not admin_user:
|
||||
print("ERROR: No admin user found. Run create_admin_user.py first.")
|
||||
sys.exit(1)
|
||||
|
||||
# Login
|
||||
logged_in = client.login(username=admin_user.username, password=TEST_PASSWORD)
|
||||
if not logged_in:
|
||||
print(f"WARNING: Login failed for {admin_user.username}. Trying to login anyway...")
|
||||
|
||||
print("=" * 60)
|
||||
print("Django Admin Smoke Test")
|
||||
print("=" * 60)
|
||||
|
||||
errors = []
|
||||
total_tests = 0
|
||||
passed_tests = 0
|
||||
|
||||
# Test language switching
|
||||
print("\n[1] Testing language switching...")
|
||||
for lang in LANGUAGES:
|
||||
total_tests += 1
|
||||
response = client.post(
|
||||
'/i18n/setlang/',
|
||||
{'language': lang, 'next': '/admin/'}
|
||||
)
|
||||
if response.status_code in [200, 302]:
|
||||
print(f" ✓ Language switch to {lang}: {response.status_code}")
|
||||
passed_tests += 1
|
||||
else:
|
||||
print(f" ✗ Language switch to {lang}: {response.status_code}")
|
||||
errors.append(f"Language switch to {lang}: {response.status_code}")
|
||||
|
||||
# Test admin pages in each language
|
||||
print("\n[2] Testing admin pages with default language (zh-hans)...")
|
||||
for url in ADMIN_URLS:
|
||||
total_tests += 1
|
||||
response = client.get(url)
|
||||
if response.status_code == 200:
|
||||
print(f" ✓ {url}: {response.status_code}")
|
||||
passed_tests += 1
|
||||
else:
|
||||
print(f" ✗ {url}: {response.status_code}")
|
||||
errors.append(f"{url}: {response.status_code}")
|
||||
|
||||
# Test admin pages in English
|
||||
print("\n[3] Testing admin pages in English...")
|
||||
client.post('/i18n/setlang/', {'language': 'en', 'next': '/admin/'})
|
||||
for url in ADMIN_URLS[:5]: # Test a subset
|
||||
total_tests += 1
|
||||
response = client.get(url)
|
||||
if response.status_code == 200:
|
||||
print(f" ✓ {url}: {response.status_code}")
|
||||
passed_tests += 1
|
||||
else:
|
||||
print(f" ✗ {url}: {response.status_code}")
|
||||
errors.append(f"EN {url}: {response.status_code}")
|
||||
|
||||
# Summary
|
||||
print("\n" + "=" * 60)
|
||||
print(f"Results: {passed_tests}/{total_tests} tests passed")
|
||||
print("=" * 60)
|
||||
|
||||
if errors:
|
||||
print("\nErrors found:")
|
||||
for error in errors:
|
||||
print(f" - {error}")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("\n✓ All smoke tests passed!")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_admin_smoke()
|
||||
Reference in New Issue
Block a user