"""Prueba E2E contra producción usando respuestas perfectas + incidentes."""
import json
import sys
import urllib.request

sys.path.insert(0, "/home/adonis/Público/Cursos/Quimica/evaluacion_ra3")
from test_ra3_grader import METAS_NORMALES, respuestas_perfectas

BASE = sys.argv[1] if len(sys.argv) > 1 else "https://adoniz-acer.tail60dd6a.ts.net/quimica"


def post(ruta, cuerpo):
    req = urllib.request.Request(f"{BASE}/{ruta}",
                                 data=json.dumps(cuerpo).encode(),
                                 headers={"Content-Type": "application/json"})
    try:
        with urllib.request.urlopen(req, timeout=10) as r:
            return r.status, json.loads(r.read())
    except urllib.error.HTTPError as e:
        return e.code, json.loads(e.read() or b"{}")


token = post("iniciar-ra3", {"apellidos": "Prueba", "nombres": "Temporal",
                             "carrera": "Electrónica"})[1]["token"]
print("incidente:", post("incidente-ra3",
                         {"token": token, "tipo": "pestana_oculta"})[1])
estado, datos = post("guardar-ra3", {
    "token": token,
    "respuestas": respuestas_perfectas(),
    "metas": {k: dict(tiempo_s="30", teclas="150", correcciones="2")
              for k in [f"s3_{i}" for i in range(5)]},
})
print("guardar:", estado)
r = datos["resultado"]
print(f"academico={r['academico']} nota_final={r['nota_final']} "
      f"incidentes={r['incidentes_trampa']} alertas_ia={r['alertas_ia']}")
dup = post("guardar-ra3", {"token": token, "respuestas": {}, "metas": {}})
print("duplicado bloqueado con codigo:", dup[0])
