2026-05-29 16:55:21 +01:00
|
|
|
"""
|
|
|
|
|
409 on [POST]/service/ not tested because SQLite throws a different error than Postgres
|
|
|
|
|
"""
|
2026-06-08 15:31:37 +01:00
|
|
|
|
2026-05-29 16:55:21 +01:00
|
|
|
import pytest
|
|
|
|
|
from httpx import AsyncClient
|
|
|
|
|
|
2026-06-08 10:45:38 +01:00
|
|
|
from .conftest import generate_query_and_status
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
2026-06-09 13:58:08 +01:00
|
|
|
pytestmark = [
|
|
|
|
|
pytest.mark.service_module,
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
2026-05-29 16:55:21 +01:00
|
|
|
@pytest.mark.anyio
|
2026-06-03 13:54:30 +01:00
|
|
|
async def test_get_services_success(default_client: AsyncClient):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.get("/service/?org_id=1")
|
|
|
|
|
data = resp.json()
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == 200
|
|
|
|
|
assert "services" in data
|
|
|
|
|
assert data["services"][0]["id"] == 1
|
|
|
|
|
assert data["services"][0]["name"] == "Test Service"
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
2026-06-08 15:31:37 +01:00
|
|
|
"query, expected_status", generate_query_and_status(["org_id"])
|
2026-05-29 16:55:21 +01:00
|
|
|
)
|
|
|
|
|
@pytest.mark.anyio
|
2026-06-08 15:31:37 +01:00
|
|
|
async def test_get_services_status_checks(
|
|
|
|
|
default_client: AsyncClient, query: str, expected_status: int
|
|
|
|
|
):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.get(f"/service/?{query}")
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == expected_status
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.anyio
|
2026-06-03 13:54:30 +01:00
|
|
|
async def test_post_service_success(default_client: AsyncClient):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.post("/service/", json={"name": "New Test Service"})
|
|
|
|
|
data = resp.json()
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == 200
|
|
|
|
|
assert "service" in data
|
|
|
|
|
assert data["service"]["name"] == "New Test Service"
|
|
|
|
|
assert data["service"]["id"] == 2
|
2026-06-08 10:45:38 +01:00
|
|
|
assert isinstance(data["service"]["api_key"], str)
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
2026-06-03 14:28:40 +01:00
|
|
|
"body, expected_status",
|
|
|
|
|
[
|
2026-06-08 16:05:20 +01:00
|
|
|
({"name": "Test Service"}, 409),
|
2026-06-03 14:28:40 +01:00
|
|
|
({"name": 42}, 422),
|
|
|
|
|
({}, 422),
|
|
|
|
|
],
|
2026-05-29 16:55:21 +01:00
|
|
|
)
|
|
|
|
|
@pytest.mark.anyio
|
2026-06-08 16:05:20 +01:00
|
|
|
async def test_post_service_status_checks(
|
2026-06-08 15:31:37 +01:00
|
|
|
default_client: AsyncClient, body: dict[str, str], expected_status: int
|
|
|
|
|
):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.post("/service/", json=body)
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == expected_status
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.anyio
|
2026-06-03 13:54:30 +01:00
|
|
|
async def test_patch_service_success(default_client: AsyncClient):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.patch("/service/key", json={"service_id": 1})
|
|
|
|
|
data = resp.json()
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == 200
|
|
|
|
|
assert "service" in data
|
|
|
|
|
assert data["service"]["name"] == "Test Service"
|
|
|
|
|
assert data["service"]["id"] == 1
|
2026-06-08 10:45:38 +01:00
|
|
|
assert isinstance(data["service"]["api_key"], str)
|
2026-05-29 16:55:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
2026-06-03 14:28:40 +01:00
|
|
|
"body, expected_status",
|
|
|
|
|
[
|
|
|
|
|
({"service_id": 42}, 404),
|
|
|
|
|
({"service_id": "Test Service"}, 422),
|
|
|
|
|
({"service_id": ""}, 422),
|
|
|
|
|
({}, 422),
|
|
|
|
|
],
|
2026-05-29 16:55:21 +01:00
|
|
|
)
|
|
|
|
|
@pytest.mark.anyio
|
2026-06-08 15:31:37 +01:00
|
|
|
async def test_patch_services_status_checks(
|
|
|
|
|
default_client: AsyncClient, body: dict[str, str], expected_status: int
|
|
|
|
|
):
|
2026-06-03 14:28:40 +01:00
|
|
|
resp = await default_client.patch("/service/key", json=body)
|
2026-05-29 16:55:21 +01:00
|
|
|
|
2026-06-03 14:28:40 +01:00
|
|
|
assert resp.status_code == expected_status
|
2026-06-09 09:09:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.anyio
|
|
|
|
|
async def test_delete_service_success(default_client: AsyncClient):
|
|
|
|
|
resp = await default_client.delete("/service/?service_id=1")
|
|
|
|
|
|
|
|
|
|
assert resp.status_code == 204
|