test(accounts): cover admin add-account endpoint
10 integration tests for POST /api/v1/admin/accounts: unconstrained Open write + escaped description metadata, explicit-currency path, duplicate->409, invalid-prefix->400, invalid-characters->400 (parametrized), super-user-only ->403. Adds the add_chart_account helper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
87a45ee4d5
commit
89f0f8ac3a
2 changed files with 165 additions and 1 deletions
|
|
@ -13,7 +13,7 @@ separate ISO code field — this matches `models.ExpenseEntry` / `ReceivableEntr
|
|||
from decimal import Decimal
|
||||
from typing import Any, Optional, Union
|
||||
|
||||
from httpx import AsyncClient
|
||||
from httpx import AsyncClient, Response
|
||||
|
||||
Amount = Union[Decimal, int, float, str]
|
||||
|
||||
|
|
@ -106,6 +106,26 @@ async def grant_permission(
|
|||
return r.json()
|
||||
|
||||
|
||||
async def add_chart_account(
|
||||
client: AsyncClient,
|
||||
*,
|
||||
super_user_headers: dict,
|
||||
name: str,
|
||||
description: Optional[str] = None,
|
||||
) -> Response:
|
||||
"""Super user adds a chart-of-accounts entry via the admin endpoint
|
||||
(POST /api/v1/admin/accounts). Returns the raw Response so callers can
|
||||
assert on status codes (201 / 400 / 409 / 403)."""
|
||||
body: dict[str, Any] = {"name": name}
|
||||
if description is not None:
|
||||
body["description"] = description
|
||||
return await client.post(
|
||||
"/libra/api/v1/admin/accounts",
|
||||
headers=super_user_headers,
|
||||
json=body,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Entries — user side
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue