import pytest
from fastapi.testclient import TestClient

from app.main import app


@pytest.fixture
def client(monkeypatch):
    monkeypatch.setenv("GATEWAY_INTERNAL_SERVICE_SECRET", "internal-test-secret")
    from app.core.config import settings

    settings.GATEWAY_INTERNAL_SERVICE_SECRET = "internal-test-secret"
    return TestClient(app)


def test_delete_repo_vectors_requires_secret(client):
    response = client.delete("/internal/v1/repos/AD/example-repo/vectors")
    assert response.status_code == 401


def test_delete_repo_vectors_accepts_valid_secret(client, monkeypatch):
    called = {"repo_id": None}

    async def _delete_repo_vectors(repo_id: str):
        called["repo_id"] = repo_id
        return {"repo_id": repo_id, "status": "deleted"}

    monkeypatch.setattr(
        "app.api.routes.internal_maintenance.qdrant_index_service.delete_repo_vectors",
        _delete_repo_vectors,
    )

    response = client.delete(
        "/internal/v1/repos/AD/example-repo/vectors",
        headers={"X-Internal-Secret": "internal-test-secret"},
    )

    assert response.status_code == 200
    assert response.json()["status"] == "deleted"
    assert called["repo_id"] == "AD/example-repo"
