SIDEL_ScriptsManager/test_language_switching.py

110 lines
4.2 KiB
Python

#!/usr/bin/env python3
"""
Script para probar automáticamente el cambio de idioma en SIDEL ScriptsManager
"""
import requests
import json
import time
# Configuración de la sesión
session = requests.Session()
base_url = "http://localhost:5002"
try:
print("🔄 Iniciando prueba del cambio de idioma...")
# 1. Hacer login
print("\n1. Iniciando sesión como admin...")
login_data = {"username": "admin", "password": "admin", "remember": "on"}
login_response = session.post(f"{base_url}/login", data=login_data)
if login_response.status_code != 200:
print(f"❌ Error en login: {login_response.status_code}")
exit(1)
print("✅ Login exitoso")
# 2. Verificar página inicial
print("\n2. Accediendo a página principal...")
home_response = session.get(f"{base_url}/")
print(f"✅ Página principal cargada (status: {home_response.status_code})")
# 3. Acceder a script-group/5
print("\n3. Accediendo a script-group/5...")
group_response = session.get(f"{base_url}/script-group/5")
print(f"✅ Grupo 5 cargado (status: {group_response.status_code})")
# 4. Verificar estado inicial del idioma
print("\n4. Verificando estado del idioma...")
current_lang_response = session.get(f"{base_url}/api/user/preferences")
if current_lang_response.status_code == 200:
prefs = current_lang_response.json()
current_lang = prefs.get("language", "en")
print(f"✅ Idioma actual: {current_lang}")
else:
print(
f"⚠️ No se pudo obtener preferencias (status: {current_lang_response.status_code})"
)
current_lang = "en"
# 5. Cambiar idioma a español
print("\n5. Cambiando idioma a español...")
lang_change_data = {"language": "es"}
lang_response = session.post(
f"{base_url}/api/user/preferences",
json=lang_change_data,
headers={"Content-Type": "application/json"},
)
print(f"✅ Cambio de idioma enviado (status: {lang_response.status_code})")
if lang_response.status_code == 200:
print(f"📝 Respuesta: {lang_response.json()}")
# 6. Verificar que el cambio se guardó
print("\n6. Verificando que el cambio se guardó...")
time.sleep(0.5) # Pequeña pausa
verify_response = session.get(f"{base_url}/api/user/preferences")
if verify_response.status_code == 200:
new_prefs = verify_response.json()
new_lang = new_prefs.get("language", "en")
print(f"✅ Nuevo idioma guardado: {new_lang}")
if new_lang == "es":
print("🎉 ¡Cambio de idioma exitoso!")
else:
print("❌ El idioma no se cambió correctamente")
# 7. Recargar página del grupo para verificar persistencia
print("\n7. Recargando página del grupo para verificar persistencia...")
reload_response = session.get(f"{base_url}/script-group/5")
print(f"✅ Página recargada (status: {reload_response.status_code})")
# 8. Verificar idioma después de recargar
print("\n8. Verificando idioma después de recargar...")
final_check = session.get(f"{base_url}/api/user/preferences")
if final_check.status_code == 200:
final_prefs = final_check.json()
final_lang = final_prefs.get("language", "en")
print(f"✅ Idioma final: {final_lang}")
if final_lang == "es":
print("🎉 ¡ÉXITO! El idioma se mantiene después de recargar")
else:
print("❌ PROBLEMA: El idioma volvió a inglés después de recargar")
# 9. Probar cambio de vuelta a inglés
print("\n9. Probando cambio de vuelta a inglés...")
lang_change_back = {"language": "en"}
back_response = session.post(
f"{base_url}/api/user/preferences",
json=lang_change_back,
headers={"Content-Type": "application/json"},
)
print(f"✅ Cambio a inglés enviado (status: {back_response.status_code})")
print("\n🏁 Prueba completada")
except requests.exceptions.ConnectionError:
print(
"❌ Error: No se pudo conectar al servidor. ¿Está ejecutándose en http://localhost:5002?"
)
except Exception as e:
print(f"❌ Error inesperado: {e}")