from datetime import datetime, timezone

from fastapi.testclient import TestClient

from main import app

client = TestClient(app)


def _headers() -> dict:
    return {"X-AI-Token": "change-me"}


def test_health() -> None:
    r = client.get("/health")
    assert r.status_code == 200
    assert r.json()["ok"] is True


def test_detect_unauthorized() -> None:
    payload = {
        "event_id": "e-1",
        "site_id": 1,
        "vehicle_id": "V1",
        "dispatch_weight": 100,
        "received_weight": 99,
        "timestamp": datetime.now(timezone.utc).isoformat(),
    }
    r = client.post("/detect", json=payload)
    assert r.status_code == 401


def test_gps_track_authorized() -> None:
    payload = {"vehicle_id": "VH-001", "lat": -6.8, "lon": 39.2, "timestamp": datetime.now(timezone.utc).isoformat()}
    r = client.post("/gps/track", json=payload, headers=_headers())
    assert r.status_code == 200
    assert r.json()["success"] is True
