From 28c482d8a9c474377d00487444ab4c82ae1847e0 Mon Sep 17 00:00:00 2001 From: luxferre Date: Wed, 24 Jun 2026 10:45:17 +0100 Subject: [PATCH] tests: user tests use standard model All happy-path tests for the user module have been replaced with the standard test model. --- test/test_user.py | 167 ++++++++++++++++++++++------------------------ 1 file changed, 81 insertions(+), 86 deletions(-) diff --git a/test/test_user.py b/test/test_user.py index 1d66f16..178b1fe 100644 --- a/test/test_user.py +++ b/test/test_user.py @@ -15,36 +15,6 @@ pytestmark = [ ] -@pytest.mark.anyio -async def test_get_self_db_success(default_client: AsyncClient): - resp = await default_client.get("/user/self/db") - data = resp.json() - - assert resp.status_code == 200 - assert data["first_name"] == "Admin" - assert data["last_name"] == "Test" - assert data["email"] == "admin@test.com" - assert "organisations" in data - assert isinstance(data["organisations"], list) - assert "groups" in data - assert isinstance(data["groups"], dict) - - -@pytest.mark.anyio -async def test_get_user_success(default_client: AsyncClient): - resp = await default_client.get("/user?user_id=1") - data = resp.json() - - assert resp.status_code == 200 - assert data["first_name"] == "Admin" - assert data["last_name"] == "Test" - assert data["email"] == "admin@test.com" - assert "organisations" in data - assert isinstance(data["organisations"], list) - assert "groups" in data - assert isinstance(data["groups"], dict) - - @pytest.mark.anyio @pytest.mark.parametrize("query, expected_status", generate_query_and_status(["user_id"])) async def test_get_user_status_checks( @@ -55,30 +25,6 @@ async def test_get_user_status_checks( assert resp.status_code == expected_status -@pytest.mark.anyio -async def test_delete_user_success(default_client: AsyncClient): - resp = await default_client.delete("/user?user_id=1") - - assert resp.status_code == 204 - - -@pytest.mark.anyio -async def test_post_user_invitation_success(default_client: AsyncClient): - body = {"user_email": "admin@test.com", "organisation_id": 1} - resp = await default_client.post("/user/invitation", json=body) - - assert resp.status_code == 200 - data = resp.json() - assert "organisation" in data - assert isinstance(data["organisation"], dict) - assert data["organisation"]["id"] == 1 - assert data["organisation"]["name"] == "Org One" - - assert "invited_email" in data - assert isinstance(data["invited_email"], str) - assert data["invited_email"] == "admin@test.com" - - @pytest.mark.parametrize( "body, expected_status", [ @@ -120,38 +66,6 @@ async def test_post_user_invitation_accept_status_checks( assert resp.json()["detail"] == "Invalid JWS" -@pytest.mark.anyio -async def test_get_self_orgs_success(default_client: AsyncClient): - resp = await default_client.get("/user/self/orgs") - assert resp.status_code == 200 - - data = resp.json() - - assert "organisations" in data - assert isinstance(data["organisations"], list) - assert len(data["organisations"]) > 0 - - org = data["organisations"][0] - assert org["organisation_id"] == 1 - assert org["name"] == "Org One" - assert org["status"] == "approved" - assert org["root_user_email"] == "admin@test.com" - assert "intake_questionnaire" in org - assert isinstance(org["intake_questionnaire"], dict) - - assert isinstance(org["billing_contact"], dict) - assert org["billing_contact"]["email"] == "billing@orgone.com" - assert org["billing_contact"]["id"] == 1 - - assert isinstance(org["owner_contact"], dict) - assert org["owner_contact"]["email"] == "owner@orgone.com" - assert org["owner_contact"]["id"] == 2 - - assert isinstance(org["security_contact"], dict) - assert org["security_contact"]["email"] == "security@orgone.com" - assert org["security_contact"]["id"] == 3 - - @pytest.mark.anyio async def test_get_self_orgs_standard( default_client: AsyncClient, route_data: dict[str, dict[str, Any]] @@ -186,3 +100,84 @@ async def test_get_self_orgs_standard( await standard_test( default_client, method, path, auth_level, query, body, expected_data, route_data ) + + +@pytest.mark.anyio +async def test_get_self_db_standard( + default_client: AsyncClient, route_data: dict[str, dict[str, Any]] +): + method = "GET" + path = "/user/self/db" + auth_level = "User" + query = "" + body = {} + expected_data = { + "id": 1, + "first_name": "Admin", + "last_name": "Test", + "email": "admin@test.com", + "organisations": [{"name": "Org One", "id": 1}], + "groups": {"Org One": [{"name": "Org One Group", "id": 1}]}, + } + + await standard_test( + default_client, method, path, auth_level, query, body, expected_data, route_data + ) + + +@pytest.mark.anyio +async def test_get_user_standard( + default_client: AsyncClient, route_data: dict[str, dict[str, Any]] +): + method = "GET" + path = "/user" + auth_level = "Super Admin" + query = "?user_id=1" + body = {} + expected_data = { + "id": 1, + "first_name": "Admin", + "last_name": "Test", + "email": "admin@test.com", + "organisations": [{"name": "Org One", "id": 1}], + "groups": {"Org One": [{"name": "Org One Group", "id": 1}]}, + } + + await standard_test( + default_client, method, path, auth_level, query, body, expected_data, route_data + ) + + +@pytest.mark.anyio +async def test_delete_user_standard( + default_client: AsyncClient, route_data: dict[str, dict[str, Any]] +): + method = "DELETE" + path = "/user" + auth_level = "Super Admin" + query = "?user_id=1" + body = {} + expected_data = {} + + await standard_test( + default_client, method, path, auth_level, query, body, expected_data, route_data + ) + + +@pytest.mark.anyio +async def test_post_user_invitation_standard( + default_client: AsyncClient, route_data: dict[str, dict[str, Any]] +): + method = "POST" + path = "/user/invitation" + auth_level = "Root User" + query = "" + body = {"user_email": "admin@test.com", "organisation_id": 1} + expected_data = { + "invited_email": "admin@test.com", + "organisation": {"name": "Org One", "id": 1}, + } + + await standard_test( + default_client, method, path, auth_level, query, body, expected_data, route_data + )