from __future__ import annotations

import pytest

from src.services.agent_replay_input import (
    assert_no_evaluation_label_leak,
    build_candidate_input_from_fixture,
)


def test_candidate_input_strips_evaluation_labels():
    candidate_input = build_candidate_input_from_fixture({
        "schema_version": "agent_replay_fixture_v1",
        "run_id": "fixtures",
        "incident_id": "INC-001",
        "incident_context": {
            "alertname": "PodCrashLooping",
            "severity": "P1",
        },
        "evaluation_labels": {
            "verification_result": "success",
            "execution_success": True,
        },
        "source_metadata": {
            "created_at": "2026-06-01T12:00:00+08:00",
            "agent_turn_count": 4,
            "internal_answer": "must-not-leak",
        },
    }).to_dict()

    assert candidate_input["schema_version"] == "agent_replay_candidate_input_v1"
    assert "evaluation_labels" not in candidate_input
    assert "verification_result" not in candidate_input["incident_context"]
    assert candidate_input["source_metadata"] == {
        "created_at": "2026-06-01T12:00:00+08:00",
        "agent_turn_count": 4,
    }
    assert_no_evaluation_label_leak(candidate_input)


def test_candidate_input_leak_detector_rejects_answer_key_fields():
    with pytest.raises(ValueError, match="evaluation label"):
        assert_no_evaluation_label_leak({
            "incident_context": {
                "nested": {
                    "verification_result": "success",
                }
            }
        })
