From 1c641ae7ec0511639caea7dd3ca758bc743f1ba1 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sun, 5 Feb 2023 19:45:16 -0800 Subject: [PATCH 1/6] backend: /orgs//remove: return 404 if org user doesn't exist, fixes issue in #535 add tests --- backend/btrixcloud/orgs.py | 5 ++++- backend/test/test_org.py | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/btrixcloud/orgs.py b/backend/btrixcloud/orgs.py index 7f90ee68fa..3e905cb597 100644 --- a/backend/btrixcloud/orgs.py +++ b/backend/btrixcloud/orgs.py @@ -500,8 +500,11 @@ 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: + raise HTTPException(status_code=404, "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..e2663a169e 100644 --- a/backend/test/test_org.py +++ b/backend/test/test_org.py @@ -115,6 +115,16 @@ def test_remove_user_from_org(admin_auth_headers, default_org_id): data = r.json() assert data["removed"] +def test_remove_non_existant_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["error"] == "no_such_org_user" def test_get_pending_org_invites( admin_auth_headers, default_org_id, non_default_org_id From 3d508c5e01185f13d82a791513835ba6724110c7 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Mon, 6 Feb 2023 14:47:12 -0800 Subject: [PATCH 2/6] Update backend/btrixcloud/orgs.py Co-authored-by: Tessa Walsh --- backend/btrixcloud/orgs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/btrixcloud/orgs.py b/backend/btrixcloud/orgs.py index 3e905cb597..1ae8db4a9d 100644 --- a/backend/btrixcloud/orgs.py +++ b/backend/btrixcloud/orgs.py @@ -503,7 +503,7 @@ async def remove_user_from_org( try: del org.users[str(other_user.id)] except KeyError: - raise HTTPException(status_code=404, "no_such_org_user") + raise HTTPException(status_code=404, detail="no_such_org_user") await ops.update(org) return {"removed": True} From ec9c2beec36ba5e856454062d02902c44e64968e Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Mon, 6 Feb 2023 14:47:22 -0800 Subject: [PATCH 3/6] Update backend/test/test_org.py Co-authored-by: Tessa Walsh --- backend/test/test_org.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/test/test_org.py b/backend/test/test_org.py index e2663a169e..c61a5c7cf9 100644 --- a/backend/test/test_org.py +++ b/backend/test/test_org.py @@ -115,7 +115,7 @@ def test_remove_user_from_org(admin_auth_headers, default_org_id): data = r.json() assert data["removed"] -def test_remove_non_existant_user(admin_auth_headers, default_org_id): +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", From 0d23ca0d69992a1cb40ad524974f794efedd6302 Mon Sep 17 00:00:00 2001 From: Tessa Walsh Date: Wed, 8 Feb 2023 16:12:48 -0500 Subject: [PATCH 4/6] Fix test --- backend/test/test_org.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/test/test_org.py b/backend/test/test_org.py index c61a5c7cf9..b78e3c90d3 100644 --- a/backend/test/test_org.py +++ b/backend/test/test_org.py @@ -115,6 +115,7 @@ def test_remove_user_from_org(admin_auth_headers, default_org_id): data = r.json() assert data["removed"] + def test_remove_non_existent_user(admin_auth_headers, default_org_id): # Remove user r = requests.post( @@ -124,7 +125,8 @@ def test_remove_non_existent_user(admin_auth_headers, default_org_id): ) assert r.status_code == 404 data = r.json() - assert data["error"] == "no_such_org_user" + assert data["detail"] == "no_such_org_user" + def test_get_pending_org_invites( admin_auth_headers, default_org_id, non_default_org_id From d3e722ee63f45c5185aa0db6b9cb79e3cb8b9f74 Mon Sep 17 00:00:00 2001 From: Tessa Walsh Date: Wed, 8 Feb 2023 16:12:56 -0500 Subject: [PATCH 5/6] Fix linting --- backend/btrixcloud/orgs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/btrixcloud/orgs.py b/backend/btrixcloud/orgs.py index 1ae8db4a9d..07bafc4a90 100644 --- a/backend/btrixcloud/orgs.py +++ b/backend/btrixcloud/orgs.py @@ -502,6 +502,7 @@ async def remove_user_from_org( ) try: del org.users[str(other_user.id)] + # pylint: disable=raise-missing-from except KeyError: raise HTTPException(status_code=404, detail="no_such_org_user") From c4cce81d5cd3e759a6d09745a5e003191510d68e Mon Sep 17 00:00:00 2001 From: Tessa Walsh Date: Wed, 8 Feb 2023 16:15:53 -0500 Subject: [PATCH 6/6] Move pylint disable comment down a line --- backend/btrixcloud/orgs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/btrixcloud/orgs.py b/backend/btrixcloud/orgs.py index 07bafc4a90..5e98ce6100 100644 --- a/backend/btrixcloud/orgs.py +++ b/backend/btrixcloud/orgs.py @@ -502,8 +502,8 @@ async def remove_user_from_org( ) try: del org.users[str(other_user.id)] - # pylint: disable=raise-missing-from except KeyError: + # pylint: disable=raise-missing-from raise HTTPException(status_code=404, detail="no_such_org_user") await ops.update(org)