import uuid from fastapi import FastAPI from fastapi.testclient import TestClient from app.api import router def make_client() -> TestClient: app = FastAPI() app.include_router(router) return TestClient(app) def test_get_payment_requires_api_key() -> None: with make_client() as client: response = client.get(f"/api/v1/payments/{uuid.uuid4()}") assert response.status_code == 401 assert response.json() == {"detail": "Invalid or missing API key"} def test_create_payment_requires_idempotency_key() -> None: with make_client() as client: response = client.post( "/api/v1/payments", headers={"X-API-Key": "change-me"}, json={ "amount": "100.00", "currency": "RUB", "description": "Test payment", "metadata": {}, "webhook_url": "https://example.com/webhook", }, ) assert response.status_code == 422 assert response.json()["detail"][0]["loc"] == ["header", "Idempotency-Key"] def test_create_payment_rejects_unsupported_currency() -> None: with make_client() as client: response = client.post( "/api/v1/payments", headers={ "X-API-Key": "change-me", "Idempotency-Key": "test-key", }, json={ "amount": "100.00", "currency": "GBP", "description": "Test payment", "metadata": {}, "webhook_url": "https://example.com/webhook", }, ) assert response.status_code == 422