Some checks failed
ci / lint_and_test (push) Failing after 8s
New assertions added for new data being delivered (eg IDs on endpoints not previously serving IDs)
105 lines
2.7 KiB
Python
105 lines
2.7 KiB
Python
"""
|
|
409 on [POST]/service/ not tested because SQLite throws a different error than Postgres
|
|
"""
|
|
|
|
import pytest
|
|
from httpx import AsyncClient
|
|
|
|
from .conftest import generate_query_and_status
|
|
|
|
|
|
pytestmark = [
|
|
pytest.mark.service_module,
|
|
]
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_get_services_success(default_client: AsyncClient):
|
|
resp = await default_client.get("/service/?org_id=1")
|
|
data = resp.json()
|
|
|
|
assert resp.status_code == 200
|
|
assert "services" in data
|
|
assert isinstance(data["services"], list)
|
|
assert data["services"][0]["id"] == 1
|
|
assert data["services"][0]["name"] == "Test Service"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"query, expected_status", generate_query_and_status(["org_id"])
|
|
)
|
|
@pytest.mark.anyio
|
|
async def test_get_services_status_checks(
|
|
default_client: AsyncClient, query: str, expected_status: int
|
|
):
|
|
resp = await default_client.get(f"/service/?{query}")
|
|
|
|
assert resp.status_code == expected_status
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_post_service_success(default_client: AsyncClient):
|
|
resp = await default_client.post("/service/", json={"name": "New Test Service"})
|
|
data = resp.json()
|
|
|
|
assert resp.status_code == 200
|
|
assert "service" in data
|
|
assert isinstance(data["service"], dict)
|
|
assert data["service"]["name"] == "New Test Service"
|
|
assert data["service"]["id"] == 2
|
|
assert isinstance(data["service"]["api_key"], str)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"body, expected_status",
|
|
[
|
|
({"name": "Test Service"}, 409),
|
|
({"name": 42}, 422),
|
|
({}, 422),
|
|
],
|
|
)
|
|
@pytest.mark.anyio
|
|
async def test_post_service_status_checks(
|
|
default_client: AsyncClient, body: dict[str, str], expected_status: int
|
|
):
|
|
resp = await default_client.post("/service/", json=body)
|
|
|
|
assert resp.status_code == expected_status
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_patch_service_success(default_client: AsyncClient):
|
|
resp = await default_client.patch("/service/key", json={"service_id": 1})
|
|
data = resp.json()
|
|
|
|
assert resp.status_code == 200
|
|
assert "service" in data
|
|
assert isinstance(data["service"], dict)
|
|
assert data["service"]["name"] == "Test Service"
|
|
assert data["service"]["id"] == 1
|
|
assert isinstance(data["service"]["api_key"], str)
|
|
|
|
|
|
@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_status_checks(
|
|
default_client: AsyncClient, body: dict[str, str], expected_status: int
|
|
):
|
|
resp = await default_client.patch("/service/key", json=body)
|
|
|
|
assert resp.status_code == expected_status
|
|
|
|
|
|
@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
|