From fd997eba83830e9b672482315e326aa4422d99e7 Mon Sep 17 00:00:00 2001 From: Ephraim Anierobi Date: Wed, 7 Jun 2023 15:17:46 +0100 Subject: [PATCH 1/2] Fix typing for POST user endpoint This should raise exception not return it. --- airflow/api_connexion/endpoints/user_endpoint.py | 2 +- .../api_connexion/endpoints/test_user_endpoint.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/airflow/api_connexion/endpoints/user_endpoint.py b/airflow/api_connexion/endpoints/user_endpoint.py index 506e11e00612c..a9482701a48fa 100644 --- a/airflow/api_connexion/endpoints/user_endpoint.py +++ b/airflow/api_connexion/endpoints/user_endpoint.py @@ -119,7 +119,7 @@ def post_user() -> APIResponse: user = security_manager.add_user(role=roles_to_add, **data) if not user: detail = f"Failed to add user `{username}`." - return Unknown(detail=detail) + raise Unknown(detail=detail) return user_schema.dump(user) diff --git a/tests/api_connexion/endpoints/test_user_endpoint.py b/tests/api_connexion/endpoints/test_user_endpoint.py index c56c989b34146..2113e4248ae0c 100644 --- a/tests/api_connexion/endpoints/test_user_endpoint.py +++ b/tests/api_connexion/endpoints/test_user_endpoint.py @@ -525,6 +525,21 @@ def test_invalid_payload(self, autoclean_user_payload, payload_converter, error_ "type": EXCEPTIONS_LINK_MAP[400], } + def test_internal_server_error(self, autoclean_user_payload): + sm = self.app.appbuilder.sm + sm.add_user = unittest.mock.MagicMock(return_value=None) + response = self.client.post( + "/api/v1/users", + json=autoclean_user_payload, + environ_overrides={"REMOTE_USER": "test"}, + ) + assert response.json == { + "detail": "Failed to add user `example_user`.", + "status": 500, + "title": "Internal Server Error", + "type": EXCEPTIONS_LINK_MAP[500], + } + class TestPatchUser(TestUserEndpoint): @pytest.mark.usefixtures("autoclean_admin_user") From 2a7a045ed148f6cea5d0bae37962f0e28a854a35 Mon Sep 17 00:00:00 2001 From: Ephraim Anierobi Date: Wed, 7 Jun 2023 16:33:17 +0100 Subject: [PATCH 2/2] fixup! Fix typing for POST user endpoint --- .../endpoints/test_user_endpoint.py | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tests/api_connexion/endpoints/test_user_endpoint.py b/tests/api_connexion/endpoints/test_user_endpoint.py index 2113e4248ae0c..a84b7f1087afc 100644 --- a/tests/api_connexion/endpoints/test_user_endpoint.py +++ b/tests/api_connexion/endpoints/test_user_endpoint.py @@ -526,19 +526,18 @@ def test_invalid_payload(self, autoclean_user_payload, payload_converter, error_ } def test_internal_server_error(self, autoclean_user_payload): - sm = self.app.appbuilder.sm - sm.add_user = unittest.mock.MagicMock(return_value=None) - response = self.client.post( - "/api/v1/users", - json=autoclean_user_payload, - environ_overrides={"REMOTE_USER": "test"}, - ) - assert response.json == { - "detail": "Failed to add user `example_user`.", - "status": 500, - "title": "Internal Server Error", - "type": EXCEPTIONS_LINK_MAP[500], - } + with unittest.mock.patch.object(self.app.appbuilder.sm, "add_user", return_value=None): + response = self.client.post( + "/api/v1/users", + json=autoclean_user_payload, + environ_overrides={"REMOTE_USER": "test"}, + ) + assert response.json == { + "detail": "Failed to add user `example_user`.", + "status": 500, + "title": "Internal Server Error", + "type": EXCEPTIONS_LINK_MAP[500], + } class TestPatchUser(TestUserEndpoint):