"""Script pour tester l'authentification."""
import sys
sys.path.insert(0, '.')

from sqlalchemy.orm import Session
from app.database import SessionLocal, engine, Base
from app.models.user import User
from app.schemas.auth import LoginRequest
from passlib.context import CryptContext

# Créer les tables si elles n'existent pas
Base.metadata.create_all(bind=engine)

# Configuration du hashage
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

db = SessionLocal()

try:
    # Vérifier si l'utilisateur test existe
    user = db.query(User).filter(User.email == "test@example.com").first()
    
    if user:
        print(f"✅ Utilisateur trouvé:")
        print(f"  ID: {user.id}")
        print(f"  Email: {user.email}")
        print(f"  Nom: {user.name}")
        print(f"  Hash du mot de passe: {user.password_hash[:20]}...")
        print(f"  Premium: {user.is_premium}")
    else:
        print("❌ Utilisateur non trouvé")
        print("Création de l'utilisateur de test...")
        
        # Créer l'utilisateur de test
        new_user = User(
            email="test@example.com",
            name="Utilisateur Test",
            password_hash=pwd_context.hash("password123"),
            is_premium=False,
            referral_code="TESTCODE",
            created_at=None,  # Sera défini automatiquement
            updated_at=None
        )
        
        db.add(new_user)
        db.commit()
        db.refresh(new_user)
        
        print(f"✅ Utilisateur créé avec ID: {new_user.id}")
        print(f"  Email: {new_user.email}")
        print(f"  Nom: {new_user.name}")
        print(f"  Hash du mot de passe: {new_user.password_hash[:20]}...")
        
finally:
    db.close()
