From b8b6e6c7eeb4bbf7844dedbbf1a34c82890c5419 Mon Sep 17 00:00:00 2001 From: luxferre Date: Fri, 29 May 2026 16:55:21 +0100 Subject: [PATCH] test: services router --- test/test_service.py | 90 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 test/test_service.py diff --git a/test/test_service.py b/test/test_service.py new file mode 100644 index 0000000..4b5c7d2 --- /dev/null +++ b/test/test_service.py @@ -0,0 +1,90 @@ +""" +409 on [POST]/service/ not tested because SQLite throws a different error than Postgres +""" +import pytest +from httpx import AsyncClient + +from .conftest import client + + +@pytest.mark.anyio +async def test_get_services_success(client: AsyncClient): + resp = await client.get("/service/?org_id=1") + data = resp.json() + + assert resp.status_code == 200 + assert "services" in data + assert data["services"][0]["id"] == 1 + assert data["services"][0]["name"] == "Test Service" + + +@pytest.mark.anyio +@pytest.mark.parametrize( + "query, expected_status", + [ + ("org_id=2", 404), + ("org_id=banana", 422), + ("", 422), + ], +) +@pytest.mark.anyio +async def test_get_services_failure(client: AsyncClient, query: str, expected_status: int): + resp = await client.get(f"/service/?{query}") + + assert resp.status_code == expected_status + + +@pytest.mark.anyio +async def test_post_service_success(client: AsyncClient): + resp = await client.post("/service/", json={"name": "New Test Service"}) + data = resp.json() + + assert resp.status_code == 200 + assert "service" in data + assert data["service"]["name"] == "New Test Service" + assert data["service"]["id"] == 2 + assert type(data["service"]["api_key"]) == str + + +@pytest.mark.anyio +@pytest.mark.parametrize( + "body, expected_status", + [ + ({"name": 42}, 422), + ({}, 422), + ], +) +@pytest.mark.anyio +async def test_post_services_failure(client: AsyncClient, body: dict[str, str], expected_status: int): + resp = await client.post("/service/", json=body) + + assert resp.status_code == expected_status + + +@pytest.mark.anyio +async def test_patch_service_success(client: AsyncClient): + resp = await client.patch("/service/key", json={"service_id": 1}) + data = resp.json() + + assert resp.status_code == 200 + assert "service" in data + assert data["service"]["name"] == "Test Service" + assert data["service"]["id"] == 1 + assert type(data["service"]["api_key"]) == str + + +@pytest.mark.anyio +@pytest.mark.parametrize( + "body, expected_status", + [ + ({"service_id": 42}, 404), + ({"service_id": "Test Service"}, 422), + ({"service_id": ""}, 422), + ({}, 422), + ], +) +@pytest.mark.anyio +async def test_patch_services_failure(client: AsyncClient, body: dict[str, str], expected_status: int): + resp = await client.patch("/service/key", json=body) + + assert resp.status_code == expected_status