diff --git a/test/test_iam.py b/test/test_iam.py index af252b4..591e789 100644 --- a/test/test_iam.py +++ b/test/test_iam.py @@ -137,14 +137,18 @@ async def test_act_on_resource_logic( @pytest.mark.anyio async def test_get_group_permissions_success(default_client: AsyncClient): resp = await default_client.get("/iam/group/permissions?org_id=1&group_id=1") + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "permissions" in data assert isinstance(data["permissions"], list) - assert data["permissions"][0]["service_name"] == "Test Service" - assert data["permissions"][0]["resource"] == "test_resource" - assert data["permissions"][0]["action"] == "read" + + permission = data["permissions"][0] + assert permission["id"] == 1 + assert permission["service_name"] == "Test Service" + assert permission["resource"] == "test_resource" + assert permission["action"] == "read" @pytest.mark.parametrize( @@ -191,15 +195,18 @@ async def test_get_group_permissions_mismatch( @pytest.mark.anyio async def test_get_group_users_success(default_client: AsyncClient): resp = await default_client.get("/iam/group/users?org_id=1&group_id=1") + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "users" in data assert isinstance(data["users"], list) - assert data["users"][0]["id"] == 1 - assert data["users"][0]["first_name"] == "Admin" - assert data["users"][0]["last_name"] == "Test" - assert data["users"][0]["email"] == "admin@test.com" + + user = data["users"][0] + assert user["id"] == 1 + assert user["first_name"] == "Admin" + assert user["last_name"] == "Test" + assert user["email"] == "admin@test.com" @pytest.mark.parametrize( @@ -248,9 +255,10 @@ async def test_post_group_success(default_client: AsyncClient): resp = await default_client.post( "/iam/group", json={"name": "New Group", "organisation_id": 1} ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "group" in data assert isinstance(data["group"], dict) assert data["group"]["name"] == "New Group" @@ -303,9 +311,10 @@ async def test_put_group_perm_success(default_client: AsyncClient, db_session): "/iam/group/permission", json={"permission_id": 1, "group_id": 2, "organisation_id": 1}, ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "group" in data assert isinstance(data["group"], dict) assert data["group"]["name"] == "Test Group Two" @@ -313,9 +322,12 @@ async def test_put_group_perm_success(default_client: AsyncClient, db_session): assert "permissions" in data assert isinstance(data["permissions"], list) - assert data["permissions"][0]["service_name"] == "Test Service" - assert data["permissions"][0]["resource"] == "test_resource" - assert data["permissions"][0]["action"] == "read" + + permission = data["permissions"][0] + assert permission["id"] == 1 + assert permission["service_name"] == "Test Service" + assert permission["resource"] == "test_resource" + assert permission["action"] == "read" @pytest.mark.parametrize( @@ -435,9 +447,10 @@ async def test_put_group_user_success(default_client: AsyncClient, db_session): resp = await default_client.put( "/iam/group/user", json={"user_id": 2, "group_id": 1, "organisation_id": 1} ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "group" in data assert isinstance(data["group"], dict) assert data["group"]["name"] == "Test Group" @@ -445,10 +458,12 @@ async def test_put_group_user_success(default_client: AsyncClient, db_session): assert "users" in data assert isinstance(data["users"], list) - assert data["users"][1]["id"] == 2 - assert data["users"][1]["first_name"] == "User" - assert data["users"][1]["last_name"] == "Test" - assert data["users"][1]["email"] == "user@test.org" + + user = data["users"][1] + assert user["id"] == 2 + assert user["first_name"] == "User" + assert user["last_name"] == "Test" + assert user["email"] == "user@test.org" @pytest.mark.parametrize( @@ -519,9 +534,12 @@ async def test_get_permissions_success(default_client: AsyncClient): assert resp.status_code == 200 assert "permissions" in data assert isinstance(data["permissions"], list) - assert data["permissions"][0]["service_name"] == "Test Service" - assert data["permissions"][0]["resource"] == "test_resource" - assert data["permissions"][0]["action"] == "read" + + permission = data["permissions"][0] + assert permission["id"] == 1 + assert permission["service_name"] == "Test Service" + assert permission["resource"] == "test_resource" + assert permission["action"] == "read" @pytest.mark.parametrize( @@ -542,10 +560,14 @@ async def test_post_perm_success(default_client: AsyncClient, db_session): "/iam/permission", json={"service_id": 1, "resource": "test_resource", "action": "create"}, ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "permission" in data + assert isinstance(data["permission"], dict) + + assert data["permission"]["id"] == 2 assert data["permission"]["service_name"] == "Test Service" assert data["permission"]["resource"] == "test_resource" assert data["permission"]["action"] == "create" @@ -629,9 +651,12 @@ async def test_post_perm_search_success(default_client: AsyncClient, db_session, assert resp.status_code == 200 assert "permissions" in data assert isinstance(data["permissions"], list) - assert data["permissions"][0]["service_name"] == "Test Service" - assert data["permissions"][0]["resource"] == "test_resource" - assert data["permissions"][0]["action"] == "read" + + permission = data["permissions"][0] + assert permission["id"] == 1 + assert permission["service_name"] == "Test Service" + assert permission["resource"] == "test_resource" + assert permission["action"] == "read" @pytest.mark.parametrize( diff --git a/test/test_organisation.py b/test/test_organisation.py index 8155f5c..f852100 100644 --- a/test/test_organisation.py +++ b/test/test_organisation.py @@ -21,12 +21,15 @@ async def test_get_org_success(default_client: AsyncClient): data = resp.json() assert resp.status_code == 200 + assert data["id"] == 1 assert data["name"] == "Test Org" + assert data["status"] == "approved" assert data["root_user"] == "admin@test.com" assert data["billing_contact"] == "billing@test.org" assert data["owner_contact"] == "owner@test.org" assert data["security_contact"] == "security@test.org" - assert data["status"] == "approved" + assert "intake_questionnaire" in data + assert isinstance(data["intake_questionnaire"], dict) @pytest.mark.parametrize( @@ -91,10 +94,11 @@ async def test_patch_org_questionnaire_partial_success( data = resp.json() assert resp.status_code == 200 - assert "intake_questionnaire" in data assert data["name"] == "Test Org" - assert data["intake_questionnaire"]["question_one"] == "new answer one" assert data["status"] == "partial" + assert "intake_questionnaire" in data + assert isinstance(data["intake_questionnaire"], dict) + assert data["intake_questionnaire"]["question_one"] == "new answer one" assert data["intake_questionnaire"]["question_two"] == "answer two" assert data["intake_questionnaire"]["question_three"] is None @@ -159,10 +163,11 @@ async def test_patch_org_questionnaire_submit_success( data = resp.json() assert resp.status_code == 200 - assert "intake_questionnaire" in data assert data["name"] == "Test Org" - assert data["intake_questionnaire"]["question_one"] == "new answer one" assert data["status"] == "submitted" + assert "intake_questionnaire" in data + assert isinstance(data["intake_questionnaire"], dict) + assert data["intake_questionnaire"]["question_one"] == "new answer one" assert data["intake_questionnaire"]["question_two"] == "answer two" assert data["intake_questionnaire"]["question_three"] is None @@ -250,9 +255,11 @@ async def test_post_org_user_success(default_client: AsyncClient, db_session): resp = await default_client.post( "/org/user", json={"organisation_id": 1, "user_id": 2} ) - data = resp.json() assert resp.status_code == 200 + + data = resp.json() + assert "users" in data assert isinstance(data["users"], list) assert "user@test.org" in data["users"] @@ -305,9 +312,10 @@ async def test_patch_org_root_user_success(default_client: AsyncClient, db_sessi resp = await default_client.patch( "/org/root_user", json={"organisation_id": 1, "user_id": 2} ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert data["name"] == "Test Org" assert data["root_user_email"] == "user@test.org" @@ -369,9 +377,10 @@ async def test_patch_org_root_user_non_member(default_client: AsyncClient, db_se @pytest.mark.anyio async def test_get_org_groups_success(default_client: AsyncClient): resp = await default_client.get("/org/groups?org_id=1") + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 assert "groups" in data assert isinstance(data["groups"], list) assert "Test Group" in data["groups"] @@ -399,6 +408,10 @@ async def test_get_org_contact_success(default_client: AsyncClient, contact_type assert resp.status_code == 200 + assert "organisation" in data + assert data["organisation"]["id"] == 1 + assert data["organisation"]["name"] == "Test Org" + attributes = [ "email", "first_name", @@ -469,9 +482,39 @@ async def test_patch_org_contact_success( "/org/contact", json={"organisation_id": 1, "contact_type": "billing", key: value}, ) + assert resp.status_code == 200 + data = resp.json() - assert resp.status_code == 200 + assert "organisation" in data + assert data["organisation"]["id"] == 1 + assert data["organisation"]["name"] == "Test Org" + + attributes = [ + "email", + "first_name", + "last_name", + "phonenumber", + "vat_number", + "address", + ] + + for attribute in attributes: + assert attribute in data["contact"] + + address_attributes = [ + "post_office_box_number", + "street_address", + "street_address_line_2", + "locality", + "address_region", + "country_code", + "postal_code", + ] + + for attribute in address_attributes: + assert attribute in data["contact"]["address"] + if key in data["contact"]: assert data["contact"][key] == value elif key in data["contact"]["address"]: diff --git a/test/test_service.py b/test/test_service.py index a65a939..1e19a40 100644 --- a/test/test_service.py +++ b/test/test_service.py @@ -20,6 +20,7 @@ async def test_get_services_success(default_client: AsyncClient): 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" @@ -43,6 +44,7 @@ async def test_post_service_success(default_client: AsyncClient): 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) @@ -72,6 +74,7 @@ async def test_patch_service_success(default_client: AsyncClient): 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) diff --git a/test/test_user.py b/test/test_user.py index 9a093ba..31fd2bb 100644 --- a/test/test_user.py +++ b/test/test_user.py @@ -24,7 +24,9 @@ async def test_get_self_db_success(default_client: AsyncClient): 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 @@ -37,7 +39,9 @@ async def test_get_user_success(default_client: AsyncClient): 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