import os
import sys
import json
from tools import gmail_manage_label, gmail_manage_filter, list_gmail_emails, run_bash_command, resolve_account

def test_account(account_alias: str):
    print(f"\n--- INICIANDO TESTES PARA CONTA: {account_alias} ---")
    
    # 1. Teste de Listagem de E-mails
    print(f"[TEST] Listando e-mails...")
    emails = list_gmail_emails(account_alias)
    if "Sucesso" in emails or "📧" in emails:
        print(f"✅ SUCESSO na listagem (Amostra): {emails[:50]}...")
    else:
        print(f"❌ FALHA na listagem: {emails}")

    # 2. Teste de Criação de Marcador (Label)
    test_label = "ANTIGRAVITY_PROACTIVE_TEST"
    print(f"[TEST] Criando marcador '{test_label}'...")
    res_label = gmail_manage_label(f"{account_alias} {test_label}")
    if "Sucesso" in res_label or "já existe" in res_label or "Criação" in res_label:
        print(f"✅ SUCESSO no marcador: {res_label}")
    else:
        print(f"❌ FALHA no marcador: {res_label}")

    # 3. Teste de Criação de Filtro
    print(f"[TEST] Criando filtro de teste...")
    res_filter = gmail_manage_filter(f"{account_alias} test@example.com {test_label}")
    if "Sucesso" in res_filter or "Sucesso" in str(res_filter) or "{" in str(res_filter):
        print(f"✅ SUCESSO no filtro: {res_filter}")
    else:
        print(f"❌ FALHA no filtro: {res_filter}")

    # 4. Limpeza
    print(f"[TEST] Limpando...")
    account = resolve_account(account_alias)
    # Busca ID para deletar
    list_res = run_bash_command(f"{account} gmail users labels list")
    try:
        data = json.loads(list_res)
        for l in data.get("labels", []):
            if l["name"] == test_label:
                run_bash_command(f"{account} gmail users labels delete --params '{{\"userId\": \"me\", \"id\": \"{l['id']}\"}}'")
                print(f"✅ Limpeza concluída.")
                break
    except: pass

if __name__ == "__main__":
    accounts = ["adm", "mr", "4r"]
    for acc in accounts:
        try:
            test_account(acc)
        except Exception as e:
            print(f"❌ Erro crítico ao testar {acc}: {e}")
