from __future__ import annotations

import base64
import hashlib
from datetime import datetime, timezone
from pathlib import Path

from osm_lead_source_service.pbf.geofabrik import AU_ACT_PILOT, AcquiredPbf
from osm_lead_source_service.pbf.pilot import run_act_shadow_pilot

_FIXTURE = Path(__file__).parents[2] / "fixtures" / "pbf" / "tiny.osm.pbf.b64"


def test_act_pilot_is_read_only_and_uses_checksum_verified_input(
    tmp_path: Path, monkeypatch: object
) -> None:
    payload = base64.b64decode(_FIXTURE.read_text(encoding="ascii").strip(), validate=True)
    pbf = tmp_path / "tiny.osm.pbf"
    pbf.write_bytes(payload)
    sha256 = hashlib.sha256(payload).hexdigest()
    acquisition = AcquiredPbf(
        region_id="au-act",
        source_url=AU_ACT_PILOT.pbf_url,
        local_path=pbf,
        content_sha256=sha256,
        companion_md5=hashlib.md5(payload, usedforsecurity=False).hexdigest(),
        size_bytes=len(payload),
        acquired_at=datetime(2026, 7, 17, 1, tzinfo=timezone.utc),
        validated_at=datetime(2026, 7, 17, 1, 0, 1, tzinfo=timezone.utc),
        cache_hit=False,
    )

    def fake_acquire(*args: object, **kwargs: object) -> AcquiredPbf:
        del args, kwargs
        return acquisition

    monkeypatch.setattr(  # type: ignore[attr-defined]
        "osm_lead_source_service.pbf.pilot.acquire_region", fake_acquire
    )
    result = run_act_shadow_pilot(tmp_path / "cache", max_leads=10, max_review_items=10)
    evidence = result.evidence_mapping()
    assert result.report.region_id == "au-act"
    assert result.report.profile.profile_id == "luxeillum"
    assert result.report.profile.version == "0.1.0-draft"
    assert len(result.report.leads) == 3
    assert evidence["mode"] == "shadow-read-only"
    assert evidence["noco_access"] is False
    assert evidence["writes_enabled"] is False
    assert evidence["scheduler_enabled"] is False
