diff --git a/backend/btrixcloud/orgs.py b/backend/btrixcloud/orgs.py index 7f90ee68fa..5e98ce6100 100644 --- a/backend/btrixcloud/orgs.py +++ b/backend/btrixcloud/orgs.py @@ -500,8 +500,12 @@ async def remove_user_from_org( raise HTTPException( status_code=400, detail="Can't remove only owner from org" ) + try: + del org.users[str(other_user.id)] + except KeyError: + # pylint: disable=raise-missing-from + raise HTTPException(status_code=404, detail="no_such_org_user") - del org.users[str(other_user.id)] await ops.update(org) return {"removed": True} diff --git a/backend/test/test_org.py b/backend/test/test_org.py index af933b701d..b78e3c90d3 100644 --- a/backend/test/test_org.py +++ b/backend/test/test_org.py @@ -116,6 +116,18 @@ def test_remove_user_from_org(admin_auth_headers, default_org_id): assert data["removed"] +def test_remove_non_existent_user(admin_auth_headers, default_org_id): + # Remove user + r = requests.post( + f"{API_PREFIX}/orgs/{default_org_id}/remove", + json={"email": "toremove@example.com"}, + headers=admin_auth_headers, + ) + assert r.status_code == 404 + data = r.json() + assert data["detail"] == "no_such_org_user" + + def test_get_pending_org_invites( admin_auth_headers, default_org_id, non_default_org_id ):