""" Script para verificar y actualizar password del test_user """ import asyncio import sys import os from sqlalchemy import select from passlib.context import CryptContext # Configurar el path backend_path = os.path.join(os.path.dirname(__file__), 'backend') sys.path.insert(0, backend_path) from app.core.database import AsyncSessionLocal from app.models.user import User # Configurar passlib igual que en security.py pwd_context = CryptContext( schemes=["argon2", "bcrypt"], deprecated="auto", argon2__memory_cost=65536, argon2__time_cost=3, argon2__parallelism=4, ) async def check_and_fix_test_user(): """Verificar y actualizar password del test_user""" # Contraseñas posibles possible_passwords = [ "admin123", "TestPassword123!", "password123", "test123", "hashed_password" ] async with AsyncSessionLocal() as session: try: # Buscar test_user result = await session.execute( select(User).where(User.email == "test_user@example.com") ) user = result.scalar_one_or_none() if not user: print("❌ Usuario test_user@example.com no encontrado") return print(f"✅ Usuario encontrado: {user.email}") print(f"Hash actual: {user.password_hash}") # Probar contraseñas posibles found_password = None for password in possible_passwords: if pwd_context.verify(password, user.password_hash): found_password = password break if found_password: print(f"🎉 Contraseña encontrada: {found_password}") else: print("❌ Ninguna contraseña coincide") print("Estableciendo nueva contraseña: admin123") # Establecer nueva contraseña new_password = "admin123" user.password_hash = pwd_context.hash(new_password) await session.commit() print(f"✅ Contraseña actualizada a: {new_password}") except Exception as e: print(f"❌ Error: {e}") await session.rollback() if __name__ == "__main__": asyncio.run(check_and_fix_test_user())