Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import uuid
|
||||
from collections.abc import AsyncIterator
|
||||
|
||||
import httpx2
|
||||
import pytest
|
||||
from fastapi import FastAPI
|
||||
|
||||
from app.api import router
|
||||
from app.auth import get_settings
|
||||
from app.config import Settings
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
async def client() -> AsyncIterator[httpx2.AsyncClient]:
|
||||
app = FastAPI()
|
||||
app.include_router(router)
|
||||
app.dependency_overrides[get_settings] = lambda: Settings(api_key="change-me")
|
||||
transport = httpx2.ASGITransport(app=app)
|
||||
async with httpx2.AsyncClient(
|
||||
transport=transport,
|
||||
base_url="http://testserver",
|
||||
) as test_client:
|
||||
yield test_client
|
||||
|
||||
|
||||
async def test_get_payment_requires_api_key(client: httpx2.AsyncClient) -> None:
|
||||
response = await client.get(f"/api/v1/payments/{uuid.uuid4()}")
|
||||
|
||||
assert response.status_code == 401
|
||||
assert response.json() == {"detail": "Invalid or missing API key"}
|
||||
|
||||
|
||||
async def test_get_payment_rejects_wrong_api_key(client: httpx2.AsyncClient) -> None:
|
||||
response = await client.get(
|
||||
f"/api/v1/payments/{uuid.uuid4()}",
|
||||
headers={"X-API-Key": "wrong-key"},
|
||||
)
|
||||
|
||||
assert response.status_code == 401
|
||||
|
||||
|
||||
async def test_create_payment_requires_idempotency_key(client: httpx2.AsyncClient) -> None:
|
||||
response = await 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"]
|
||||
|
||||
|
||||
async def test_create_payment_rejects_unsupported_currency(
|
||||
client: httpx2.AsyncClient,
|
||||
) -> None:
|
||||
response = await 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
|
||||
Reference in New Issue
Block a user