from tests.helpers import latest_token, register_and_verify


def test_health(client):
    response = client.get("/api/v1/health")
    assert response.status_code == 200
    assert response.json()["status"] == "ok"


def test_register_and_verify_and_login(client):
    register_response = client.post(
        "/api/v1/auth/register",
        json={"email": "user@example.com", "password": "Valid123"},
    )
    assert register_response.status_code == 200
    assert "user_id" not in register_response.json()

    duplicate = client.post(
        "/api/v1/auth/register",
        json={"email": "user@example.com", "password": "Valid123"},
    )
    assert duplicate.status_code == 200
    assert "user_id" not in duplicate.json()

    verify_response = client.post(
        "/api/v1/auth/verify-email",
        json={"token": latest_token("user@example.com", "verify_email")},
    )
    assert verify_response.status_code == 200

    login_response = client.post(
        "/api/v1/auth/login",
        json={"email": "user@example.com", "password": "Valid123"},
    )
    assert login_response.status_code == 200
    assert "access_token" in login_response.json()


def test_forgot_password_anti_enumeration(client):
    response = client.post("/api/v1/auth/forgot-password", json={"email": "missing@example.com"})
    assert response.status_code == 200
    assert "If email is registered" in response.json()["message"]
